{"version":3,"file":"vendor.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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,6CAA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AAf,CAAtB;IAFa,CAAD,CA5F8R;IA+FhTC,mBAAmB,EAAE,CAAC;MACtBn5L,IAAI,EAAEw4J,uDADgB;MAEtBr4J,IAAI,EAAE,CAAC+gL,4BAAD,EAA+B;QAAEhR,MAAM,EAAE;MAAV,CAA/B;IAFgB,CAAD,CA/F2R;IAkGhT4mB,eAAe,EAAE,CAAC;MAClB92L,IAAI,EAAEy4J,oDADY;MAElBt4J,IAAI,EAAE,CAACyrL,qBAAD,EAAwB;QAAE1b,MAAM,EAAE;MAAV,CAAxB;IAFY,CAAD,CAlG+R;IAqGhT6mB,iBAAiB,EAAE,CAAC;MACpB/2L,IAAI,EAAEy4J,oDADc;MAEpBt4J,IAAI,EAAE,CAAC4oL,mCAAD,EAAsC;QAAE7Y,MAAM,EAAE;MAAV,CAAtC;IAFc,CAAD,CArG6R;IAwGhT+kB,cAAc,EAAE,CAAC;MACjBj1L,IAAI,EAAEy4J,oDADW;MAEjBt4J,IAAI,EAAE,CAAC,SAAD,EAAY;QAAE+vK,MAAM,EAAE;MAAV,CAAZ;IAFW,CAAD;EAxGgS,CA5BhU;AAAA;AAyIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMkpB,qBAAN,SAAoC/W,iBAApC,CAAsD;EAClD3kL,WAAW,CA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AoB,KAAI1hM,qEAAI,EAAG,EAA/B;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKyhI,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;;IACQ,KAAKkgE,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;;IACQ,KAAKnyL,KAAL,GAAa,EAAb;IACA;AACR;AACA;AACA;;IACQ,KAAK+2H,QAAL,GAAgB,CAAhB;IACA;AACR;AACA;;IACQ,KAAK1G,IAAL,GAAY,YAAZ;IACA;AACR;AACA;;IACQ,KAAK+hE,YAAL,GAAoB,KAApB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKp8C,MAAL,GAAco3C,gBAAd;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKiF,WAAL,GAAmB,IAAnB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKC,KAAL,GAAa,EAAb;IACA;AACR;AACA;;IACQ,KAAK3a,eAAL,GAAuB,IAAvB;IACA;AACR;AACA;AACA;;IACQ,KAAK4a,WAAL,GAAmB,KAAnB;IACA;AACR;AACA;;IACQ,KAAKC,wBAAL,GAAgC,KAAhC;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK7E,eAAL,GAAuBV,oBAAvB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKwF,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;;IACQ,KAAKC,WAAL,GAAmB,KAAnB;IACA;AACR;AACA;;IACQ,KAAKC,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAK1a,WAAL,GAAmB,IAAIttD,uDAAJ,EAAnB;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKioE,WAAL,GAAmB,IAAIjoE,uDAAJ,EAAnB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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R;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK+7K,UAAL,GAAkBlN,gBAAgB,CAACA,gBAAgB,CAACoJ,KAAlB,CAAlC;IACA;AACR;AACA;AACA;;IACQ,KAAKqP,UAAL,GAAkBzY,gBAAgB,CAACA,gBAAgB,CAACoJ,KAAlB,CAAlC;IACA;AACR;AACA;AACA;;IACQ,KAAKsP,OAAL,GAAe1Y,gBAAgB,CAACA,gBAAgB,CAACwM,OAAlB,CAA/B;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK5G,YAAL,GAAoB,UAApB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKwyB,yBAAL,GAAiC,KAAjC;IACA;AACR;AACA;AACA;;IACQ,KAAKxlE,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;;IACQ,KAAKkgE,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKuF,aAAL,GAAqB,KAArB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAK5N,UAAL,GAAkB,IAAlB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAK/tJ,GAAL,GAAWmhI,oEAAS,CAACqC,QAAD,CAApB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKz5J,GAAL,GAAWo3J,oEAAS,CAACsC,QAAD,CAApB;IACA;AACR;AACA;;IACQ,KAAKgzB,wBAAL,GAAgC,KAAhC;IACA;AACR;AACA;AACA;;IACQ,KAAK9rB,WAAL,GAAmB,IAAnB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK1wB,MAAL,GAAcshD,cAAd;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK3J,eAAL,GAAuB4J,oBAAvB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKlF,WAAL,GAAmB,IAAnB;IACA;AACR;AACA;;IACQ,KAAKt7D,QAAL,GAAgB,CAAhB;IACA;AACR;AACA;;IACQ,KAAK/2H,KAAL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C/X,QAAQ,EAAE,oBAFX;MAGCv5J,SAAS,EAAE,CACP4uJ,8EADO,EAEP;QACI3uJ,OAAO,EAAE4uJ,sEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CAFO,CAHZ;MAUCR,QAAQ,EAAE,oBAVX;MAWCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAlHmB,CAAD;EAF8G,CAAD,CAA/H,EAsH4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,EAAqC;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArC,EAAqE;MAAEvsK,IAAI,EAAE23J,qDAAaW;IAArB,CAArE,EAA8F;MAAEt4J,IAAI,EAAEg5J,sEAAc0/B;IAAtB,CAA9F,EAAwH;MAAE14L,IAAI,EAAEwrO;IAAR,CAAxH,EAAwJ;MAAExrO,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAxJ,EAA6K;MAAE1jK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA7K,EAAqM;MAAEzjK,IAAI,EAAE61N,aAAR;MAAuB31N,UAAU,EAAE,CAAC;QACtQF,IAAI,EAAE83J,mDAAQA;MADwP,CAAD;IAAnC,CAArM,CAAP;EAElB,CAxHxB,EAwH0C;IAAExtC,MAAM,EAAE,CAAC;MACr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,oDADgH;IAEtH2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,sBADX;MAEC65J,QAAQ,EAAE,sBAFX;MAGCgf,eAAe,EAAEjH,yEAHlB;MAICtxK,SAAS,EAAE,CACPwrN,aADO,EAEP58D,8EAFO,EAGPkhD,oBAHO,EAIP;QAAE7vM,OAAO,EAAE4uJ,sEAAX;QAAwB3uJ,QAAQ,EAAE;MAAlC,CAJO,EAKP;QAAED,OAAO,EAAEw/L,8DAAX;QAA8Bn9B,WAAW,EAAEtU,yDAAU,CAAC,MAAMu5E,uBAAP,CAArD;QAAsFptB,KAAK,EAAE;MAA7F,CALO,EAMP;QAAEl6M,OAAO,EAAEy/L,0DAAX;QAA0Bp9B,WAAW,EAAEtU,yDAAU,CAAC,MAAMu5E,uBAAP,CAAjD;QAAkFptB,KAAK,EAAE;MAAzF,CANO,EAOP;QAAEl6M,OAAO,EAAEm/L,uEAAX;QAAuB98B,WAAW,EAAEtU,yDAAU,CAAC,MAAMu5E,uBAAP;MAA9C,CAPO,CAJZ;MAaCloO,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAhQmB,CAAD;EAFgH,CAAD,CAAjI,EAoQ4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE05J,wEAAeqW;IAAvB,CAAD,EAA4B;MAAE/vK,IAAI,EAAEg5J,sEAAc0/B;IAAtB,CAA5B,EAAsD;MAAE14L,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAtD,EAAsF;MAAEvsK,IAAI,EAAE61N;IAAR,CAAtF,EAA+G;MAAE71N,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA/G,EAAoI;MAAE1jK,IAAI,EAAE23J,qDAAaW;IAArB,CAApI,EAA6J;MAAEt4J,IAAI,EAAEC,SAAR;MAAmBC,UAAU,EAAE,CAAC;QAC1NF,IAAI,EAAE1E,iDADoN;QAE1N6E,IAAI,EAAE,CAAC2jO,aAAD;MAFoN,CAAD;IAA/B,CAA7J,EAG3B;MAAE9jO,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAH2B,EAGS;MAAEj5J,IAAI,EAAEm6M;IAAR,CAHT,EAGyC;MAAEn6M,IAAI,EAAE23J,oDAAY8L;IAApB,CAHzC,CAAP;EAG0E,CAvQpH,EAuQsI;IAAEoxB,WA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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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAjPmB,CAAD;EAFqH,CAAD,CAAtI,EAqP4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,EAAmC;MAAEj5J,IAAI,EAAE05J,uEAAeqW;IAAvB,CAAnC,EAA8D;MAAE/vK,IAAI,EAAE2iN;IAAR,CAA9D,EAA0F;MAAE3iN,IAAI,EAAEwoK;IAAR,CAA1F,EAAuH;MAAExoK,IAAI,EAAEuyP;IAAR,CAAvH,EAAuJ;MAAEvyP,IAAI,EAAEmxP;IAAR,CAAvJ,EAA8K;MAAEnxP,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA9K,EAAmM;MAAE1jK,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAnM,EAAmO;MAAEvsK,IAAI,EAAE23J,oDAAY8L;IAApB,CAAnO,EAA2P;MAAEzjK,IAAI,EAAE23J,qDAAaW;IAArB,CAA3P,EAAoR;MAAEt4J,IAAI,EAAEC,SAAR;MAAmBC,UAAU,EAAE,CAAC;QACjVF,IAAI,E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U,yDAAU,CAAC,MAAMkzG,qBAAP;MAF3B,CAfO,EAmBP;QACIjhQ,OAAO,EAAEgiP,iFADb;QAEI3/E,WAAW,EAAEtU,yDAAU,CAAC,MAAMkzG,qBAAP;MAF3B,CAnBO,EAuBP;QACIjhQ,OAAO,EAAEiiP,kFADb;QAEI5/E,WAAW,EAAEtU,yDAAU,CAAC,MAAMkzG,qBAAP;MAF3B,CAvBO,CAFZ;MA8BCxhQ,QAAQ,EAAE,oBA9BX;MA+BCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAvKmB;MAwKCk5K,eAAe,EAAEjH,yEAA8BkH;IAxKhD,CAAD;EAF8G,CAAD,CAA/H,EA4K4B,YAAY;IAAE,OAAO,CAAC;MAAE7iL,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE05J,uEAAeqW;IAAvB,CAA1B,EAAqD;MAAE/vK,IAAI,EAAEwoK;IAAR,CAArD,EAAkF;MAAExoK,IAAI,EAAE23J,oDAAY8L;I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AAU,CAAC,MAAMo3G,wBAAP;MAF3B,CAnBO,EAuBP;QACInlQ,OAAO,EAAEm/L,sEADb;QAEI98B,WAAW,EAAEtU,yDAAU,CAAC,MAAMo3G,wBAAP;MAF3B,CAvBO,CAFZ;MA8BC1lQ,QAAQ,EAAE,uBA9BX;MA+BCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAxMmB,CAAD;EAFiH,CAAD,CAAlI,EA4M4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE05J,uEAAeqW;IAAvB,CAA1B,EAAqD;MAAE/vK,IAAI,EAAE23J,oDAAY8L;IAApB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I;IAAEM,MAAM,EAAE,CAAC;MAChI1gR,IAAI,EAAE+3J,gDAAKA;IADqH,CAAD,CAAV;IAErH+pH,OAAO,EAAE,CAAC;MACV9hR,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CAF4G;IAIrH6pH,SAAS,EAAE,CAAC;MACZ5hR,IAAI,EAAEy4J,oDADM;MAEZt4J,IAAI,EAAE,CAAC,WAAD,EAAc;QAAEiwK,IAAI,EAAE9X,qDAAR;QAAoB4X,MAAM,EAAE;MAA5B,CAAd;IAFM,CAAD;EAJ0G,CAlDrI;AAAA;AA2DA;AACA;AACA;;;AACA,MAAM2yG,YAAY,GAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA9LA;AA+LA;AACA;AACA;;AACA,MAAMC,YAAY,GAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA7EA;AA8EA;AACA;AACA;;AACA,MAAMC,SAAS,GAAG,yBAAlB;AAEA;AACA;AACA;;AACA,MAAMC,mBAAmB,GAAG;EACxBC,UAAU,EAAE,sGADY;EAExBC,aAAa,EAAE,iHAFS;EAGxBC,mBAAmB,EAAGtoJ,GAAD,IAAU,4CAA2Cl/G,IAAI,CAACC,SAAL,CAAei/G,GAAf,CAAoB,GAHtE;EAIxBuoJ,yBAAyB,EAAGvoJ,GAAD,IAAU,kDAAiDl/G,IAAI,CAACC,SAAL,CAAei/G,GAAf,CAAoB,GAJlF;EAKxBwoJ,cAAc,EAAE,mHALQ;EAMxBC,kBAAkB,EAAE,4IANI;EAOxBC,SAAS,EAAE;AAPa,CAA5B;AAUA;AACA;AACA;;AACA,MAAMC,eAAN,CAAsB;;AAEtBA,eAAe,CAACjkR,IAAhB;EAAA,iBAA6GikR,eAA7G;AAAA;;AACAA,eAAe,CAAC7jR,KAAhB,kBA9uB6Gg4J,gEA8uB7G;EAAA,OAAiH6rH,eAAjH;EAAA,SAAiHA,eAAjH;AAAA;;AACA;EAAA,mDA/uB6G7rH,+DA+uB7G,CAA4F6rH,eAA5F,EAAyH,CAAC;IAC9GxjR,IAAI,EAAE3E,qDAAUA;EAD8F,CAAD,CAAzH;AAAA;AAIA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tKlpE,EAsK8wEC,sCAtK9wE,EAsKs4EC,2BAtKt4E,EAsKw+EC,4BAtKx+E,EAsK4kFE,+BAtK5kF,EAsKsrFC,2BAtKtrF,EAsKwxFC,gCAtKxxF;EAAA;AAAA;;AAuKA;EAAA,mDAz5F6GxwH,+DAy5F7G,CAA4FqxH,eAA5F,EAAyH,CAAC;IAC9GhpR,IAAI,EAAExE,oDADwG;IAE9G2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,cADX;MAECM,SAAS,EAAE,CACP+1Q,yBADO,EAEPoD,eAFO,EAGPC,kBAHO,EAIP;QACIn5Q,OAAO,EAAE2uJ,6EADb;QAEI0T,WAAW,EAAEyzG;MAFjB,CAJO,EAQP;QACI91Q,OAAO,EAAE4uJ,qEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CARO,EAYP;QACID,OAAO,EAAEw/L,6DADb;QAEIn9B,WAAW,EAAEtU,yDAAU,CAAC,MAAM2wH,eAAP,CAF3B;QAGIxkE,KAAK,EAAE;MAHX,CAZO,EAiBP;QACIl6M,OAAO,EAAEm/L,sEADb;QAEI98B,WAAW,EAAEtU,yDAAU,CAAC,MAAM2wH,eAAP;MAF3B,CAjBO,CAFZ;MAwBCt/Q,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMy9H,4BAAN,CAAmC;EAC/B73R,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAH8B;;AAKnCquH,4BAA4B,CAACh2R,IAA7B;EAAA,iBAA0Hg2R,4BAA1H,EA/tFuG59H,+DA+tFvG,CAAwKA,sDAAxK;AAAA;;AACA49H,4BAA4B,CAAC5xH,IAA7B,kBAhuFuGhM,+DAguFvG;EAAA,MAA8G49H,4BAA9G;EAAA;AAAA;;AACA;EAAA,mDAjuFuG59H,+DAiuFvG,CAA4F49H,4BAA5F,EAAsI,CAAC;IAC3Hv1R,IAAI,EAAE63J,oDADqH;IAE3H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFqH,CAAD,CAAtI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM09H,kCAAN,CAAyC;EACrC93R,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHoC;;AAKzCsuH,kCAAkC,CAACj2R,IAAnC;EAAA,iBAAgIi2R,kCAAhI,EArwFuG79H,+DAqwFvG,CAAoLA,sDAApL;AAAA;;AACA69H,kCAAkC,CAAC7xH,IAAnC,kBAtwFuGhM,+DAswFvG;EAAA,MAAoH69H,kCAApH;EAAA;AAAA;;AACA;EAAA,mDAvwFuG79H,+DAuwFvG,CAA4F69H,kCAA5F,EAA4I,CAAC;IACjIx1R,IAAI,EAAE63J,oDAD2H;IAEjI13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAF2H,CAAD,CAA5I,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM66I,qBAAN,CAA4B;EACxBj1S,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHuB;;AAK5ByrI,qBAAqB,CAACpzS,IAAtB;EAAA,iBAAmHozS,qBAAnH,EAnyFuGh7I,+DAmyFvG,CAA0JA,sDAA1J;AAAA;;AACAg7I,qBAAqB,CAAChvI,IAAtB,kBApyFuGhM,+DAoyFvG;EAAA,MAAuGg7I,qBAAvG;EAAA;AAAA;;AACA;EAAA,mDAryFuGh7I,+DAqyFvG,CAA4Fg7I,qBAA5F,EAA+H,CAAC;IACpH3yS,IAAI,EAAE63J,oDAD8G;IAEpH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAF8G,CAAD,CAA/H,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM29H,4BAAN,CAAmC;EAC/B/3R,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAH8B;;AAKnCuuH,4BAA4B,CAACl2R,IAA7B;EAAA,iBAA0Hk2R,4BAA1H,EAn2FuG99H,+DAm2FvG,CAAwKA,sDAAxK;AAAA;;AACA89H,4BAA4B,CAAC9xH,IAA7B,kBAp2FuGhM,+DAo2FvG;EAAA,MAA8G89H,4BAA9G;EAAA;AAAA;;AACA;EAAA,mDAr2FuG99H,+DAq2FvG,CAA4F89H,4BAA5F,EAAsI,CAAC;IAC3Hz1R,IAAI,EAAE63J,oDADqH;IAE3H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFqH,CAAD,CAAtI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM04F,uBAAN,CAA8B;EAC1B9yP,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHyB;;AAK9BspF,uBAAuB,CAACjxP,IAAxB;EAAA,iBAAqHixP,uBAArH,EAp6FuG74F,+DAo6FvG,CAA8JA,sDAA9J;AAAA;;AACA64F,uBAAuB,CAAC7sF,IAAxB,k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oD;IAC3D,MAAMhN,YAAN,EAAoBioJ,YAApB,EAAkC/c,EAAlC;IACA,KAAK+c,YAAL,GAAoBA,YAApB;IACA,KAAKj7I,iBAAL,GAAyBA,iBAAzB;IACA,KAAKy8I,UAAL,GAAkB,EAAlB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACiB,IAAThC,SAAS,CAACA,SAAD,EAAY;IACrB,IAAIiC,eAAe,GAAG,EAAtB;IACAjC,SAAS,CAACx9S,OAAV,CAAkB6Y,IAAI,IAAI;MACtB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;QAC1B4mS,eAAe,CAACr/S,IAAhB,CAAqB;UACjB82F,IAAI,EAAEr+E,IAAI,CAACZ,QAAL,EADW;UAEjBje,KAAK,EAAE6e;QAFU,CAArB;MAIH,CALD,MAMK;QACD4mS,eAAe,CAACr/S,IAAhB,CAAqByY,IAArB;MACH;IACJ,CAVD;;IAWA,IAAI,KAAKszO,QAAL,IAAiB,CAACszD,eAAe,CAACjgP,IAAhB,CAAqB3mD,IAAI,IAAIA,IAAI,CAAC7e,KAAL,KAAe,KAAKmyP,QAAjD,CAAtB,EAAkF;MAC9EszD,eAAe,GAAG,CAAC;QAAEvoN,IAAI,EAAE,KAAKi1J,QAAL,CAAcl0O,QAAd,EAAR;QAAkCje,KAAK,EAAE,KAAKmyP;MAA9C,CAAD,EAA2D,GAAGszD,eAA9D,CAAlB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IAAI,EAAExE,oDADwG;IAE9G2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,mBADX;MAECL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA7MmB,CAAD;EAFwG,CAAD,CAAzH,EAiN4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEwgT;IAAR,CAAD,EAA+B;MAAExgT,IAA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;MAxtfuGA,uDA+vf9F,GAvCT;MAxtfuGA,wDA+vf9F,gFAvCT;MAxtfuGA,uDA6wfpE,GArDnC;MAxtfuGA,wDA6wfpE,yDArDnC;MAxtfuGA,uDA66f7E,GArN1B;MAxtfuGA,wDA66f7E,uBArN1B;IAAA;EAAA;EAAA,eAsN4C+qK,aAtN5C,EAsNmNe,oBAtNnN,EAsNqcx5H,iFAtNrc,EAsNskBnwC,kDAtNtkB,EAsNupBmhK,mBAtNvpB,EAsNo1BnhK,qDAtNp1B,EAsN87BkgK,oBAtN97B,EAsNwrClgK,qDAtNxrC,EAsNmwCA,qDAtNnwC,EAsNq0CgN,wBAtNr0C,EAsNq6ChN,8DAtNr6C;EAAA;AAAA;;AAuNA;EAAA,mDA/6fuGnC,+DA+6fvG,CAA4F6sK,kBAA5F,EAA4H,CAAC;IACjHxkU,IAAI,EAAExE,oDAD2G;IAEjH2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,sBADX;MAECL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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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A,GAAX;IACA;AACR;AACA;AACA;;IACQ,KAAK4U,IAAL,GAAY,EAAZ;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK4sN,UAAL,GAAkB,YAAlB;IACA;AACR;AACA;;IACQ,KAAK4hE,UAAL,GAAkB,KAAlB;IACA;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;;IACQ,KAAKwe,OAAL,GAAerH,cAAf;IACA;AACR;AACA;;IACQ,KAAK1jB,cAAL,GAAsB,KAAtB;IACA;AACR;AACA;;IACQ,KAAK1oC,UAAL,GAAkB,KAAlB;IACA;AACR;AACA;;IACQ,KAAKk9C,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK29B,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;;IACQ,KAAK19B,SAAL,GAAiB,KAAjB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKT,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKxwD,SAAL,GAAiB,KAAjB;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKsvD,WAAL,GAAmB,KAAnB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKh6C,OAAL,GAAe,KAAf;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKs6C,UAAL,GAAkB,KAAlB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKg/B,UAAL,GAAkB,KAAlB;IACA;AACR;AACA;AACA;;IACQ,KAAK76E,YAAL,GAAoB,IAAIrgG,uDAAJ,EAApB;IACA;AACR;AACA;AACA;;IACQ,KAAKu1D,UAAL,GAAkB,IAAIv1D,uDAAJ,EAAlB;IACA;AACR;AACA;A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nF,gBAAL,CAAsB,mBAAtB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIz0C,SAAS,GAAG;IACR,OAAO,CAAC,KAAKmD,WAAL,CAAiBnD,SAAjB,EAAR;EACH;EACD;AACJ;AACA;;;EACIM,UAAU,GAAG;IACT,KAAK6C,WAAL,CAAiB7C,UAAjB;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIL,SAAS,GAAG;IACR,OAAO,KAAKkD,WAAL,CAAiBlD,SAAjB,EAAP;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIC,aAAa,GAAG;IACZ,OAAO,KAAKiD,WAAL,CAAiBjD,aAAjB,EAAP;EACH;EACD;AACJ;AACA;;;EACI20C,SAAS,GAAG;IACR,KAAKjQ,UAAL,CAAgB70C,IAAhB,CAAqB,IAArB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACIyoB,OAAO,GAAG;IACN,MAAM35J,OAAO,GAAGu5I,aAAa,EAA7B;IACA,KAAKwsC,UAAL,CAAgBjsB,IAAhB,CAAqB,IAArB,EAA2B95J,OAA3B;IACA,OAAOA,OAAP;EACH;EACD;AACJ;AACA;;;EACIsxL,WAAW,GAAG;IACV,KAAKzC,YAAL,CAAkB39C,IAAlB,CAAuB,IAAvB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI+kD,aAAa,CAAC5vE,MAAD,EAAS;IAClB,KAAKy/D,qBAAL,CAA2BhmJ,OAA3B,CAAmCumF,MAAnC;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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Z;MA6CC3vS,QAAQ,EAAE,YA7CX;MA8CCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA9emB,CAAD;EAFsG,CAAD,CAAvH,EAkf4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEu3S;IAAR,CAAD,EAAkC;MAAEv3S,IAAI,EAAE2iN;IA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W,EAAEo+L;MAFjB,CAXO,EAeP;QACIzgW,OAAO,EAAE4uJ,qEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CAfO,CAHZ;MAuBCb,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAxImB;MAyICwmM,MAAM,EAAE,CAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAlB4B;IAzIT,CAAD;EAF+G,CAAD,CAAhI,EA+J4B,YAAY;IAAE,OAAO,CAAC;MAAElwM,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA1B,EAA+C;MAAE1jK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA/C,EAAuE;MAAEzjK,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAvE,EAAuG;MAAEvsK,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAvG,CAAP;EAAkJ,CA/J5L,EA+J8M;IAAE47B,WAAW,EAAE,CAAC;MAC9M70L,IAAI,EAAEi4J,sDADwM;MAE9M93J,IAAI,EAAE,CAAC,uBAAD;IAFwM,CAAD,C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C,UAAD,EAAau3C,0DAAK,CAAC;QAAEk5I,OAAO,EAAE;MAAX,CAAD,CAAlB,CADS,EAEd6nD,+DAAU,CAAC,aAAD,EAAgB,CACtB/gM,0DAAK,CAAC;QAAEy6B,QAAQ,EAAE,QAAZ;QAAsBy+G,OAAO,EAAE,OAA/B;QAAwC7gJ,MAAM,EAAE;MAAhD,CAAD,CADiB,EAEtBwnH,4DAAO,CAAC,GAAD,EAAM7/G,0DAAK,CAAC;QAAE3H,MAAM,EAAEqqU,2DAAUA;MAApB,CAAD,CAAX,CAFe,CAAhB,CAFI,EAMd3hI,+DAAU,CAAC,aAAD,EAAgB,CACtB/gM,0DAAK,CAAC;QAAEy6B,QAAQ,EAAE,QAAZ;QAAsBpiC,MAAM,EAAEqqU,2DAAUA;MAAxC,CAAD,CADiB,EAEtB7iN,4DAAO,CAAC,GAAD,EAAM7/G,0DAAK,CAAC;QAAE3H,MAAM,EAAE,CAAV;QAAa6gJ,OAAO,EAAE;MAAtB,CAAD,CAAX,CAFe,CAAhB,CANI,CAAX,CADC,CADb;MAcC1vB,QAAQ,EAAE,mBAdX;MAeC75J,QAAQ,EAAE,qBAfX;MAgBCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA9HmB,CAAD;EAF8G,CAAD,CAA/H,EAk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B;IACA,KAAKC,cAAL,GAAsBA,cAAtB;IACA,KAAKC,kBAAL,GAA0BA,kBAA1B;IACA,KAAKC,gBAAL,GAAwBA,gBAAxB;IACA,KAAKC,SAAL,GAAiBA,SAAjB;IACA,KAAKh1O,KAAL,GAAaA,KAAb;IACA;AACR;AACA;AACA;;IACQ,KAAKpQ,OAAL,GAAe,IAAf;IACA;AACR;AACA;AACA;;IACQ,KAAKiV,WAAL,GAAmB;MAAEE,UAAU,EAAE,MAAd;MAAsBC,QAAQ,EAAE;IAAhC,CAAnB;IACA;AACR;AACA;AACA;;IACQ,KAAK6Y,SAAL,GAAiB;MAAE9Y,UAAU,EAAE,KAAd;MAAqBC,QAAQ,EAAE;IAA/B,CAAjB;IACA;AACR;AACA;AACA;;IACQ,KAAKL,UAAL,GAAkB;MAAEI,UAAU,EAAE,MAAd;MAAsBC,QAAQ,EAAE;IAAhC,CAAlB;IACA;AACR;AACA;;IACQ,KAAKiwO,gBAAL,GAAwB,KAAxB;IACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK1oO,YAAL,GAAoB,OAApB;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKv9F,MAAL,GAAci9F,cAAd;IACA;AACR;AACA;AACA;;IACQ,KAAKipO,mBAAL,GAA2B,IAAI3nP,uDAAJ,EAA3B;IACA;AACR;AACA;;IACQ,KAAKt5I,KAAL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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,MAAMiiB,eAAe,GAAG,IAAIzhL,yDAAJ,CAAmB,iBAAnB,CAAxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM20K,YAAN,CAAmB;EACfryK,WAAW,CAACy5Y,cAAD,EAAiBqJ,wBAAjB,EAA2CtnM,QAA3C,EAAqDx+C,SAArD,EAAgE;IACvE,KAAKy8O,cAAL,GAAsBA,cAAtB;IACA,KAAKqJ,wBAAL,GAAgCA,wBAAhC;IACA,KAAKtnM,QAAL,GAAgBA,QAAhB;IACA,KAAKx+C,SAAL,GAAiBA,SAAjB;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACyB,IAAjB+lP,iBAAiB,GAAG;IACpB;IACA,MAAMC,cAAc,GAAG,KAAKvJ,cAAL,CAAoBlhU,UAApB,IAAkC,EAAzD;;IACA,IAAIyqU,cAAc,CAAC,CAAD,CAAlB,EAAuB;MACnB,OAAOA,cAAc,CAAC,CAAD,CAArB;IACH;;IACD,MAAM,IAAIjlX,KAAJ,CAAW;AACzB;AACA;AACA,SAHc,CAAN;EAIH;EACD;AACJ;AACA;AACA;AACA;;;EAC6B,IAArBklX,qBAAqB,GAAG;IACxB,OAAO,KAAKjmP,SAAL,GAAiB,KAAKA,SAAL,CAAeyD,aAAhC,GAAgD,KAAKyiP,oBAAL,CAA0B,KAAKH,iBAA/B,CAAvD;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;;;EACItxX,IAAI,CAAChkB,OAAO,GAAG,EAAX,EAAe;IACf,MAAM;MAAE84H,SAAF;MAAai/G;IAAb,IAAuB,KAAKF,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AC;MACC4J,QAAQ,EAAE,6BADX;MAECL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA3ImB,CAAD;EAF4G,CAAD,CAA7H,EA+I4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAD,EAAsB;MAAE1jK,IAAI,EAAEqkS;IAAR,CAAtB,EAA6C;MAAErkS,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAA7C,EAAiF;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAjF,EAAiH;MAAEvsK,IAAI,EAAE23J,qDAAaW;IAArB,CAAjH,EAA0I;MAAEt4J,IAAI,EAAEumK;IAAR,CAA1I,CAAP;EAA2K,CA/IrN,EA+IuO;IAAEk6P,uBAAuB,EAAE,CAAC;MACnPzga,IAAI,EAAE47K,uDAD6O;MAEnPz7K,IAAI,EAAE,CAAC6zZ,+BAAD;IAF6O,CAAD,CAA3B;IAGvN0M,qBAAqB,EAAE,CAAC;MACx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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA/RmB,CAAD;EAF2G,CAAD,CAA5H,EAmS4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE6oZ;IAAR,CAA1B,EAAwD;MAAE7oZ,IAAI,EAAE2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GA,uDAgzU5C,GAxDhE;MAxvU4GA,wDAgzU5C,YAhzU4CA,yDAgzU5C,+DAxDhE;MAxvU4GA,uDAw0UxD,GAhFpD;MAxvU4GA,wDAw0UxD,YAx0UwDA,yDAw0UxD,mDAhFpD;IAAA;EAAA;EAAA,eAuH4C47Q,sBAvH5C,EAuH2GyF,sBAvH3G,EAuH+KG,mBAvH/K,EAuHuRpzB,kDAvHvR,EAuHyWA,qDAvHzW,EAuHodA,8DAvHpd,EAuH6kBA,qDAvH7kB,EAuHypBwzB,kBAvHzpB,EAuHmuBxzB,qDAvHnuB,EAuHsyBr/O,kBAvHtyB,EAuHw6BozQ,oBAvHx6B,EAuH28B39I,mEAvH38B,EAuHo+B69I,UAvHp+B,EAuHy/Bj0B,uDAvHz/B;EAAA;AAAA;;AAwHA;EAAA,mDAh3U4GpuP,+DAg3U5G,CAA4FsiR,0BAA5F,EAAoI,CAAC;IACzHj6a,IAAI,EAAExE,oDADmH;IAEzH2E,IAAI,EAAE,CAAC;MACC;MACA4J,QAAQ,EAAE,YAFX;MAGCM,SAAS,EAAE,CACP2oa,gBADO,CAHZ;MAMCtpa,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA3HmB,C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AAE,gBAFX;MAGCM,SAAS,EAAE,CACPg2a,kBADO,CAHZ;MAMC32a,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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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b,IAAI,EAAExE,oDADsH;IAE5H2E,IAAI,EAAE,CAAC;MACC;MACA4J,QAAQ,EAAE,yBAFX;MAGCM,SAAS,EAAE,CACPg2a,kBADO,CAHZ;MAMC32a,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAnKmB,CAAD;EAFsH,CAAD,CAAvI,EAuK4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,EAAqC;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArC,EAAqE;MAAEvsK,IAAI,EAAE6oZ;IAAR,CAArE,EAAmG;MAAE7oZ,IAAI,EAAE2pZ;IAAR,CAAnG,EAA+H;MAAE3pZ,IAAI,EAAEm8R,sEAAgBzjG;IAAxB,CAA/H,EAA2J;MAAE14L,IAAI,EAAEqgb;IAAR,CAA3J,EAAyL;MAAErgb,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAzL,EAA8M;MAAE1jK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA9M,EAAsO;MAAEzjK,IAAI,EAAE23J,qDAAaW;IAArB,CAAtO,EAA+P;MAAEt4J,IAAI,EAAEu9S;IAAR,CAA/P,CAAP;EAA8R,CAvKxU,EAuK0V;IAAEhgT,IAAI,EAAE,CAAC;MACnVyC,IAAI,EAAE+3J,gDAAKA;IADwU,CAAD,CAAR;IAE1U+sO,WAAW,EAAE,CAAC;MACd9kY,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CAF6T;IAI1U+vQ,QAAQ,EAAE,CAAC;MACX9na,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAJgU;IAM1UkvR,oBAAoB,EAAE,CAAC;MACvBjnb,IAAI,EAAE47K,uDADiB;MAEvBz7K,IAAI,EAAE,CAAC,sBAAD;IAFiB,CAAD;EANoT,CAvK1V;AAAA;;AAkLA,MAAMonb,YAAY,GAAG,aAArB;AACA;AACA;AACA;;AACA,MAAMC,YAAN,SAA2B5K,eAA3B,CAA2C;EACvCl/a,WAAW,CAACy/J,YAAD,EAAes3B,cAAf,EAA+BsxO,WAA/B,EAA4ClY,SAA5C,EAAuD;IAC9D,MAAM1wP,YAAN,EAAoBs3B,cAApB,EAAoCsxO,WAApC,EAAiDlY,SAAjD;EACH;EACD;AACJ;AACA;;;EACuB,IAAf45B,eAAe,GAAG;IAClB,OAAO,KAAK5K,WAAL,CAAiB0K,YAAjB,CAAP;EACH;;AATsC;;AAW3CC,YAAY,CAACjob,IAAb;EAAA,iBAA0Giob,YAA1G,EAn/b4G7vR,+DAm/b5G,CAAwIsyC,8EAAxI,GAn/b4GtyC,+DAm/b5G,CAA6KA,4DAA7K,GAn/b4GA,+DAm/b5G,CAA8MkxP,kBAA9M,GAn/b4GlxP,+DAm/b5G,CAA6OgyP,gBAA7O;AAAA;;AACA69B,YAAY,CAAC7jR,IAAb,kBAp/b4GhM,+DAo/b5G;EAAA,MAA8F6vR,YAA9F;EAAA;IAAA;EAAA;EAAA,WAp/b4G7vR,wEAo/b5G;AAAA;;AACA;EAAA,mDAr/b4GA,+DAq/b5G,CAA4F6vR,YAA5F,EAAsH,CAAC;IAC3Gxnb,IAAI,EAAE63J,oDAASA;EAD4F,CAAD,CAAtH,EAE4B,YAAY;IAAE,OAAO,CAAC;MAAE73J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,EAAqC;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArC,EAAqE;MAAEvsK,IAAI,EAAE6oZ;IAAR,CAArE,EAAmG;MAAE7oZ,IAAI,EAAE2pZ;IAAR,CAAnG,CAAP;EAAwI,CAFlL,EAEoM;IAAE7kB,WAAW,EAAE,CAAC;MACpM9kY,IAAI,EAAE+3J,gDAAKA;IADyL,CAAD;EAAf,CAFpM;AAAA;AAMA;AACA;AACA;;;AACA,MAAM2vR,qBAAN,SAAoCF,YAApC,CAAiD;EAC7C9pb,WAAW,CAACy/J,YAAD,EAAes3B,cAAf,EAA+BsxO,WAA/B,EAA4ClY,SAA5C,EAAuD;IAC9D,MAAM1wP,YAAN,EAAoBs3B,cAApB,EAAoCsxO,WAApC,EAAiDlY,SAAjD;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKyhB,kBAAL,GAA0B,OAA1B;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKC,uBAAL,GAA+B,OAA/B;IACA;AACR;AACA;;IACQ,KAAKhya,IAAL,GAAY,UAAZ;EACH;EACD;AACJ;AACA;;;EACa,IAAL0vC,KAAK,GAAG;IACR,OAAO,KAAKkwH,YAAL,CAAkBz0J,GAAlB,CAAsB,mBAAtB,CAAP;EACH;;AA3B4C;;AA6BjDg/a,qBAAqB,CAACnob,IAAtB;EAAA,iBAAmHmob,qBAAnH,EA3hc4G/vR,+DA2hc5G,CAA0JsyC,8EAA1J,GA3hc4GtyC,+DA2hc5G,CAA+LA,4DAA/L,GA3hc4GA,+DA2hc5G,CAAgOkxP,kBAAhO,GA3hc4GlxP,+DA2hc5G,CAA+PgyP,gBAA/P;AAAA;;AACA+9B,qBAAqB,CAACr+a,IAAtB,kBA5hc4GsuJ,+DA4hc5G;EAAA,MAAuG+vR,qBAAvG;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA,WA5hc4G/vR,gEA4hc5G,CAA8R,CAAC;IACnRrtJ,OAAO,EAAEw9Y,aAD0Q;IAEnRn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMqvR,qBAAP;EAF4P,CAAD,CAA9R,GA5hc4G/vR,wEA4hc5G;EAAA;EAAA;EAAA;EAAA;IAAA;MA5hc4GA,wDAgicpG,iFAhicoGA,oEAgicpG,CAJR;IAAA;EAAA;EAAA,eAiC4CqvR,6BAjC5C,EAiCuKxL,mBAjCvK,EAiCyRE,wBAjCzR;EAAA;EAAA;AAAA;;AAkCA;EAAA,mDA9jc4G/jR,+DA8jc5G,CAA4F+vR,qBAA5F,EAA+H,CAAC;IACpH1nb,IAAI,EAAExE,oDAD8G;IAEpH2E,IAAI,EAAE,CAAC;MACCyiL,eAAe,EAAEjH,yEADlB;MAEC5xK,QAAQ,EAAE,+BAFX;MAGCM,SAAS,EAAE,CAAC;QACJC,OAAO,EAAEw9Y,aADL;QAEJn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMqvR,qBAAP;MAFnB,CAAD,CAHZ;MAOCh+a,QAAQ,EAAG;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;IArCmB,CAAD;EAF8G,CAAD,CAA/H,EAyC4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,EAAqC;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArC,EAAqE;MAAEvsK,IAAI,EAAE6oZ;IAAR,CAArE,EAAmG;MAAE7oZ,IAAI,EAAE2pZ;IAAR,CAAnG,CAAP;EAAwI,CAzClL,EAyCoM;IAAE2lB,kBAAkB,EAAE,CAAC;MAC3Mtva,IAAI,EAAE+3J,gDAAKA;IADgM,CAAD,CAAtB;IAEpLw3Q,uBAAuB,EAAE,CAAC;MAC1Bvva,IAAI,EAAE+3J,gDAAKA;IADe,CAAD;EAF2J,CAzCpM;AAAA;AA+CA;AACA;AACA;;;AACA,MAAM4vR,yBAAN,SAAwCH,YAAxC,CAAqD;EACjD9pb,WAAW,CAACkqb,KAAD,EAAQzqR,YAAR,EAAsBs3B,cAAtB,EAAsCsxO,WAAtC,EAAmDlY,SAAnD,EAA8D;IACrE,MAAM1wP,YAAN,EAAoBs3B,cAApB,EAAoCsxO,WAApC,EAAiDlY,SAAjD;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKyhB,kBAAL,GAA0B,eAA1B;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKC,uBAAL,GAA+B,eAA/B;IACA;AACR;AACA;;IACQ,KAAKhya,IAAL,GAAY,cAAZ;IACA;AACR;AACA;;IACQ,KAAKqkb,YAAL,GAAqBltM,YAAD,IAAkB;MAClC,OAAOoxK,0EAAc,CAACz7M,mEAAO,CAACqqC,YAAD,CAAR,EAAwB,KAAK42L,aAA7B,CAArB;IACH,CAFD;EAGH;EACD;AACJ;AACA;;;EACa,IAALr+X,KAAK,GAAG;IACR,OAAO,KAAKkwH,YAAL,CAAkBz0J,GAAlB,CAAsB,uBAAtB,CAAP;EACH;;AAnCgD;;AAqCrDi/a,yBAAyB,CAACpob,IAA1B;EAAA,iBAAuHoob,yBAAvH,EArpc4GhwR,+DAqpc5G,CAAkKwkI,sEAAlK,GArpc4GxkI,+DAqpc5G,CAA+LsyC,8EAA/L,GArpc4GtyC,+DAqpc5G,CAAoOA,4DAApO,GArpc4GA,+DAqpc5G,CAAqQkxP,kBAArQ,GArpc4GlxP,+DAqpc5G,CAAoSgyP,gBAApS;AAAA;;AACAg+B,yBAAyB,CAACt+a,IAA1B,kBAtpc4GsuJ,+DAspc5G;EAAA,MAA2GgwR,yBAA3G;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA,WAtpc4GhwR,gEAspc5G,CAA2S,CAAC;IAChSrtJ,OAAO,EAAEw9Y,aADuR;IAEhSn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMsvR,yBAAP;EAFyQ,CAAD,CAA3S,GAtpc4GhwR,wEAspc5G;EAAA;EAAA;EAAA;EAAA;IAAA;MAtpc4GA,wDA0pcpG,qFA1pcoGA,oEA0pcpG,CAJR;IAAA;EAAA;EAAA,eAqC4CqvR,6BArC5C,EAqCuKxL,mBArCvK,EAqCyRE,wBArCzR;EAAA;EAAA;AAAA;;AAsCA;EAAA,mDA5rc4G/jR,+DA4rc5G,CAA4FgwR,yBAA5F,EAAmI,CAAC;IACxH3nb,IAAI,EAAExE,oDADkH;IAExH2E,IAAI,EAAE,CAAC;MACCyiL,eAAe,EAAEjH,yEADlB;MAEC5xK,QAAQ,EAAE,oCAFX;MAGCM,SAAS,EAAE,CAAC;QACJC,OAAO,EAAEw9Y,aADL;QAEJn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMsvR,yBAAP;MAFnB,CAAD,CAHZ;MAOCj+a,QAAQ,EAAG;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;IAzCmB,CAAD;EAFkH,CAAD,CAAnI,EA6C4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEm8R,sEAAgBzjG;IAAxB,CAAD,EAA6B;MAAE14L,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAA7B,EAAiE;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAjE,EAAiG;MAAEvsK,IAAI,EAAE6oZ;IAAR,CAAjG,EAA+H;MAAE7oZ,IAAI,EAAE2pZ;IAAR,CAA/H,CAAP;EAAoK,CA7C9M,EA6CgO;IAAE2lB,kBAAkB,EAAE,CAAC;MACvOtva,IAAI,EAAE+3J,gDAAKA;IAD4N,CAAD,CAAtB;IAEhNw3Q,uBAAuB,EAAE,CAAC;MAC1Bvva,IAAI,EAAE+3J,gDAAKA;IADe,CAAD;EAFuL,CA7ChO;AAAA;AAmDA;AACA;AACA;;;AACA,MAAM8vR,0BAAN,SAAyCL,YAAzC,CAAsD;EAClD9pb,WAAW,CAACy/J,YAAD,EAAes3B,cAAf,EAA+BsxO,WAA/B,EAA4ClY,SAA5C,EAAuD;IAC9D,MAAM1wP,YAAN,EAAoBs3B,cAApB,EAAoCsxO,WAApC,EAAiDlY,SAAjD;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKyhB,kBAAL,GAA0B,OAA1B;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKC,uBAAL,GAA+B,OAA/B;IACA;AACR;AACA;;IACQ,KAAKhya,IAAL,GAAY,eAAZ;IACA;AACR;AACA;;IACQ,KAAKqkb,YAAL,GAAqBltM,YAAD,IAAkB;MAClC,OAAOrpC,2EAAe,CAAChB,mEAAO,CAACqqC,YAAD,CAAR,CAAtB;IACH,CAFD;IAGA;AACR;AACA;;;IACQ,KAAKmtM,UAAL,GAAmBntM,YAAD,IAAkB;MAChC,OAAOtpC,qEAAS,CAAC,KAAKw2O,YAAL,CAAkBltM,YAAlB,CAAD,EAAkC,CAAlC,CAAhB;IACH,CAFD;IAGA;AACR;AACA;;;IACQ,KAAKotM,WAAL,GAAmB,CAACnqT,IAAD,EAAOpnG,KAAP,KAAiB;MAChC,OAAO66K,qEAAS,CAACzzE,IAAD,EAAOpnG,KAAP,CAAhB;IACH,CAFD;EAGH;EACD;AACJ;AACA;;;EACa,IAAL0c,KAAK,GAAG;IACR,OAAO,KAAKkwH,YAAL,CAAkBz0J,GAAlB,CAAsB,wBAAtB,CAAP;EACH;;AA7CiD;;AA+CtDm/a,0BAA0B,CAACtob,IAA3B;EAAA,iBAAwHsob,0BAAxH,EAjyc4GlwR,+DAiyc5G,CAAoKsyC,8EAApK,GAjyc4GtyC,+DAiyc5G,CAAyMA,4DAAzM,GAjyc4GA,+DAiyc5G,CAA0OkxP,kBAA1O,GAjyc4GlxP,+DAiyc5G,CAAyQgyP,gBAAzQ;AAAA;;AACAk+B,0BAA0B,CAACx+a,IAA3B,kBAlyc4GsuJ,+DAkyc5G;EAAA,MAA4GkwR,0BAA5G;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA,WAlyc4GlwR,gEAkyc5G,CAA8S,CAAC;IACnSrtJ,OAAO,EAAEw9Y,aAD0R;IAEnSn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMwvR,0BAAP;EAF4Q,CAAD,CAA9S,GAlyc4GlwR,wEAkyc5G;EAAA;EAAA;EAAA;EAAA;IAAA;MAlyc4GA,wDAsycpG,sFAtycoGA,oEAsycpG,CAJR;IAAA;EAAA;EAAA,eAqC4CqvR,6BArC5C,EAqCuKxL,mBArCvK,EAqCyRE,wBArCzR;EAAA;EAAA;AAAA;;AAsCA;EAAA,mDAx0c4G/jR,+DAw0c5G,CAA4FkwR,0BAA5F,EAAoI,CAAC;IACzH7nb,IAAI,EAAExE,oDADmH;IAEzH2E,IAAI,EAAE,CAAC;MACCyiL,eAAe,EAAEjH,yEADlB;MAEC5xK,QAAQ,EAAE,qCAFX;MAGCM,SAAS,EAAE,CAAC;QACJC,OAAO,EAAEw9Y,aADL;QAEJn7O,WAAW,EAAEtU,yDAAU,CAAC,MAAMwvR,0BAAP;MAFnB,CAAD,CAHZ;MAOCn+a,QAAQ,EAAG;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;IAzCmB,CAAD;EAFmH,CAAD,CAApI,EA6C4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,EAAqC;MAAEj5J,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArC,EAAqE;MAAEvsK,IAAI,EAAE6oZ;IAAR,CAArE,EAAmG;MAAE7oZ,IAAI,EAAE2pZ;IAAR,CAAnG,CAAP;EAAwI,CA7ClL,EA6CoM;IAAE2lB,kBAAkB,EAAE,CAAC;MAC3Mtva,IAAI,EAAE+3J,gDAAKA;IADgM,CAAD,CAAtB;IAEpLw3Q,uBAAuB,EAAE,CAAC;MAC1Bvva,IAAI,EAAE+3J,gDAAKA;IADe,CAAD;EAF2J,CA7CpM;AAAA;;AAmDA,MAAMk/M,iBAAiB,GAAG,CACtBywE,qBADsB,EAEtBC,yBAFsB,EAGtBE,0BAHsB,CAA1B;AAKA;AACA;AACA;;AACA,MAAMC,kBAAN,CAAyB;;AAEzBA,kBAAkB,CAACvob,IAAnB;EAAA,iBAAgHuob,kBAAhH;AAAA;;AACAA,kBAAkB,CAACr9a,IAAnB,kBAt4c4GktJ,8DAs4c5G;EAAA,MAAiHmwR;AAAjH;AAMAA,kBAAkB,CAACn9a,IAAnB,kBA54c4GgtJ,8DA44c5G;EAAA,UAA+I,CACnIgvR,aADmI,EAEnI7K,iBAFmI,CAA/I;AAAA;;AAIA;EAAA,mDAh5c4GnkR,+DAg5c5G,CAA4FmwR,kBAA5F,EAA4H,CAAC;IACjH9nb,IAAI,EAAEvE,mDAD2G;IAEjH0E,IAAI,EAAE,CAAC;MACC0K,OAAO,EAAE,CACL87a,aADK,EAEL7K,iBAFK,CADV;MAKCz1Q,OAAO,EAAE,CACL4wM,iBADK,CALV;MAQCnsW,YAAY,EAAE,CACV,GAAGmsW,iBADO,EAEV+vE,6BAFU;IARf,CAAD;EAF2G,CAAD,CAA5H;AAAA;;AAiBA,MAAMe,kBAAkB,GAAItnM,EAAD,IAAQ,CAAC,EAAEA,EAAE,CAAC91N,EAAH,IAAS81N,EAAE,CAAC4qK,cAAd,CAApC;AACA;AACA;AACA;;;AACA,MAAM3pE,gBAAN,CAAuB;EACnBhkV,WAAW,CAAC+sa,SAAD,EAAYh+H,uBAAZ,EAAqC;IAC5C,KAAKg+H,SAAL,GAAiBA,SAAjB;IACA,KAAKh+H,uBAAL,GAA+BA,uBAA/B;EACH;;EACS,IAANrqM,MAAM,GAAG;IACT,OAAO,KAAKqoU,SAAL,CAAe7C,WAAtB;EACH;;EACe,IAAZjmF,YAAY,GAAG;IACf,OAAOjhP,SAAS,CAAC,KAAK+rM,uBAAL,CAA6BhuR,IAA9B,CAAhB;EACH;;EACO,IAAJA,IAAI,GAAG;IACP,IAAI,KAAKkjU,YAAT,EAAuB;MACnB,OAAO,KAAKl1C,uBAAL,CAA6BhuR,IAApC;IACH;;IACD,OAAO,KAAKgsZ,SAAL,CAAe/2V,MAAtB;EACH;;EACDroE,MAAM,CAAC4U,IAAD,EAAO;IACT,MAAM0xP,OAAO,GAAG,KAAKvvK,MAAL,CAAYz3E,EAA5B;IACA,MAAMA,EAAE,GAAGgiP,QAAQ,CAAC1sP,IAAD,EAAO0xP,OAAP,CAAnB;;IACA,IAAI,CAACjxK,SAAS,CAAC/1E,EAAD,CAAd,EAAoB;MAChBuhY,QAAQ,CAACjsY,IAAD,EAAO0xP,OAAP,EAAgB,KAAKzvI,MAAL,EAAhB,CAAR;IACH;;IACD,KAAKzjH,IAAL,CAAUjX,IAAV,CAAeyY,IAAf;IACA,KAAK09R,WAAL;EACH;;EACDqqI,eAAe,CAAC/na,IAAD,EAAO7e,KAAP,EAAc;IACzB,MAAM4/E,SAAS,GAAG,KAAKinW,cAAL,CAAoB7mb,KAApB,CAAlB;IACA,KAAK8mb,wBAAL,CAA8Bjoa,IAA9B;IACA,KAAK5U,MAAL,CAAY21E,SAAZ;EACH;;EACDshC,MAAM,CAACriG,IAAD,EAAO7e,KAAP,EAAc;IAChBwgV,YAAY,CAAC3hU,IAAD,EAAO7e,KAAP,CAAZ;IACA,KAAKu8S,WAAL;EACH;;EACDl9L,MAAM,CAACxgG,IAAD,EAAO;IACT,MAAM0xP,OAAO,GAAG,KAAKvvK,MAAL,CAAYz3E,EAA5B;IACA,MAAM+6O,MAAM,GAAGiH,QAAQ,CAAC1sP,IAAD,EAAO0xP,OAAP,CAAvB;IACA,MAAMlzP,IAAI,GAAG,KAAKA,IAAlB;;IACA,KAAK,IAAIuhG,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGvhG,IAAI,CAACpc,MAA7B,EAAqC29G,GAAG,EAAxC,EAA4C;MACxC,IAAI0lJ,MAAM,KAAKiH,QAAQ,CAACluP,IAAI,CAACuhG,GAAD,CAAL,EAAY2xJ,OAAZ,CAAvB,EAA6C;QACzClzP,IAAI,CAACsyE,MAAL,CAAYivB,GAAZ,EAAiB,CAAjB;QACA;MACH;IACJ;;IACD,KAAK29L,WAAL;EACH;;EACDwqI,YAAY,CAACloa,IAAD,EAAO;IACf,MAAMjC,KAAK,GAAG0tY,SAAS,CAACzrY,IAAD,EAAO,KAAKmiF,MAAZ,CAAvB;IACA,MAAMgmV,MAAM,GAAGL,kBAAkB,CAAC/pa,KAAD,CAAjC;IACA,KAAKqqa,uBAAL,CAA6BD,MAAM,GAAGpqa,KAAK,CAAC2M,EAAT,GAAc3M,KAAK,CAACotY,YAAvD;IACA,KAAKztG,WAAL;EACH;;EACD2qI,gBAAgB,CAACroa,IAAD,EAAO;IACnB,KAAKioa,wBAAL,CAA8Bjoa,IAA9B;IACA,KAAK09R,WAAL;EACH;;EACD4qI,oBAAoB,CAACtoa,IAAD,EAAO;IACvB,MAAMmiF,MAAM,GAAG,KAAKqoU,SAAL,CAAe7C,WAA9B;IACA,MAAM5pZ,KAAK,GAAG0tY,SAAS,CAACzrY,IAAD,EAAOmiF,MAAP,CAAvB;IACA,MAAMomV,MAAM,GAAGT,kBAAkB,CAAC/pa,KAAD,CAAlB,GAA4BA,KAAK,CAAC2M,EAAlC,GAAuC3M,KAAK,CAACotY,YAA5D;IACA,OAAO,KAAK3sY,IAAL,CAAUkS,IAAV,CAAgB82I,QAAD,IAAcklG,QAAQ,CAACllG,QAAD,EAAWrlE,MAAM,CAACz3E,EAAlB,CAAR,KAAkC69Z,MAA/D,CAAP;EACH;;EACDr9B,WAAW,CAACntY,KAAD,EAAQ;IACf,OAAOmtY,WAAW,CAACntY,KAAD,EAAQ,KAAKysZ,SAAL,CAAe7C,WAAvB,CAAlB;EACH;;EACDtc,WAAW,CAACttY,KAAD,EAAQ;IACf,OAAOstY,WAAW,CAACttY,KAAD,EAAQ,KAAKysZ,SAAL,CAAe7C,WAAvB,CAAlB;EACH;;EACD1lS,MAAM,GAAG;IACL,OAAOzkG,qEAAI,EAAX;EACH;;EACDwqZ,cAAc,CAAChoa,IAAD,EAAO;IACjB,MAAMmiF,MAAM,GAAG,KAAKA,MAApB;IACA,MAAM8pL,IAAI,GAAG,KAAKq8J,oBAAL,CAA0Btoa,IAA1B,CAAb;;IACA,IAAI,CAACisQ,IAAL,EAAW;MACP,IAAI/zH,wDAAS,EAAb,EAAiB;QACb,MAAM,IAAI18H,KAAJ,CAAU,kHAAV,CAAN;MACH;;MACD;IACH;;IACD,MAAMulD,SAAS,GAAG3hF,KAAK,CAAC4gB,IAAD,CAAvB;IACAisY,QAAQ,CAAClrU,SAAD,EAAYohB,MAAM,CAACz3E,EAAnB,EAAuB,KAAKu3G,MAAL,EAAvB,CAAR;IACAgqR,QAAQ,CAAClrU,SAAD,EAAYohB,MAAM,CAACgpT,YAAnB,EAAiCz+I,QAAQ,CAACuf,IAAD,EAAO9pL,MAAM,CAACz3E,EAAd,CAAzC,CAAR;IACAuhY,QAAQ,CAAClrU,SAAD,EAAYohB,MAAM,CAACipT,cAAnB,EAAmC,IAAnC,CAAR;IACA,OAAOrqU,SAAP;EACH;;EACDqnW,uBAAuB,CAAC3iL,MAAD,EAAS;IAC5B,MAAMjnP,IAAI,GAAG,KAAKA,IAAlB;IACA,MAAM2jF,MAAM,GAAG,KAAKqoU,SAAL,CAAe7C,WAA9B;;IACA,KAAK,IAAI5nT,GAAG,GAAGvhG,IAAI,CAACpc,MAAL,GAAc,CAA7B,EAAgC29G,GAAG,IAAI,CAAvC,EAA0CA,GAAG,EAA7C,EAAiD;MAC7C,IAAI0lJ,MAAM,KAAKiH,QAAQ,CAACluP,IAAI,CAACuhG,GAAD,CAAL,EAAY5d,MAAM,CAACgpT,YAAnB,CAAnB,IAAuD1lJ,MAAM,KAAKiH,QAAQ,CAACluP,IAAI,CAACuhG,GAAD,CAAL,EAAY5d,MAAM,CAACz3E,EAAnB,CAA9E,EAAsG;QAClGlM,IAAI,CAACsyE,MAAL,CAAYivB,GAAZ,EAAiB,CAAjB;MACH;IACJ;EACJ;;EACDkoU,wBAAwB,CAACjoa,IAAD,EAAO;IAC3B,MAAMmiF,MAAM,GAAG,KAAKA,MAApB;IACA,MAAM8pL,IAAI,GAAG,KAAKq8J,oBAAL,CAA0Btoa,IAA1B,CAAb;IACA,MAAMwoa,aAAa,GAAG97K,QAAQ,CAAC1sP,IAAD,EAAOmiF,MAAM,CAAClhB,KAAd,CAA9B;IACA,MAAMwnW,iBAAiB,GAAG/7K,QAAQ,CAACuf,IAAD,EAAO9pL,MAAM,CAAC0pT,oBAAd,CAAR,IAA+C,EAAzE;IACAI,QAAQ,CAAChgI,IAAD,EAAO9pL,MAAM,CAAC0pT,oBAAd,EAAoC,CAAC,GAAG48B,iBAAJ,EAAuBD,aAAvB,CAApC,CAAR;EACH;;EACD9qI,WAAW,GAAG;IACV,IAAI,KAAKgkC,YAAT,EAAuB;MACnB,KAAKl1C,uBAAL,CAA6BvuI,OAA7B,CAAqCvZ,IAArC;IACH;EACJ;;AA3GkB;AA8GvB;AACA;AACA;;;AACA,MAAMq+L,gBAAgB,GAAIh2I,OAAD,IAAa;EAClCA,OAAO,CAACi2I,aAAR;;EACA,IAAIj2I,OAAO,CAACxgM,cAAR,CAAuB,UAAvB,CAAJ,EAAwC;IACpC,IAAI8wG,QAAQ,GAAG0vF,OAAO,CAAC1vF,QAAvB;;IACA,KAAK,IAAI4lO,KAAT,IAAkB5lO,QAAlB,EAA4B;MACxB,IAAIA,QAAQ,CAAC9wG,cAAT,CAAwB02U,KAAxB,CAAJ,EAAoC;QAChCF,gBAAgB,CAAC1lO,QAAQ,CAAC4lO,KAAD,CAAT,CAAhB;MACH;IACJ;EACJ;AACJ,CAVD;AAWA;AACA;AACA;;;AACA,SAASpzI,IAAT,CAAc31E,IAAd,EAAoBC,IAApB,EAA0Bh4B,MAA1B,EAAkC;EAC9B,KAAK,IAAI4d,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG5d,MAAM,CAAC//F,MAA/B,EAAuC29G,GAAG,EAA1C,EAA8C;IAC1C,MAAM96B,KAAK,GAAGkd,MAAM,CAAC4d,GAAD,CAApB;;IACA,IAAI,CAAC2oU,QAAQ,CAACh8K,QAAQ,CAACxyI,IAAD,EAAOj1C,KAAP,CAAT,EAAwBynL,QAAQ,CAACvyI,IAAD,EAAOl1C,KAAP,CAAhC,CAAb,EAA6D;MACzD,OAAO,IAAP;IACH;EACJ;;EACD,OAAO,KAAP;AACH;AACD;AACA;AACA;;;AACA,SAASyjW,QAAT,CAAkBl4O,MAAlB,EAA0BC,MAA1B,EAAkC;EAC9B,IAAID,MAAM,IAAIA,MAAM,CAACzmL,OAAjB,IAA4B0mL,MAA5B,IAAsCA,MAAM,CAAC1mL,OAAjD,EAA0D;IACtD,OAAOymL,MAAM,CAACzmL,OAAP,OAAqB0mL,MAAM,CAAC1mL,OAAP,EAA5B;EACH,CAFD,MAGK,IAAItjB,KAAK,CAACwtF,OAAN,CAAcu8G,MAAd,CAAJ,EAA2B;IAC5B,IAAI,CAAC/pM,KAAK,CAACwtF,OAAN,CAAcw8G,MAAd,CAAD,IAA0BD,MAAM,CAACpuM,MAAP,KAAkBquM,MAAM,CAACruM,MAAvD,EAA+D;MAC3D,OAAO,KAAP;IACH;;IACD,KAAK,IAAI29G,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGywF,MAAM,CAACpuM,MAA/B,EAAuC29G,GAAG,EAA1C,EAA8C;MAC1C,IAAIywF,MAAM,CAACzwF,GAAD,CAAN,KAAgB0wF,MAAM,CAAC1wF,GAAD,CAA1B,EAAiC;QAC7B,OAAO,KAAP;MACH;IACJ;;IACD,OAAO,IAAP;EACH;;EACD,OAAOywF,MAAM,IAAIC,MAAjB;AACH;;AACD,MAAMk4O,cAAc,GAAG,CAAC,aAAD,EAAgB,UAAhB,EAA4B,SAA5B,EAAuC,UAAvC,EAAmD,YAAnD,EAAiE,YAAjE,EAA+E,iBAA/E,CAAvB;AACA;AACA;AACA;;AACA,SAASC,UAAT,CAAoB38J,IAApB,EAA0B48J,UAA1B,EAAsCv1W,OAAtC,EAA+C2R,KAA/C,EAAsD;EAClD,MAAM3hE,MAAM,GAAG,EAAf;EACA,MAAMwla,QAAQ,GAAGp8K,QAAQ,CAACuf,IAAD,EAAOhnM,KAAP,CAAzB;EACA,MAAM8jW,cAAc,GAAGr8K,QAAQ,CAACm8K,UAAD,EAAa5jW,KAAb,CAA/B;EACA,MAAMi9H,WAAW,GAAGwqD,QAAQ,CAACp5L,OAAD,EAAU2R,KAAV,CAA5B;EACA0jW,cAAc,CAACxhb,OAAf,CAAuBqnS,QAAQ,IAAI;IAC/BlrR,MAAM,CAAC/b,IAAP,CAAYwhb,cAAc,CAACv6I,QAAD,CAAd,OAA+BtsF,WAAW,CAACssF,QAAD,CAAX,EAA/B,GAAyDs6I,QAAQ,CAACt6I,QAAD,CAAR,EAAzD,GAAgFtsF,WAAW,CAACssF,QAAD,CAAX,EAA5F;EACH,CAFD;EAGA,OAAO,IAAI3kR,IAAJ,CAAS,GAAGvG,MAAZ,CAAP;AACH;AAED;AACA;AACA;;;AACA,MAAMs+T,oBAAN,CAA2B;EACvBnkV,WAAW,CAAC+sa,SAAD,EAAYh+H,uBAAZ,EAAqCu5H,cAArC,EAAqD;IAC5D,KAAKyE,SAAL,GAAiBA,SAAjB;IACA,KAAKh+H,uBAAL,GAA+BA,uBAA/B;IACA,KAAKu5H,cAAL,GAAsBA,cAAtB;IACA;AACR;AACA;;IACQ,KAAKt3V,GAAL,GAAW,IAAIkpF,uDAAJ,EAAX;IACA;AACR;AACA;;IACQ,KAAKq7K,IAAL,GAAY,IAAIr7K,uDAAJ,EAAZ;IACA,KAAKqxR,YAAL,GAAoB,UAApB;IACA,KAAKnnG,kBAAL,GAA0B,KAAKC,oBAAL,EAA1B;IACA,KAAK0oF,SAAL,CAAej+I,QAAf,GAA0B,IAA1B;EACH;EACD;AACJ;AACA;;;EACmB,IAAX4b,WAAW,CAAChnS,KAAD,EAAQ;IACnB,KAAK4gV,eAAL,GAAuB5gV,KAAvB;EACH;;EACc,IAAXgnS,WAAW,GAAG;IACd,OAAO,KAAK45C,eAAL,IAAwB,KAAKF,kBAApC;EACH;EACD;AACJ;AACA;;;EACI54U,QAAQ,GAAG;IACP,KAAKusK,aAAL,GAAqBnc,4CAAK,CAAC,KAAKmxQ,SAAL,CAAezjB,YAAhB,EAA8B,KAAKyjB,SAAL,CAAep/Z,MAA7C,CAAL,CAA0DzJ,SAA1D,CAAoE,KAAKqgV,UAAL,CAAgB/kU,IAAhB,CAAqB,IAArB,CAApE,CAArB;IACA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAevD,eAAf,CAA+Btla,SAA/B,CAAyC,KAAKsgV,aAAL,CAAmBhlU,IAAnB,CAAwB,IAAxB,CAAzC,CAAvB;IACA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAe/iO,MAAf,CAAsB9lM,SAAtB,CAAgC,KAAKugV,aAAL,CAAmBjlU,IAAnB,CAAwB,IAAxB,CAAhC,CAAvB;IACA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAexD,kBAAf,CAAkCrla,SAAlC,CAA4C,KAAKsnb,gBAAL,CAAsBhsa,IAAtB,CAA2B,IAA3B,CAA5C,CAAvB;IACA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAezD,gBAAf,CAAgCpla,SAAhC,CAA0C,KAAKunb,cAAL,CAAoBjsa,IAApB,CAAyB,IAAzB,CAA1C,CAAvB;EACH;EACD;AACJ;AACA;;;EACIykJ,WAAW,GAAG;IACV,KAAK8T,aAAL,CAAmB1T,WAAnB;EACH;;EACDggL,oBAAoB,GAAG;IACnB,OAAO,IAAIL,gBAAJ,CAAqB,KAAK+oF,SAA1B,EAAqC,KAAKh+H,uBAA1C,CAAP;EACH;;EACDw1C,UAAU,CAAC9hV,IAAD,EAAO;IACb,KAAKoiV,WAAL;;IACA,IAAI,CAAC,KAAKhiO,SAAL,CAAe,KAAf,CAAL,EAA4B;MACxB;IACH;;IACD,MAAMne,MAAM,GAAG,KAAKqoU,SAAL,CAAe7C,WAA9B;IACA,MAAMngQ,QAAQ,GAAG,EAAjB;IACAykP,QAAQ,CAACzkP,QAAD,EAAWrlE,MAAM,CAAClhB,KAAlB,EAAyB/gF,IAAI,CAAC+gF,KAA9B,CAAR;IACAgrU,QAAQ,CAACzkP,QAAD,EAAWrlE,MAAM,CAACpV,GAAlB,EAAuB7sF,IAAI,CAAC6sF,GAA5B,CAAR;IACAk/T,QAAQ,CAACzkP,QAAD,EAAWrlE,MAAM,CAACypT,QAAlB,EAA4B1rZ,IAAI,CAAC0rZ,QAAjC,CAAR;IACAK,QAAQ,CAACzkP,QAAD,EAAWrlE,MAAM,CAACn1D,KAAlB,EAAyB9sC,IAAI,CAAC8sC,KAA9B,CAAR;IACA,MAAMu+W,SAAS,GAAGQ,cAAc,CAAC,KAAKye,SAAL,CAAer4K,KAAhB,EAAuB,KAAKq4K,SAAL,CAAejf,SAAtC,CAAhC;IACA,MAAMwsB,aAAa,GAAG73a,IAAI,CAACqrZ,SAA3B;;IACA,KAAK,IAAIxrS,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGwrS,SAAS,CAACnpZ,MAAlC,EAA0C29G,GAAG,EAA7C,EAAiD;MAC7C,MAAMisS,QAAQ,GAAGT,SAAS,CAACxrS,GAAD,CAA1B;MACA,MAAM5+G,KAAK,GAAGurQ,QAAQ,CAACqrK,aAAa,CAACh4T,GAAD,CAAd,EAAqBisS,QAAQ,CAACl/J,UAA9B,CAAtB;MACAm/J,QAAQ,CAACzkP,QAAD,EAAWwkP,QAAQ,CAAC/mU,KAApB,EAA2B+mU,QAAQ,CAACl5O,QAAT,GAAoB,CAAC3xK,KAAD,CAApB,GAA8BA,KAAzD,CAAR;IACH;;IACD,MAAMgob,OAAO,GAAG,IAAI5hC,QAAJ,CAAa,KAAKijB,SAAlB,EAA6B;MAAEhjQ;IAAF,CAA7B,CAAhB;IACA,KAAK/4F,GAAL,CAASi2E,IAAT,CAAcykS,OAAd;;IACA,IAAI,CAACA,OAAO,CAACrlR,kBAAR,EAAL,EAAmC;MAC/B,KAAK0mQ,SAAL,CAAezd,QAAf,CAAwB,KAAK3qE,WAAL,CAAiB;QACrC99P,MAAM,EAAE,KAD6B;QAErC2hN,KAAK,EAAE,IAF8B;QAGrCz+H;MAHqC,CAAjB,CAAxB;IAKH;EACJ;;EACDy6K,aAAa,CAAC;IAAEz6K;EAAF,CAAD,EAAe;IACxB,IAAI,CAAC,KAAKlnD,SAAL,CAAe,QAAf,CAAL,EAA+B;MAC3B;IACH;;IACD,IAAI,KAAK6nL,WAAL,CAAiB+iH,WAAjB,CAA6B1jP,QAA7B,CAAJ,EAA4C;MACxC,KAAKu+P,cAAL,CAAoBjY,+BAApB,CAAoD;MAAE;MAAtD,EACKnsZ,SADL,CACgB69Z,QAAD,IAAc;QACzB,IAAIA,QAAQ,KAAKx/Z,SAAjB,EAA4B;UACxB,KAAKopb,YAAL,CAAkB5hR,QAAlB,EAA4Bg4P,QAA5B;QACH;MACJ,CALD;IAMH,CAPD,MAQK;MACD,KAAKuG,cAAL,CAAoBlY,4BAApB,GACKlsZ,SADL,CACgB4gV,YAAD,IAAkB;QAC7B,IAAIA,YAAJ,EAAkB;UACd,KAAK6mG,YAAL,CAAkB5hR,QAAlB,EAA4B;UAAE;UAA9B;QACH;MACJ,CALD;IAMH;EACJ;;EACD06K,aAAa,GAAG;IACZ,KAAKI,WAAL;EACH;;EACDA,WAAW,GAAG;IACV,KAAKkoF,SAAL,CAAe1B,UAAf;EACH;;EACDugB,YAAY,CAACrpa,IAAD,EAAO7e,KAAP,EAAcsnS,IAAd,EAAoB;IAC5B,MAAM6gJ,GAAG,GAAG,KAAKnhJ,WAAjB;;IACA,IAAIM,IAAI,KAAK;IAAE;IAAf,EAAiC;MAC7B6gJ,GAAG,CAACj+B,WAAJ,CAAgBrrY,IAAhB,IACIspa,GAAG,CAACjnU,MAAJ,CAAWriG,IAAX,EAAiB7e,KAAjB,CADJ,GAEImob,GAAG,CAACvB,eAAJ,CAAoB/na,IAApB,EAA0B7e,KAA1B,CAFJ;IAGH,CAJD,MAKK;MACD;MACAmob,GAAG,CAACjnU,MAAJ,CAAWriG,IAAX,EAAiB7e,KAAjB;IACH;EACJ;;EACDiob,YAAY,CAACppa,IAAD,EAAOyoR,IAAP,EAAa;IACrB,MAAM6gJ,GAAG,GAAG,KAAKnhJ,WAAjB;;IACA,IAAIM,IAAI,KAAK;IAAE;IAAf,EAA6B;MACzB6gJ,GAAG,CAACpB,YAAJ,CAAiBloa,IAAjB;IACH,CAFD,MAGK,IAAIyoR,IAAI,KAAK;IAAE;IAAf,EAAiC;MAClC6gJ,GAAG,CAACj+B,WAAJ,CAAgBrrY,IAAhB,IACIspa,GAAG,CAAC9oU,MAAJ,CAAWxgG,IAAX,CADJ,GAEIspa,GAAG,CAACjB,gBAAJ,CAAqBroa,IAArB,CAFJ;IAGH,CAJI,MAKA;MACD;MACAspa,GAAG,CAAC9oU,MAAJ,CAAWxgG,IAAX;IACH;EACJ;;EACDipa,gBAAgB,CAAC;IAAElra,KAAF;IAASkjE,KAAT;IAAgB8L;EAAhB,CAAD,EAAwB;IACpC,IAAI27V,QAAQ,CAACznW,KAAD,EAAQljE,KAAK,CAACkjE,KAAd,CAAR,IAAgCynW,QAAQ,CAAC37V,GAAD,EAAMhvE,KAAK,CAACgvE,GAAZ,CAA5C,EAA8D;MAC1D;IACH;;IACD,MAAMy6E,QAAQ,GAAGzpJ,KAAK,CAACypJ,QAAvB;IACA,MAAMrlE,MAAM,GAAG,KAAKqoU,SAAL,CAAe7C,WAA9B;IACA,IAAIxma,KAAK,GAAG,EAAZ;IACA8qZ,QAAQ,CAAC9qZ,KAAD,EAAQghG,MAAM,CAAClhB,KAAf,EAAsBA,KAAtB,CAAR;IACAgrU,QAAQ,CAAC9qZ,KAAD,EAAQghG,MAAM,CAACpV,GAAf,EAAoBA,GAApB,CAAR;;IACA,IAAI,KAAKo7M,WAAL,CAAiB+iH,WAAjB,CAA6B1jP,QAA7B,CAAJ,EAA4C;MACxC,KAAKu+P,cAAL,CAAoBjY,+BAApB,CAAoD;MAAE;MAAtD,EACKnsZ,SADL,CACgBqE,MAAD,IAAY;QACvB,IAAIqpB,MAAM,GAAGm4I,QAAb;;QACA,IAAIxhK,MAAM,KAAK;QAAE;QAAjB,EAA+B;UAC3BqpB,MAAM,GAAG,KAAK84Q,WAAL,CAAiBmgJ,oBAAjB,CAAsC9gR,QAAtC,CAAT;UACAykP,QAAQ,CAAC9qZ,KAAD,EAAQghG,MAAM,CAAClhB,KAAf,EAAsB2nW,UAAU,CAACv5Z,MAAD,EAASm4I,QAAT,EAAmBrmK,KAAnB,EAA0BghG,MAAM,CAAClhB,KAAjC,CAAhC,CAAR;UACAgrU,QAAQ,CAAC9qZ,KAAD,EAAQghG,MAAM,CAACpV,GAAf,EAAoB67V,UAAU,CAACv5Z,MAAD,EAASm4I,QAAT,EAAmBrmK,KAAnB,EAA0BghG,MAAM,CAACpV,GAAjC,CAA9B,CAAR;QACH,CAJD,MAKK,IAAI/mF,MAAM,KAAKhG,SAAf,EAA0B;UAC3BmB,KAAK,GAAGwgV,YAAY,CAACviV,KAAK,CAACooK,QAAD,CAAN,EAAkBrmK,KAAlB,CAApB;QACH;;QACD,KAAKkob,YAAL,CAAkBh6Z,MAAlB,EAA0BluB,KAA1B,EAAiC6E,MAAjC;MACH,CAZD;IAaH,CAdD,MAeK;MACD,KAAKmiS,WAAL,CAAiB9lL,MAAjB,CAAwBmlD,QAAxB,EAAkCrmK,KAAlC;IACH;EACJ;;EACD+nb,cAAc,CAAC;IAAEnra,KAAK,EAAE;MAAEypJ;IAAF,CAAT;IAAuBvmF,KAAvB;IAA8B8L,GAA9B;IAAmCw+T,SAAnC;IAA8CK;EAA9C,CAAD,EAA2D;IACrE,MAAM+b,WAAW,GAAG,KAAK6C,SAAL,CAAe7C,WAAnC;IACA,MAAM4hB,cAAc,GAAGx9B,cAAc,CAAC,KAAKye,SAAL,CAAer4K,KAAhB,EAAuB,KAAKq4K,SAAL,CAAejf,SAAtC,CAAd,CAA+D5uZ,GAA/D,CAAmEoS,CAAC,IAAIA,CAAC,CAACk2E,KAA1E,CAAvB;IACA,MAAMkd,MAAM,GAAG,CAACwlU,WAAW,CAAC1mV,KAAb,EAAoB0mV,WAAW,CAAC56U,GAAhC,EAAqC46U,WAAW,CAAC/b,QAAjD,EAA2D18Y,MAA3D,CAAkEq6a,cAAlE,CAAf;IACA,IAAIpob,KAAK,GAAG/B,KAAK,CAACmsZ,SAAD,CAAjB;IACAU,QAAQ,CAAC9qZ,KAAD,EAAQwma,WAAW,CAAC1mV,KAApB,EAA2BA,KAA3B,CAAR;IACAgrU,QAAQ,CAAC9qZ,KAAD,EAAQwma,WAAW,CAAC56U,GAApB,EAAyBA,GAAzB,CAAR;IACAk/T,QAAQ,CAAC9qZ,KAAD,EAAQwma,WAAW,CAAC/b,QAApB,EAA8BA,QAA9B,CAAR;;IACA,IAAI,CAAC/7M,IAAI,CAACroC,QAAD,EAAWrmK,KAAX,EAAkBghG,MAAlB,CAAT,EAAoC;MAChC;IACH;;IACD,IAAI,KAAKgmM,WAAL,CAAiB+iH,WAAjB,CAA6B1jP,QAA7B,CAAJ,EAA4C;MACxC,KAAKu+P,cAAL,CAAoBjY,+BAApB,CAAoD;MAAE;MAAtD,EACKnsZ,SADL,CACgBqE,MAAD,IAAY;QACvB,IAAIqpB,MAAM,GAAGm4I,QAAb;;QACA,IAAIxhK,MAAM,KAAK;QAAE;QAAjB,EAA+B;UAC3BqpB,MAAM,GAAG,KAAK84Q,WAAL,CAAiBmgJ,oBAAjB,CAAsC9gR,QAAtC,CAAT;UACAykP,QAAQ,CAAC9qZ,KAAD,EAAQwma,WAAW,CAAC1mV,KAApB,EAA2B2nW,UAAU,CAACv5Z,MAAD,EAASm4I,QAAT,EAAmBrmK,KAAnB,EAA0Bwma,WAAW,CAAC1mV,KAAtC,CAArC,CAAR;UACAgrU,QAAQ,CAAC9qZ,KAAD,EAAQwma,WAAW,CAAC56U,GAApB,EAAyB67V,UAAU,CAACv5Z,MAAD,EAASm4I,QAAT,EAAmBrmK,KAAnB,EAA0Bwma,WAAW,CAAC56U,GAAtC,CAAnC,CAAR;QACH,CAJD,MAKK,IAAI/mF,MAAM,KAAKhG,SAAf,EAA0B;UAC3BmB,KAAK,GAAGwgV,YAAY,CAACviV,KAAK,CAACooK,QAAD,CAAN,EAAkBrmK,KAAlB,CAApB;QACH;;QACD,KAAKkob,YAAL,CAAkBh6Z,MAAlB,EAA0BluB,KAA1B,EAAiC6E,MAAjC;MACH,CAZD;IAaH,CAdD,MAeK;MACD,KAAKmiS,WAAL,CAAiB9lL,MAAjB,CAAwBmlD,QAAxB,EAAkCrmK,KAAlC;IACH;EACJ;;EACDm/G,SAAS,CAACh8B,MAAD,EAAS;IACd,MAAMioM,QAAQ,GAAG,KAAKi+I,SAAL,CAAej+I,QAAhC;IACA,OAAOA,QAAQ,IAAIA,QAAQ,CAACjoM,MAAD,CAAR,KAAqB,KAAxC;EACH;;AA5LsB;;AA8L3Bs9P,oBAAoB,CAACtiV,IAArB;EAAA,iBAAkHsiV,oBAAlH,EAjxd4GlqL,+DAixd5G,CAAwJmuQ,kBAAxJ,GAjxd4GnuQ,+DAixd5G,CAAuL6mI,uBAAvL,GAjxd4G7mI,+DAixd5G,CAA2Ni2P,cAA3N;AAAA;;AACA/rE,oBAAoB,CAACl+K,IAArB,kBAlxd4GhM,+DAkxd5G;EAAA,MAAsGkqL,oBAAtG;EAAA;IAAA;EAAA;EAAA;IAAA;IAAA;EAAA;AAAA;;AACA;EAAA,mDAnxd4GlqL,+DAmxd5G,CAA4FkqL,oBAA5F,EAA8H,CAAC;IACnH7hV,IAAI,EAAE63J,oDAASA;EADoG,CAAD,CAA9H,EAE4B,YAAY;IAAE,OAAO,CAAC;MAAE73J,IAAI,EAAE8la;IAAR,CAAD,EAA+B;MAAE9la,IAAI,EAAEw+R;IAAR,CAA/B,EAAkE;MAAEx+R,IAAI,EAAE4tZ;IAAR,CAAlE,CAAP;EAAqG,CAF/I,EAEiK;IAAEl/U,GAAG,EAAE,CAAC;MACzJ1uE,IAAI,EAAEg4J,iDAAMA;IAD6I,CAAD,CAAP;IAEjJi7K,IAAI,EAAE,CAAC;MACPjzU,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CAF2I;IAIjJowI,WAAW,EAAE,CAAC;MACdpoS,IAAI,EAAE+3J,gDAAKA;IADG,CAAD;EAJoI,CAFjK;AAAA;AAUA;AACA;AACA;AACA;;;AACA,MAAMorL,wBAAN,SAAuCtB,oBAAvC,CAA4D;EACxDnkV,WAAW,CAAC+sa,SAAD,EAAYh+H,uBAAZ,EAAqCu5H,cAArC,EAAqD;IAC5D,MAAMyE,SAAN,EAAiBh+H,uBAAjB,EAA0Cu5H,cAA1C;IACA,KAAKyE,SAAL,GAAiBA,SAAjB;IACA,KAAKh+H,uBAAL,GAA+BA,uBAA/B;IACA,KAAKu5H,cAAL,GAAsBA,cAAtB;EACH;;EACD98Z,QAAQ,GAAG;IACP,MAAMA,QAAN;IACA,KAAKusK,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAevjB,aAAf,CAA6BtlZ,SAA7B,CAAuC,KAAKghV,WAAL,CAAiB1lU,IAAjB,CAAsB,IAAtB,CAAvC,CAAvB;IACA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK+7V,SAAL,CAAez1I,IAAf,CAAoBpzR,SAApB,CAA8B,KAAKwgV,WAAL,CAAiBllU,IAAjB,CAAsB,IAAtB,CAA9B,CAAvB;EACH;;EACD0lU,WAAW,CAACziV,IAAD,EAAO;IACd,IAAI,CAAC,KAAKogH,SAAL,CAAe,MAAf,CAAL,EAA6B;MACzB;IACH;;IACD,MAAMkpU,QAAQ,GAAG,IAAIliC,SAAJ,CAAc,KAAKkjB,SAAnB,EAA8B;MAAEhjQ,QAAQ,EAAEtnK,IAAI,CAAC6d,KAAL,CAAWypJ,QAAvB;MAAiCzpJ,KAAK,EAAE7d,IAAI,CAAC6d;IAA7C,CAA9B,CAAjB;IACA,KAAKi1T,IAAL,CAAUtuL,IAAV,CAAe8kS,QAAf;;IACA,IAAIA,QAAQ,CAAC1lR,kBAAT,EAAJ,EAAmC;MAC/B;IACH;;IACD,IAAI0D,QAAQ,GAAGtnK,IAAI,CAAC6d,KAAL,CAAWypJ,QAA1B;;IACA,IAAI,KAAK2gI,WAAL,CAAiB+iH,WAAjB,CAA6B1jP,QAA7B,CAAJ,EAA4C;MACxC,KAAKu+P,cAAL,CAAoBjY,+BAApB,CAAoD;MAAE;MAAtD,EACK5qZ,IADL,CACUsV,uDAAM,CAACiwR,IAAI,IAAIA,IAAI,KAAKzoS,SAAlB,CADhB,EAEK2B,SAFL,CAEgB8mS,IAAD,IAAU;QACrB,IAAIA,IAAI,KAAK;QAAE;QAAf,EAA6B;UACzBjhI,QAAQ,GAAG,KAAK2gI,WAAL,CAAiBmgJ,oBAAjB,CAAsC9gR,QAAtC,CAAX;QACH;;QACD,MAAM2qF,KAAK,GAAG,KAAKiwF,WAAL,CAAiB;UAC3B99P,MAAM,EAAE,MADmB;UAE3B2hN,KAAK,EAAE,KAFoB;UAG3BwC,IAH2B;UAI3BjhI;QAJ2B,CAAjB,CAAd;QAMA,KAAKgjQ,SAAL,CAAexd,SAAf,CAAyBxlP,QAAzB,EAAmC;UAAE2qF,KAAF;UAASs2C;QAAT,CAAnC;MACH,CAbD;IAcH,CAfD,MAgBK;MACD,MAAMt2C,KAAK,GAAG,KAAKiwF,WAAL,CAAiB;QAC3B99P,MAAM,EAAE,MADmB;QAE3B2hN,KAAK,EAAE,KAFoB;QAG3BwC,IAAI,EAAE;QAAE;QAHmB;QAI3BjhI;MAJ2B,CAAjB,CAAd;MAMA,KAAKgjQ,SAAL,CAAexd,SAAf,CAAyBxlP,QAAzB,EAAmC;QAAE2qF;MAAF,CAAnC;IACH;EACJ;;EACDgwF,WAAW,CAACjiV,IAAD,EAAO;IACd,IAAI,KAAKupb,WAAL,CAAiBvpb,IAAjB,CAAJ,EAA4B;MACxB,MAAMwpb,SAAS,GAAGxpb,IAAI,CAACmlS,SAAL,CAAelkS,KAAjC;;MACA,IAAIjB,IAAI,CAAC+lS,KAAT,EAAgB;QACZ,KAAKkC,WAAL,CAAiB/8R,MAAjB,CAAwBs+a,SAAxB;MACH,CAFD,MAGK;QACD,KAAKL,YAAL,CAAkBnpb,IAAI,CAACsnK,QAAvB,EAAiCkiR,SAAjC,EAA4Cxpb,IAAI,CAACuoS,IAAjD;MACH;IACJ;;IACD,KAAK65C,WAAL;EACH;;EACDF,WAAW,CAACliV,IAAD,EAAO;IACd;IACAA,IAAI,CAAC6d,KAAL,GAAa7d,IAAI,CAACsnK,QAAlB;IACA,OAAO,KAAK27K,eAAL,CAAqBjjV,IAArB,CAAP;EACH;;EACDupb,WAAW,CAAC;IAAEpkJ,SAAF;IAAaY;EAAb,CAAD,EAAuB;IAC9B,IAAIZ,SAAS,CAACuc,KAAd,EAAqB;MACjB,OAAO,IAAP;IACH;;IACD,IAAI,CAACvc,SAAS,CAAC+9C,KAAX,IAAoB,CAACn9C,KAAzB,EAAgC;MAC5B,OAAO,KAAP;IACH;;IACD88C,gBAAgB,CAAC19C,SAAD,CAAhB;IACA,OAAO,KAAP;EACH;;AA1EuD;;AA4E5D69C,wBAAwB,CAAC5jV,IAAzB;EAAA,iBAAsH4jV,wBAAtH,EA72d4GxrL,+DA62d5G,CAAgKmuQ,kBAAhK,GA72d4GnuQ,+DA62d5G,CAA+L6mI,uBAA/L,GA72d4G7mI,+DA62d5G,CAAmOi2P,cAAnO;AAAA;;AACAzqE,wBAAwB,CAACx/K,IAAzB,kBA92d4GhM,+DA82d5G;EAAA,MAA0GwrL,wBAA1G;EAAA;EAAA;IAAA;EAAA;EAAA,WA92d4GxrL,wEA82d5G;AAAA;;AACA;EAAA,mDA/2d4GA,+DA+2d5G,CAA4FwrL,wBAA5F,EAAkI,CAAC;IACvHnjV,IAAI,EAAE63J,oDADiH;IAEvH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFiH,CAAD,CAAlI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE8la;IAAR,CAAD,EAA+B;MAAE9la,IAAI,EAAEw+R;IAAR,CAA/B,EAAkE;MAAEx+R,IAAI,EAAE4tZ;IAAR,CAAlE,CAAP;EAAqG,CAL/I,EAKiK;IAAExqE,eAAe,EAAE,CAAC;MACrKpjV,IAAI,EAAE+3J,gDAD+J;MAErK53J,IAAI,EAAE,CAAC,+BAAD;IAF+J,CAAD;EAAnB,CALjK;AAAA;AAUA;AACA;AACA;AACA;;;AACA,MAAMypb,uCAAN,SAAsD5lO,UAAtD,CAAiE;EAC7DtmN,WAAW,CAACw/J,OAAD,EAAU;IACjB;IACA,KAAKA,OAAL,GAAeA,OAAf;EACH;;EACW,IAARoT,QAAQ,GAAG;IACX,OAAO,IAAP;EACH;;AAP4D;;AASjEs5Q,uCAAuC,CAACrqb,IAAxC;EAAA,iBAAqIqqb,uCAArI,EAt4d4GjyR,+DAs4d5G,CAA8LsyC,8EAA9L;AAAA;;AACA2/O,uCAAuC,CAACvgb,IAAxC,kBAv4d4GsuJ,+DAu4d5G;EAAA,MAAyHiyR,uCAAzH;EAAA;EAAA,WAv4d4GjyR,gEAu4d5G,CAA2N,CACnN;IACIrtJ,OAAO,EAAE05M,UADb;IAEIr3C,WAAW,EAAEtU,yDAAU,CAAC,MAAMuxR,uCAAP;EAF3B,CADmN,CAA3N,GAv4d4GjyR,wEAu4d5G;EAAA;EAAA;EAAA;EAAA;AAAA;;AAMA;EAAA,mDA74d4GA,+DA64d5G,CAA4FiyR,uCAA5F,EAAiJ,CAAC;IACtI5pb,IAAI,EAAExE,oDADgI;IAEtI2E,IAAI,EAAE,CAAC;MACCkK,SAAS,EAAE,CACP;QACIC,OAAO,EAAE05M,UADb;QAEIr3C,WAAW,EAAEtU,yDAAU,CAAC,MAAMuxR,uCAAP;MAF3B,CADO,CADZ;MAOC7/a,QAAQ,EAAE,kCAPX;MAQCL,QAAQ,EAAG;IARZ,CAAD;EAFgI,CAAD,CAAjJ,EAY4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAD,CAAP;EAA8C,CAZxF;AAAA;;AAcA,MAAM4wR,gBAAgB,GAAGjvR,OAAO,IAAI4rC,UAAU,CAAC5rC,OAAD,EAAU,qBAAV,CAA9C;AACA;AACA;AACA;;;AACA,MAAMkvR,kBAAN,CAAyB;EACrBpsb,WAAW,CAAC+sa,SAAD,EAAYnuN,SAAZ,EAAuB31C,YAAvB,EAAqCsG,IAArC,EAA2CwnB,cAA3C,EAA2Do5N,SAA3D,EAAsEmY,cAAtE,EAAsF;IAC7F,KAAKyE,SAAL,GAAiBA,SAAjB;IACA,KAAKnuN,SAAL,GAAiBA,SAAjB;IACA,KAAK31C,YAAL,GAAoBA,YAApB;IACA,KAAKsG,IAAL,GAAYA,IAAZ;IACA,KAAKwnB,cAAL,GAAsBA,cAAtB;IACA,KAAKo5N,SAAL,GAAiBA,SAAjB;IACA,KAAKmY,cAAL,GAAsBA,cAAtB;IACA,KAAK+jB,SAAL,GAAiB,CAAC;MACVhiY,KAAK,EAAEt6C,CAAC,IAAIA,CAAC,CAACyzJ,OAAF,KAActI,sEAAd,IAA2Bg8P,WAAW,CAACnnZ,CAAD,CADxC;MAEV82E,MAAM,EAAE92E,CAAC,IAAI;QACT,MAAMg9Z,SAAS,GAAG,KAAKA,SAAvB;QACA,MAAM7pP,KAAK,GAAG,IAAI92J,IAAJ,GAAW6jL,QAAX,EAAd;QACA,MAAMtvC,QAAQ,GAAGosQ,SAAS,CAAC/1L,YAA3B;QACA,MAAMxzJ,KAAK,GAAG,IAAIp3D,IAAJ,CAASu0I,QAAQ,CAACkzC,WAAT,EAAT,EAAiClzC,QAAQ,CAACmzC,QAAT,EAAjC,EAAsDnzC,QAAQ,CAACgsC,OAAT,EAAtD,EAA0EzpB,KAAK,GAAG,CAAlF,CAAd;QACA,MAAM5zF,GAAG,GAAG,IAAIljE,IAAJ,CAASu0I,QAAQ,CAACkzC,WAAT,EAAT,EAAiClzC,QAAQ,CAACmzC,QAAT,EAAjC,EAAsDnzC,QAAQ,CAACgsC,OAAT,EAAtD,EAA0EzpB,KAAK,GAAG,CAAlF,CAAZ;QACA,IAAIorP,aAAJ;;QACA,IAAIvB,SAAS,CAACr4K,KAAd,EAAqB;UACjB,MAAMo5J,SAAS,GAAGif,SAAS,CAACjf,SAAV,IAAuB,EAAzC;UACA,MAAMp5J,KAAK,GAAGq4K,SAAS,CAACr4K,KAAV,IAAmB,EAAjC;UACA,MAAMhB,OAAO,GAAG46J,cAAc,CAAC55J,KAAD,EAAQo5J,SAAR,CAA9B;;UACA,IAAIp6J,OAAO,CAAC/uP,MAAR,GAAiB,CAArB,EAAwB;YACpB2pa,aAAa,GAAG56K,OAAO,CAAC,CAAD,CAAP,CAAW3yO,IAAX,CAAgB,CAAhB,CAAhB;UACH;QACJ;;QACDgsZ,SAAS,CAACp/Z,MAAV,CAAiBs5I,IAAjB,CAAsB;UAClBzjE,KAAK,EAAEwkU,+EAAA,CAAwBxkU,KAAxB,EAA+BupV,SAAS,CAACrU,QAAzC,EAAmDzQ,WAAnD,EADW;UAElB34T,GAAG,EAAE04T,+EAAA,CAAwB14T,GAAxB,EAA6By9U,SAAS,CAACrU,QAAvC,EAAiDzQ,WAAjD,EAFa;UAGlBkG,QAAQ,EAAE,KAHQ;UAIlBL,SAAS,EAAE,CAACwgB,aAAD,CAJO;UAKlBv5P,aAAa,EAAEhlK,CALG;UAMlB+kK,MAAM,EAAEi4P;QANU,CAAtB;MAQH;IAzBS,CAAD,EA0BV;MACC1iX,KAAK,EAAEt6C,CAAC,IAAIA,CAAC,CAACyzJ,OAAF,IAAatI,wEAAb,IAA4BnrJ,CAAC,CAACyzJ,OAAF,IAAatI,wEAAzC,IAAwD27P,aAAa,CAAC9mZ,CAAD,EAAI6mZ,SAAS,CAACE,MAAd,CADlF;MAECjwU,MAAM,EAAE92E,CAAC,IAAI;QACT,MAAMg9Z,SAAS,GAAG,KAAKA,SAAvB;QACA,MAAM/rN,SAAS,GAAGjxM,CAAC,CAACyzJ,OAAF,GAAYtI,wEAAZ,GAA0B,CAA5C;QACA,MAAMmmD,KAAK,GAAG0rN,SAAS,CAAC1rN,KAAV,CAAgB95C,OAAhB,EAAd;QACA,MAAM+zC,IAAI,GAAG+F,KAAK,CAACL,SAAD,CAAlB;;QACA,IAAI1F,IAAJ,EAAU;UACN,KAAK/rC,IAAL,CAAUnuD,GAAV,CAAc,MAAM;YAChB,MAAMglD,SAAS,GAAG2mQ,SAAS,CAAC3B,kBAAV,CAA6B;cAAE9oa,IAAI,EAAE,aAAR;cAAuBg5M;YAAvB,CAA7B,CAAlB;;YACA,IAAI,CAACl1C,SAAL,EAAgB;cACZ,KAAK2wB,cAAL,CAAoBnoB,YAApB;cACA,KAAK89Q,SAAL;YACH;UACJ,CAND;QAOH;MACJ;IAhBF,CA1BU,EA2CV;MACCriY,KAAK,EAAEt6C,CAAC,IAAIA,CAAC,CAACyzJ,OAAF,KAActI,sEAAd,IAA2Bg8P,WAAW,CAACnnZ,CAAD,CADnD;MAEC82E,MAAM,EAAE,MAAM;QACV,KAAK0oF,IAAL,CAAUnuD,GAAV,CAAc,MAAM;UAChB,KAAK2rT,SAAL,CAAe3B,kBAAf,CAAkC;YAAE9oa,IAAI,EAAE;UAAR,CAAlC;UACA,KAAKoqb,SAAL;QACH,CAHD;MAIH;IAPF,CA3CU,EAmDV;MACCriY,KAAK,EAAGt6C,CAAD,IAAO,CAACA,CAAC,CAACyzJ,OAAF,KAActI,2EAAd,IAAgCnrJ,CAAC,CAACyzJ,OAAF,KAActI,4EAA/C,KAAmE27P,aAAa,CAAC9mZ,CAAD,EAAI6mZ,SAAS,CAACI,QAAd,CAD/F;MAECnwU,MAAM,EAAG92E,CAAD,IAAO;QACX,MAAMzN,IAAI,GAAGyN,CAAC,CAACyzJ,OAAF,KAActI,2EAAd,GAA+B,MAA/B,GAAwC,MAArD;QACA,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;UAChB,KAAK2rT,SAAL,CAAe3B,kBAAf,CAAkC;YAAE9oa;UAAF,CAAlC;UACA,KAAKoqb,SAAL;QACH,CAHD;MAIH;IARF,CAnDU,EA4DV;MACCriY,KAAK,EAAEt6C,CAAC,IAAI,CAACA,CAAC,CAACyzJ,OAAF,KAActI,yEAAd,IAA8BnrJ,CAAC,CAACyzJ,OAAF,KAActI,2EAA7C,KAAgEg8P,WAAW,CAACnnZ,CAAD,CAA3E,IAAkF,CAACo8a,gBAAgB,CAACp8a,CAAC,CAAC6hB,MAAH,CADhH;MAECi1D,MAAM,EAAE92E,CAAC,IAAI;QACT,MAAMq2J,SAAS,GAAG,KAAK2mQ,SAAL,CAAe3B,kBAAf,CAAkC;UAAE9oa,IAAI,EAAE;QAAR,CAAlC,CAAlB;;QACA,IAAI,CAAC8jK,SAAL,EAAgB;UACZ,KAAK6C,YAAL,CAAkB8mP,SAAlB,CAA4B;YAAEp0U,MAAM,EAAE,CAAC;UAAX,CAA5B;UACA5rE,CAAC,CAACulC,cAAF;QACH;MACJ;IARF,CA5DU,EAqEV;MACC+U,KAAK,EAAEt6C,CAAC,IAAI,CAACA,CAAC,CAACyzJ,OAAF,KAActI,2EAAd,IAAgCnrJ,CAAC,CAACyzJ,OAAF,KAActI,4EAA/C,KAAmEg8P,WAAW,CAACnnZ,CAAD,CAA9E,IAAqF,CAACo8a,gBAAgB,CAACp8a,CAAC,CAAC6hB,MAAH,CADnH;MAECi1D,MAAM,EAAE92E,CAAC,IAAI;QACT,MAAMq2J,SAAS,GAAG,KAAK2mQ,SAAL,CAAe3B,kBAAf,CAAkC;UAAE9oa,IAAI,EAAE;QAAR,CAAlC,CAAlB;;QACA,IAAI,CAAC8jK,SAAL,EAAgB;UACZ,KAAK6C,YAAL,CAAkB8mP,SAAlB,CAA4B;YAAEp0U,MAAM,EAAE;UAAV,CAA5B;UACA5rE,CAAC,CAACulC,cAAF;QACH;MACJ;IARF,CArEU,CAAjB;IA+EA,KAAKs3Y,aAAL,GAAqB,CAAC;MACdviY,KAAK,EAAEt6C,CAAC,IAAI,CAACA,CAAC,CAACyzJ,OAAF,KAActI,wEAAd,IAA6BnrJ,CAAC,CAACyzJ,OAAF,KAActI,2EAA5C,KAA+Dg8P,WAAW,CAACnnZ,CAAD,CADxE;MAEd82E,MAAM,EAAE,CAAC92E,CAAD,EAAIuQ,KAAJ,KAAc;QAClB,KAAK6vY,SAAL,CAAel7Y,SAAf,CAAyB,QAAzB,EAAmC;UAAEqL,KAAK,EAAEA,KAAT;UAAgBypJ,QAAQ,EAAEzpJ,KAAK,CAACypJ;QAAhC,CAAnC;QACAh6J,CAAC,CAACulC,cAAF;MACH;IALa,CAAD,EAMd;MACC+U,KAAK,EAAEt6C,CAAC,IAAIA,CAAC,CAACyzJ,OAAF,KAActI,uEAAd,IAA4Bg8P,WAAW,CAACnnZ,CAAD,CADpD;MAEC82E,MAAM,EAAE,CAAC92E,CAAD,EAAIuQ,KAAJ,KAAc;QAClB,KAAK6vY,SAAL,CAAel7Y,SAAf,CAAyB,eAAzB,EAA0C;UAAE3S,IAAI,EAAE,UAAR;UAAoBge,KAAK,EAAEA,KAA3B;UAAkCy0J,aAAa,EAAEhlK;QAAjD,CAA1C;QACAA,CAAC,CAACulC,cAAF;MACH;IALF,CANc,CAArB;IAaA,KAAK+qH,IAAL,GAAY,IAAI3E,+CAAJ,EAAZ;IACA,KAAK2E,IAAL,CAAUrvF,GAAV,CAAc,KAAK4tI,SAAL,CAAez3C,OAAf,CAAuBjjK,SAAvB,CAAiC6L,CAAC,IAAI,KAAKm8R,SAAL,CAAen8R,CAAf,CAAtC,CAAd;IACA,KAAKswJ,IAAL,CAAUrvF,GAAV,CAAc,KAAK+7V,SAAL,CAAetjB,YAAf,CAA4BvlZ,SAA5B,CAAsC6L,CAAC,IAAI,KAAK88a,cAAL,CAAoB98a,CAApB,CAA3C,CAAd;EACH;;EACDm8R,SAAS,CAACn8R,CAAD,EAAI;IACT,MAAMs6C,KAAK,GAAG,KAAKgiY,SAAL,CAAep5Z,IAAf,CAAoB65Z,QAAQ,IAAIA,QAAQ,CAACziY,KAAT,CAAet6C,CAAf,CAAhC,CAAd;;IACA,IAAIs6C,KAAK,IAAI,CAAC,KAAKi+W,cAAL,CAAoBr4P,MAAlC,EAA0C;MACtC5lH,KAAK,CAACw8B,MAAN,CAAa92E,CAAb;IACH;EACJ;;EACD88a,cAAc,CAAC98a,CAAD,EAAI;IACd,MAAMs6C,KAAK,GAAG,KAAKuiY,aAAL,CAAmB35Z,IAAnB,CAAwB65Z,QAAQ,IAAIA,QAAQ,CAACziY,KAAT,CAAet6C,CAAC,CAACglK,aAAjB,CAApC,CAAd;;IACA,IAAI1qH,KAAK,IAAI,CAAC,KAAKi+W,cAAL,CAAoBr4P,MAAlC,EAA0C;MACtC5lH,KAAK,CAACw8B,MAAN,CAAa92E,CAAC,CAACglK,aAAf,EAA8BhlK,CAAC,CAACuQ,KAAhC;IACH;EACJ;;EACDosa,SAAS,GAAG;IACR,KAAKv8B,SAAL,CAAexD,SAAf,CAAyBlnZ,IAAzB,CAA8B02J,qDAAI,CAAC,CAAD,CAAlC,EAAuCj4J,SAAvC,CAAiD,MAAM,KAAK+kK,YAAL,CAAkBr1H,KAAlB,EAAvD;EACH;;AAvHoB;;AAyHzBw4Y,kBAAkB,CAACvqb,IAAnB;EAAA,iBAAgHuqb,kBAAhH,EAxhe4GnyR,+DAwhe5G,CAAoJmuQ,kBAApJ,GAxhe4GnuQ,+DAwhe5G,CAAmLumI,gBAAnL,GAxhe4GvmI,+DAwhe5G,CAAgN4O,YAAhN,GAxhe4G5O,+DAwhe5G,CAAyOA,iDAAzO,GAxhe4GA,+DAwhe5G,CAA+PA,4DAA/P,GAxhe4GA,+DAwhe5G,CAAgSgyP,gBAAhS,GAxhe4GhyP,+DAwhe5G,CAA6Ti2P,cAA7T;AAAA;;AACAk8B,kBAAkB,CAACnmR,IAAnB,kBAzhe4GhM,+DAyhe5G;EAAA,MAAoGmyR,kBAApG;EAAA;AAAA;;AACA;EAAA,mDA1he4GnyR,+DA0he5G,CAA4FmyR,kBAA5F,EAA4H,CAAC;IACjH9pb,IAAI,EAAE63J,oDAD2G;IAEjH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAF2G,CAAD,CAA5H,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE8la;IAAR,CAAD,EAA+B;MAAE9la,IAAI,EAAEk+R;IAAR,CAA/B,EAA2D;MAAEl+R,IAAI,EAAEumK;IAAR,CAA3D,EAAmF;MAAEvmK,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAnF,EAAwG;MAAE1jK,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAxG,EAAwI;MAAEvsK,IAAI,EAAE2pZ;IAAR,CAAxI,EAAoK;MAAE3pZ,IAAI,EAAE4tZ;IAAR,CAApK,CAAP;EAAuM,CALjP;AAAA;AAOA;AACA;AACA;AACA;;;AACA,MAAM68B,uBAAN,CAA8B;EAC1B/sb,WAAW,CAAC+sa,SAAD,EAAYngQ,GAAZ,EAAiB;IACxB,KAAKmgQ,SAAL,GAAiBA,SAAjB;IACA,KAAKngQ,GAAL,GAAWA,GAAX;IACA;AACR;AACA;;IACQ,KAAKogR,mBAAL,GAA2B,IAAI9yR,uDAAJ,EAA3B;IACA,KAAKksD,aAAL,GAAqB,IAArB;IACA,KAAK6mO,yBAAL,GAAiC,IAAI/yR,uDAAJ,EAAjC;IACA,KAAK6d,aAAL,GAAqB,IAAIrc,+CAAJ,EAArB;IACA,KAAKqxQ,SAAL,CAAex9H,UAAf,GAA4B,IAA5B;IACA,KAAKx3H,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAKi8W,yBAAL,CAClBxnb,IADkB,CACbw4R,qEAAoB,CAACuwD,WAAD,CADP,EACsBtqV,SADtB,CACiC8M,CAAD,IAAO;MAC1D,KAAKg8a,mBAAL,CAAyB/lS,IAAzB,CAA8Bj2I,CAA9B;IACH,CAHsB,CAAvB;IAIA,MAAMk8a,MAAM,GAAG,KAAKngB,SAAL,CAAe5D,aAA9B;IACA,MAAMgkB,KAAK,GAAG,KAAKpgB,SAAL,CAAe3D,QAA7B;IACA,MAAMgkB,IAAI,GAAG,KAAKrgB,SAAL,CAAe1D,WAA5B;IACA,MAAMgkB,WAAW,GAAGH,MAAM,CAACznb,IAAP,CAAYsV,uDAAM,CAAChL,CAAC,IAAI,CAACA,CAAC,CAACs2J,kBAAF,EAAP,CAAlB,CAApB;IACA,KAAK0R,aAAL,CAAmB/mG,GAAnB,CAAuBq8W,WAAW,CAACnpb,SAAZ,CAAsB6L,CAAC,IAAI,KAAK6oa,cAAL,CAAoB7oa,CAApB,CAA3B,CAAvB;IACA,KAAKgoK,aAAL,CAAmB/mG,GAAnB,CAAuBm8W,KAAK,CAACjpb,SAAN,CAAgB6L,CAAC,IAAI,KAAKo3O,MAAL,CAAYp3O,CAAZ,CAArB,CAAvB;IACA,KAAKgoK,aAAL,CAAmB/mG,GAAnB,CAAuBo8W,IAAI,CAAClpb,SAAL,CAAe,MAAM,KAAKo0a,SAAL,EAArB,CAAvB;EACH;;EACD9sa,QAAQ,GAAG;IACP,KAAKuha,SAAL,CAAe/D,cAAf,GAAgC,KAAKA,cAAL,CAAoBxpZ,IAApB,CAAyB,IAAzB,CAAhC;EACH;;EACDmkJ,WAAW,CAACnD,OAAD,EAAU;IACjB,IAAIrF,0EAAS,CAAC,eAAD,EAAkBqF,OAAlB,EAA2B,KAA3B,CAAb,EAAgD;MAC5C,MAAMl5E,QAAQ,GAAG;QACb6mU,QAAQ,EAAE,KADG;QAEbL,SAAS,EAAE,KAAKif,SAAL,CAAejf,SAAf,CAAyBn4U,MAAzB,CAAgC,CAACptE,MAAD,EAASgmZ,QAAT,KAAsB;UAC7DhmZ,MAAM,CAACuB,IAAP,CAAY,GAAGykZ,QAAQ,CAACxtY,IAAxB;UACA,OAAOxY,MAAP;QACH,CAHU,EAGR,EAHQ;MAFE,CAAjB;MAOA,KAAK69M,aAAL,GAAqB/gN,MAAM,CAACC,MAAP,CAAcgiF,QAAd,EAAwBk5E,OAAO,CAAC8sR,aAAR,CAAsBj8Q,YAA9C,CAArB;MACA,KAAKzE,GAAL,CAASgC,YAAT;IACH;EACJ;;EACD3K,WAAW,GAAG;IACV,KAAK8T,aAAL,CAAmB1T,WAAnB;EACH;;EACD2kQ,cAAc,CAAC;IAAExlV,KAAF;IAAS8L,GAAT;IAAc6+T,QAAd;IAAwBL;EAAxB,CAAD,EAAsC;IAChD,IAAI,CAACtqU,KAAD,IAAU,CAAC8L,GAAX,IAAkB,CAAC,KAAK82H,aAA5B,EAA2C;MACvC,OAAO,KAAP;IACH;;IACD,MAAM/7J,KAAK,GAAGgpW,cAAc,CAAC,KAAKjtM,aAAL,CAAmB0nM,SAApB,EAA+BA,SAA/B,CAA5B;;IACA,IAAI,CAACzjW,KAAL,EAAY;MACR,OAAO,KAAP,CADQ,CACM;IACjB;;IACD,OAAO,KAAK+7J,aAAL,IAAsB+nM,QAAQ,KAAK,KAAK/nM,aAAL,CAAmB+nM,QAAtD,IAAkE,KAAKr9M,SAAL,CAAettH,KAAf,EAAsB8L,GAAtB,CAAzE;EACH;;EACDspV,cAAc,CAAC;IAAEp1V,KAAF;IAAS8L,GAAT;IAAc6+T,QAAd;IAAwBL;EAAxB,CAAD,EAAsC;IAChD,KAAKy/B,wBAAL,GAAgCz/B,SAAS,CAAC72U,KAAV,EAAhC;IACA,KAAKmvI,aAAL,GAAqB;MAAE5iI,KAAF;MAAS8L,GAAT;MAAc6+T,QAAd;MAAwBL,SAAS,EAAEA,SAAS,CAAC72U,KAAV;IAAnC,CAArB;IACA,KAAK21F,GAAL,CAASgC,YAAT;EACH;;EACDu4E,MAAM,CAAC;IAAE3jK,KAAF;IAAS8L,GAAT;IAAcw+T;EAAd,CAAD,EAA4B;IAC9B,MAAMzjW,KAAK,GAAGgpW,cAAc,CAAC,KAAKk6B,wBAAN,EAAgCz/B,SAAhC,CAA5B;;IACA,IAAI,CAACzjW,KAAL,EAAY;MACR,OADQ,CACA;IACX;;IACD,KAAK+7J,aAAL,CAAmB5iI,KAAnB,GAA2BA,KAA3B;IACA,KAAK4iI,aAAL,CAAmB92H,GAAnB,GAAyBA,GAAzB;IACA,KAAKs9E,GAAL,CAASgC,YAAT;EACH;;EACD0pQ,SAAS,GAAG;IACR,KAAKiV,wBAAL,GAAgC,IAAhC;;IACA,IAAI,KAAKnnO,aAAT,EAAwB;MACpB,KAAK6mO,yBAAL,CAA+BhmS,IAA/B,CAAoC,KAAKm/D,aAAzC;IACH;EACJ;EACD;AACJ;AACA;AACA;;;EACItV,SAAS,CAACttH,KAAD,EAAQ8L,GAAR,EAAa;IAClB,IAAI,CAAC,KAAK82H,aAAV,EAAyB;MACrB;IACH;;IACD,OAAOgkF,UAAU,CAAC5mN,KAAD,EAAQ8L,GAAR,EAAa,KAAK82H,aAAL,CAAmB5iI,KAAhC,EAAuC,KAAK4iI,aAAL,CAAmB92H,GAA1D,CAAjB;EACH;;AAlFyB;;AAoF9By9V,uBAAuB,CAAClrb,IAAxB;EAAA,iBAAqHkrb,uBAArH,EAzne4G9yR,+DAyne5G,CAA8JmuQ,kBAA9J,GAzne4GnuQ,+DAyne5G,CAA6LA,4DAA7L;AAAA;;AACA8yR,uBAAuB,CAAC9mR,IAAxB,kBA1ne4GhM,+DA0ne5G;EAAA,MAAyG8yR,uBAAzG;EAAA;EAAA;IAAA;EAAA;EAAA;IAAA;EAAA;EAAA,WA1ne4G9yR,kEA0ne5G;AAAA;;AACA;EAAA,mDA3ne4GA,+DA2ne5G,CAA4F8yR,uBAA5F,EAAiI,CAAC;IACtHzqb,IAAI,EAAE63J,oDADgH;IAEtH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFgH,CAAD,CAAjI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE8la;IAAR,CAAD,EAA+B;MAAE9la,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAA/B,CAAP;EAAwE,CALlH,EAKoI;IAAEy+Q,aAAa,EAAE,CAAC;MACtIhrb,IAAI,EAAE+3J,gDAAKA;IAD2H,CAAD,CAAjB;IAEpH2yR,mBAAmB,EAAE,CAAC;MACtB1qb,IAAI,EAAEg4J,iDAAMA;IADU,CAAD;EAF+F,CALpI;AAAA;;AAWA,MAAMkzR,SAAS,GAAG,CACd/iC,2BADc,EAEdC,2BAFc,EAGdC,4BAHc,EAIdC,2BAJc,EAKdC,2BALc,EAMdC,sBANc,EAOd4E,2BAPc,EAQd73H,4BARc,EASdkzH,gCATc,EAUdC,gCAVc,EAWdC,6BAXc,EAYdC,yBAZc,CAAlB;AAcA,MAAM/0O,cAAc,GAAG,CACnBiyP,kBADmB,EAEnBghB,sBAFmB,EAGnB5qG,oBAHmB,EAInB4tG,kBAJmB,EAKnB3mG,wBALmB,EAMnBsnG,uBANmB,EAOnB31B,gCAPmB,EAQnB+J,yBARmB,EASnBpD,gCATmB,EAUnBpD,kCAVmB,EAWnBK,iCAXmB,EAYnBqB,sCAZmB,EAanBZ,oCAbmB,EAcnBoC,2BAdmB,EAenB9B,4BAfmB,EAgBnBzF,+BAhBmB,EAiBnBI,6BAjBmB,EAkBnBa,uBAlBmB,EAmBnBmK,mBAnBmB,EAoBnBuL,gCApBmB,EAqBnBv5L,0BArBmB,EAsBnBw4M,uCAtBmB,EAuBnBjrB,0CAvBmB,EAwBnBrwF,gBAxBmB,EAyBnB,GAAG48G,SAzBgB,CAAvB;AA2BA,MAAMC,gBAAgB,GAAG,CACrBtb,mBADqB,EAErBkM,eAFqB,EAGrB8K,kBAHqB,EAIrB1jG,wBAJqB,EAKrB2kG,kBALqB,EAMrBld,kBANqB,EAOrB,GAAG/2P,cAPkB,CAAzB;AASA,MAAMu3Q,oBAAoB,GAAG,CACzB/vQ,2EADyB,EAEzBggG,2EAFyB,EAGzB0oF,2EAHyB,EAIzB/oH,gFAJyB,EAKzBuQ,yEALyB,EAMzB6vB,iFANyB,EAOzBE,0EAPyB,EAQzB/G,+EARyB,EASzBI,gEATyB,EAUzBtpB,YAVyB,CAA7B;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMggM,eAAN,CAAsB;;AAEtBA,eAAe,CAAC9rb,IAAhB;EAAA,iBAA6G8rb,eAA7G;AAAA;;AACAA,eAAe,CAAC5gb,IAAhB,kBAtue4GktJ,8DAsue5G;EAAA,MAA8G0zR;AAA9G;AAwFAA,eAAe,CAAC1gb,IAAhB,kBA9ze4GgtJ,8DA8ze5G;EAAA,WAA0I,CAAC;IAC/HrtJ,OAAO,EAAEouL,sEADsH;IAE/HmJ,QAAQ,EAAEm4K,0EAAeA;EAFsG,CAAD,CAA1I;EAAA,UAGsB,CACVp+W,0DADU,EAEViva,aAFU,EAGViF,gBAHU,EAIV+W,kBAJU,EAKV/qQ,+EALU,EAMVigQ,eANU,EAOV+L,kBAPU,EAQV,GAAGsD,oBARO,CAHtB,EAYWrP,eAZX,EAaQ8K,kBAbR,EAcQiB,kBAdR;AAAA;;AAeA;EAAA,mDA70e4GnwR,+DA60e5G,CAA4F0zR,eAA5F,EAAyH,CAAC;IAC9Grrb,IAAI,EAAEvE,mDADwG;IAE9G0E,IAAI,EAAE,CAAC;MACC0K,OAAO,EAAE,CACLjP,0DADK,EAELiva,aAFK,EAGLiF,gBAHK,EAIL+W,kBAJK,EAKL/qQ,+EALK,EAMLigQ,eANK,EAOL+L,kBAPK,EAQL,GAAGsD,oBARE,CADV;MAWCtgb,YAAY,EAAE+oK,cAXf;MAYCxN,OAAO,EAAE8kR,gBAZV;MAaC9gb,SAAS,EAAE,CAAC;QACJC,OAAO,EAAEouL,sEADL;QAEJmJ,QAAQ,EAAEm4K,0EAAeA;MAFrB,CAAD;IAbZ,CAAD;EAFwG,CAAD,CAAzH;AAAA;;AAsBA,MAAMsxE,YAAY,GAAG,CACjB,uBADiB,EAEjB,oBAFiB,EAGjB,iBAHiB,EAIjB,eAJiB,EAKjB,aALiB,EAMjB,UANiB,CAArB;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAN,CAAsB;EAClB;AACJ;AACA;AACA;AACA;EACI7tb,WAAW,CAAC0kG,MAAD,EAAS;IAChB;AACR;AACA;IACQ,KAAK3jF,IAAL,GAAY,EAAZ;IACA;AACR;AACA;;IACQ,KAAKD,MAAL,GAAc,IAAIhiB,iDAAJ,CAAoB,EAApB,CAAd;IACA,KAAKgvb,YAAL,GAAoB,EAApB;IACA,KAAKC,YAAL,GAAoB,EAApB;IACA,KAAKC,YAAL,GAAoB,EAApB;IACA,KAAKh4W,MAAL,GAAc,KAAKl1D,MAAL,CAAY7d,YAAZ,EAAd;IACA,KAAKyhG,MAAL,GAAcr/F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBkrZ,kBAAlB,CAAd,EAAqD9rT,MAArD,CAAd;IACA,KAAKupV,KAAL,GAAax+M,MAAM,CAAC,KAAK/qI,MAAL,CAAYz3E,EAAb,CAAnB;IACA,KAAKiha,eAAL,GAAuBz+M,MAAM,CAAC,KAAK/qI,MAAL,CAAYgpT,YAAb,CAA7B;IACA,KAAKygC,iBAAL,GAAyB1+M,MAAM,CAAC,KAAK/qI,MAAL,CAAYipT,cAAb,CAA/B;IACA,KAAKygC,uBAAL,GAA+B3+M,MAAM,CAAC,KAAK/qI,MAAL,CAAY0pT,oBAAb,CAArC;IACA,KAAKigC,QAAL,GAAgB5+M,MAAM,CAAC,KAAK/qI,MAAL,CAAYlhB,KAAb,CAAtB;IACA,KAAK8qW,KAAL,GAAax+O,MAAM,CAAC,KAAKprG,MAAL,CAAYz3E,EAAb,CAAnB;IACA,KAAKsha,iBAAL,GAAyBz+O,MAAM,CAAC,KAAKprG,MAAL,CAAYipT,cAAb,CAA/B;IACA,KAAK6gC,uBAAL,GAA+B1+O,MAAM,CAAC,KAAKprG,MAAL,CAAY0pT,oBAAb,CAArC;IACA,KAAKqgC,eAAL,GAAuB3+O,MAAM,CAAC,KAAKprG,MAAL,CAAYgpT,YAAb,CAA7B;EACH;;EACD//Y,MAAM,CAAC2S,KAAD,EAAQ;IACV,KAAKoua,SAAL,CAAepua,KAAf;IACA,KAAKqua,WAAL;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIrE,eAAe,CAAChqa,KAAD,EAAQ5c,KAAR,EAAe;IAC1B,MAAM4/E,SAAS,GAAG,KAAKinW,cAAL,CAAoB7mb,KAApB,CAAlB;IACA,KAAKkrb,mBAAL,CAAyBtua,KAAzB;IACA,KAAKoua,SAAL,CAAeprW,SAAf;IACA,KAAKqrW,WAAL;EACH;;EACD/pU,MAAM,CAACtkG,KAAD,EAAQ5c,KAAR,EAAe;IACjB,KAAKwgV,YAAL,CAAkB5jU,KAAlB,EAAyB5c,KAAzB;IACA,KAAKmrb,SAAL,CAAevua,KAAf;IACA,KAAKqua,WAAL;EACH;;EACD5rU,MAAM,CAACziG,KAAD,EAAQ;IACV,KAAKwua,SAAL,CAAexua,KAAf;IACA,KAAKqua,WAAL;EACH;;EACDlE,YAAY,CAACnqa,KAAD,EAAQ;IAChB,MAAM2M,EAAE,GAAG,KAAKgha,KAAL,CAAW3ta,KAAX,CAAX;IACA,MAAMotY,YAAY,GAAG,KAAKwgC,eAAL,CAAqB5ta,KAArB,CAArB;IACA,MAAMoqa,MAAM,GAAG,KAAKqE,gBAAL,CAAsBzua,KAAtB,CAAf;IACA,KAAKqqa,uBAAL,CAA6BD,MAAM,GAAGz9Z,EAAH,GAAQygY,YAA3C;IACA,KAAKihC,WAAL;EACH;;EACD/D,gBAAgB,CAACtqa,KAAD,EAAQ;IACpB,KAAKsua,mBAAL,CAAyBtua,KAAzB;IACA,KAAKqua,WAAL;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACI9D,oBAAoB,CAACvqa,KAAD,EAAQ;IACxB,MAAM2M,EAAE,GAAG,KAAKgha,KAAL,CAAW3ta,KAAX,CAAX;IACA,MAAMotY,YAAY,GAAG,KAAKwgC,eAAL,CAAqB5ta,KAArB,CAArB;IACA,MAAMwqa,MAAM,GAAG,KAAKiE,gBAAL,CAAsBzua,KAAtB,IAA+B2M,EAA/B,GAAoCygY,YAAnD;IACA,MAAM1nY,KAAK,GAAG,KAAK4qM,SAAL,CAAek6N,MAAf,EAAuB,KAAK/pa,IAA5B,CAAd;IACA,OAAO,KAAKA,IAAL,CAAUiF,KAAV,CAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACIynY,WAAW,CAACntY,KAAD,EAAQ;IACf,OAAOmtY,WAAW,CAACntY,KAAD,EAAQ,KAAKokF,MAAb,CAAlB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACIkpT,WAAW,CAACttY,KAAD,EAAQ;IACf,OAAOstY,WAAW,CAACttY,KAAD,EAAQ,KAAKokF,MAAb,CAAlB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI8jM,KAAK,CAACloR,KAAD,EAAQ;IACT,MAAM2M,EAAE,GAAG,KAAKgha,KAAL,CAAW3ta,KAAX,CAAX;IACA,OAAO,CAAC0iF,SAAS,CAAC/1E,EAAD,CAAjB;EACH;EACD;AACJ;AACA;AACA;;;EACIu3G,MAAM,GAAG;IACL,OAAOjiI,SAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2hV,YAAY,CAACtyT,MAAD,EAAS9Q,MAAT,EAAiB;IACzB4tY,OAAO,CAAC5tY,MAAD,EAAS8Q,MAAT,CAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIo9Z,UAAU,CAAC1ua,KAAD,EAAQ;IACd,MAAM/X,MAAM,GAAG,EAAf;IACA,KAAK27U,YAAL,CAAkB37U,MAAlB,EAA0B+X,KAA1B;IACA,OAAO/X,MAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI0mb,eAAe,CAACvrb,KAAD,EAAQ;IACnB,IAAI,CAACs/F,SAAS,CAACt/F,KAAD,CAAV,IAAqBA,KAAK,KAAK,EAAnC,EAAuC;MACnC,OAAO,EAAP;IACH;;IACD,OAAOA,KAAK,CACPrD,KADE,CACI,GADJ,EAEFnB,GAFE,CAEE8yG,EAAE,IAAI4tH,wEAAS,CAAC5tH,EAAD,EAAK47U,YAAL,CAAT,IAA+Brrb,SAFvC,CAAP;EAGH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2sb,mBAAmB,CAACr9U,UAAD,EAAa;IAC5B,IAAI,CAACA,UAAD,IAAeA,UAAU,CAACltG,MAAX,KAAsB,CAAzC,EAA4C;MACxC,OAAO,EAAP;IACH;;IACD,OAAOktG,UAAU,CAAC3yG,GAAX,CAAe+6H,IAAI,IAAI8/E,yEAAU,CAACkuM,uEAAW,CAAChuR,IAAD,CAAZ,EAAoB,iBAApB,CAAV,GAAmD,GAA1E,EAA+E/+F,IAA/E,CAAoF,GAApF,CAAP;EACH;;EACDuwE,KAAK,GAAG;IACJ,KAAK1qF,IAAL,GAAY,EAAZ;IACA,KAAKita,YAAL,GAAoB,EAApB;IACA,KAAKD,YAAL,GAAoB,EAApB;IACA,KAAKD,YAAL,GAAoB,EAApB;EACH;;EACDl9N,SAAS,CAAC3jM,EAAD,EAAK+iF,KAAL,EAAY;IACjB,KAAK,IAAIsS,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGtS,KAAK,CAACrrG,MAA9B,EAAsC29G,GAAG,EAAzC,EAA6C;MACzC,IAAI,KAAK2rU,KAAL,CAAWj+U,KAAK,CAACsS,GAAD,CAAhB,MAA2Br1F,EAA/B,EAAmC;QAC/B,OAAOq1F,GAAP;MACH;IACJ;;IACD,OAAO,CAAC,CAAR;EACH;;EACDioU,cAAc,CAAChoa,IAAD,EAAO;IACjB,MAAMmiF,MAAM,GAAG,KAAKA,MAApB;IACA,MAAM8pL,IAAI,GAAG,KAAKq8J,oBAAL,CAA0Btoa,IAA1B,CAAb;IACA,MAAM4sa,IAAI,GAAG,KAAKH,UAAL,CAAgBzsa,IAAhB,CAAb;IACAwrY,WAAW,CAACohC,IAAD,EAAO3gK,IAAP,EAAa9pL,MAAM,CAACz3E,EAApB,CAAX;IACA,KAAKqha,KAAL,CAAWa,IAAX,EAAiB,KAAK3qT,MAAL,EAAjB;IACA,KAAK+pT,iBAAL,CAAuBY,IAAvB,EAA6B5sb,SAA7B;IACA,KAAKksb,eAAL,CAAqBU,IAArB,EAA2B,KAAKlB,KAAL,CAAWz/J,IAAX,CAA3B;IACA,OAAO2gK,IAAP;EACH;;EACDJ,gBAAgB,CAACxsa,IAAD,EAAO;IACnB,MAAM0K,EAAE,GAAG,KAAKgha,KAAL,CAAW1ra,IAAX,CAAX;IACA,MAAMorY,cAAc,GAAG,KAAKwgC,iBAAL,CAAuB5ra,IAAvB,CAAvB;IACA,OAAO,CAAC,EAAE0K,EAAE,IAAI0gY,cAAR,CAAR;EACH;;EACD+gC,SAAS,CAACnsa,IAAD,EAAO;IACZ,KAAKxB,IAAL,GAAY,CAAC,GAAG,KAAKA,IAAT,EAAewB,IAAf,CAAZ;IACA,KAAKzB,MAAL,CAAYvd,IAAZ,CAAiB,KAAKwd,IAAtB;IACA,KAAK+sa,YAAL,CAAkBhkb,IAAlB,CAAuByY,IAAvB;EACH;;EACDssa,SAAS,CAACtsa,IAAD,EAAO;IACZ,MAAM0K,EAAE,GAAG,KAAKgha,KAAL,CAAW1ra,IAAX,CAAX;;IACA,IAAI,CAAC,KAAKimR,KAAL,CAAWjmR,IAAX,CAAL,EAAuB;MACnB,MAAMyD,KAAK,GAAG,KAAK4qM,SAAL,CAAe3jM,EAAf,EAAmB,KAAK8ga,YAAxB,CAAd;;MACA,IAAI/na,KAAK,KAAK,CAAC,CAAf,EAAkB;QACd,KAAK+na,YAAL,CAAkB16V,MAAlB,CAAyBrtE,KAAzB,EAAgC,CAAhC,EAAmCzD,IAAnC;MACH,CAFD,MAGK;QACD,KAAKwra,YAAL,CAAkBjkb,IAAlB,CAAuByY,IAAvB;MACH;IACJ,CARD,MASK;MACD,MAAMyD,KAAK,GAAG,KAAK8na,YAAL,CAAkB9mb,OAAlB,CAA0Bub,IAA1B,CAAd;MACA,KAAKura,YAAL,CAAkBz6V,MAAlB,CAAyBrtE,KAAzB,EAAgC,CAAhC,EAAmCzD,IAAnC;IACH;EACJ;;EACDusa,SAAS,CAACvsa,IAAD,EAAO;IACZ,MAAM0K,EAAE,GAAG,KAAKgha,KAAL,CAAW1ra,IAAX,CAAX;IACA,IAAIyD,KAAK,GAAG,KAAK4qM,SAAL,CAAe3jM,EAAf,EAAmB,KAAKlM,IAAxB,CAAZ;IACA,KAAKA,IAAL,GAAY,KAAKA,IAAL,CAAUhG,MAAV,CAAiB,CAAC1K,CAAD,EAAIlB,CAAJ,KAAUA,CAAC,KAAK6W,KAAjC,CAAZ;IACA,KAAKlF,MAAL,CAAYvd,IAAZ,CAAiB,KAAKwd,IAAtB;IACAiF,KAAK,GAAG,KAAK4qM,SAAL,CAAe3jM,EAAf,EAAmB,KAAK6ga,YAAxB,CAAR;;IACA,IAAI9na,KAAK,IAAI,CAAb,EAAgB;MACZ,KAAK8na,YAAL,CAAkBz6V,MAAlB,CAAyBrtE,KAAzB,EAAgC,CAAhC;IACH,CAFD,MAGK;MACD,KAAKgoa,YAAL,CAAkBlkb,IAAlB,CAAuByY,IAAvB;IACH;;IACDyD,KAAK,GAAG,KAAK4qM,SAAL,CAAe3jM,EAAf,EAAmB,KAAK8ga,YAAxB,CAAR;;IACA,IAAI/na,KAAK,IAAI,CAAb,EAAgB;MACZ,KAAK+na,YAAL,CAAkB16V,MAAlB,CAAyBrtE,KAAzB,EAAgC,CAAhC;IACH;EACJ;;EACD4oa,mBAAmB,CAACtua,KAAD,EAAQ;IACvB,MAAMkuQ,IAAI,GAAG,KAAKq8J,oBAAL,CAA0Bvqa,KAA1B,CAAb;IACA,MAAMyqa,aAAa,GAAG,KAAKsD,QAAL,CAAc/ta,KAAd,CAAtB;IACA,MAAM0qa,iBAAiB,GAAG,KAAKoD,uBAAL,CAA6B5/J,IAA7B,KAAsC,EAAhE;IACA,KAAKggK,uBAAL,CAA6BhgK,IAA7B,EAAmC,CAAC,GAAGw8J,iBAAJ,EAAuBD,aAAvB,CAAnC;IACA,KAAK8D,SAAL,CAAergK,IAAf;EACH;;EACDm8J,uBAAuB,CAAC3iL,MAAD,EAAS;IAC5B,KAAKgmL,YAAL,GAAoB,KAAKA,YAAL,CAAkBv8a,MAAlB,CAAyB,KAAKsP,IAAL,CAAUhG,MAAV,CAAiBgoO,EAAE,IAAI,KAAKmrM,eAAL,CAAqBnrM,EAArB,MAA6BilB,MAA7B,IAAuC,KAAKimL,KAAL,CAAWlrM,EAAX,MAAmBilB,MAAjF,CAAzB,CAApB;EACH;;EACD6wB,UAAU,GAAG;IACT,OAAO,KAAKm1J,YAAL,CAAkBrpb,MAAlB,GAA2B,KAAKopb,YAAL,CAAkBppb,MAA7C,GAAsD,KAAKmpb,YAAL,CAAkBnpb,MAAxE,GAAiF,CAAxF;EACH;;EACDgqb,WAAW,GAAG;IACV,IAAI,CAAC,KAAK91J,UAAL,EAAL,EAAwB;MACpB;IACH;;IACD,KAAKvB,IAAL,CAAU,KAAKw2J,YAAf,EAA6B,KAAKC,YAAlC,EAAgD,KAAKC,YAArD;IACA,KAAKviV,KAAL;EACH;;AA/QiB;;AAkRtB,MAAM/gG,aAAa,GAAG,CAACs4J,OAAD,EAAUphB,SAAV,KAAwB;EAC1C,MAAMsb,OAAO,GAAG34J,QAAQ,CAACmG,aAAT,CAAuBs4J,OAAvB,CAAhB;;EACA,IAAIphB,SAAJ,EAAe;IACXsb,OAAO,CAACtb,SAAR,GAAoBA,SAApB;EACH;;EACD,OAAOsb,OAAP;AACH,CAND;;AAOA,MAAM4rL,SAAS,GAAIlnM,SAAD,IAAel3I,aAAa,CAAC,KAAD,EAAQk3I,SAAR,CAA9C;AACA;AACA;AACA;;;AACA,MAAMmnM,YAAN,CAAmB;EACf/oV,WAAW,CAACmsU,UAAD,EAAazsK,MAAb,EAAqB;IAC5B,KAAKysK,UAAL,GAAkBA,UAAlB;IACA,KAAKzsK,MAAL,GAAcA,MAAd;IACA;AACR;AACA;AACA;;IACQ,KAAKr9D,OAAL,GAAe,wBAAf;IACA,KAAK01E,aAAL,GAAqB,KAAKo0J,UAAL,CAAgBskF,YAAhB,CAA6BvsZ,SAA7B,CAAuC,KAAKwG,aAAL,CAAmB8U,IAAnB,CAAwB,IAAxB,CAAvC,CAArB;IACA,KAAK26X,WAAL,GAAmB,KAAKA,WAAL,CAAiB36X,IAAjB,CAAsB,IAAtB,CAAnB;IACA,KAAKw6X,WAAL,GAAmB,KAAKA,WAAL,CAAiBx6X,IAAjB,CAAsB,IAAtB,CAAnB;IACA,KAAKvP,IAAL,GAAY,KAAKA,IAAL,CAAUuP,IAAV,CAAe,IAAf,CAAZ;EACH;;EACDykJ,WAAW,GAAG;IACV,KAAK8T,aAAL,CAAmB1T,WAAnB;EACH;;EACc,IAAX6lL,WAAW,GAAG;IACd,OAAO;MACHC,YAAY,EAAE,IADX;MAEHowD,UAAU,EAAE,KAAKA,UAFd;MAGHhzN,MAAM,EAAE,KAAKA,MAHV;MAIHs5D,KAAK,EAAE,KAAKA;IAJT,CAAP;EAMH;;EACa,IAAVo5J,UAAU,GAAG;IACb,OAAO;MACHa,MAAM,EAAE,KAAKA,MADV;MAEHz4S,OAAO,EAAE,KAAKA,OAFX;MAGH43B,IAAI,EAAE,KAAKA,IAHR;MAIH8gR,MAAM,EAAE,KAAKC,eAJV;MAKHC,QAAQ,EAAE,KAAKA,QALZ;MAMH1zN,MAAM,EAAE,KAAKA,MANV;MAOH4zN,QAAQ,EAAE,KAAKA,QAPZ;MAQH1tL,OAAO,EAAE,KAAKA,OARX;MASHl+K,KAAK,EAAE,KAAKA;IATT,CAAP;EAWH;;EACc,IAAX6qW,WAAW,GAAG;IACd,OAAO;MACHziH,UAAU,EAAE,KAAKA,UADd;MAEHyjH,SAAS,EAAE,KAAKA,SAFb;MAGHC,WAAW,EAAE,KAAKA,WAHf;MAIHzjH,QAAQ,EAAE,KAAKA;IAJZ,CAAP;EAMH;;EACDltR,aAAa,CAACjI,IAAD,EAAO;IAChB,KAAKi9J,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;MAChC,MAAMpG,SAAS,GAAG,KAAKA,SAAL,GAAiB8rL,SAAS,EAA5C;MACA9rL,SAAS,CAACtgH,KAAV,CAAgB1H,GAAhB,GAAsBgoH,SAAS,CAACtgH,KAAV,CAAgBxH,IAAhB,GAAuB,UAA7C;MACA8nH,SAAS,CAACtgH,KAAV,CAAgBE,QAAhB,GAA2B,UAA3B;MACA,MAAMwwH,OAAO,GAAG07K,SAAS,CAAC,kCAAD,CAAzB;MACA17K,OAAO,CAAC1wH,KAAR,CAAcE,QAAd,GAAyB,UAAzB;MACAwwH,OAAO,CAACrwH,WAAR,CAAoBt6C,IAAI,CAACy6J,OAAzB;MACAF,SAAS,CAACjgH,WAAV,CAAsBqwH,OAAtB;MACA7oK,QAAQ,CAAC6L,IAAT,CAAc2sC,WAAd,CAA0BigH,SAA1B;MACA,KAAKs6H,IAAL,CAAUlqH,OAAV;IACH,CAVD;EAWH;;EACDkqH,IAAI,CAACp6H,OAAD,EAAU;IACV,KAAKm9O,WAAL,CAAiBn9O,OAAjB,EAA0B,KAAKgtL,WAA/B,EACKh6U,IADL,CACU,KAAK8pY,WADf,EAEK9pY,IAFL,CAEU,KAAKiqY,WAFf,EAGKjqY,IAHL,CAGU,KAAKD,IAHf,EAGqB,KAAKA,IAH1B;EAIH;;EACDoqY,WAAW,CAACn9O,OAAD,EAAUzvJ,OAAV,EAAmB;IAC1B,OAAO0qR,iEAAO,CAACj7H,OAAD,EAAUzvJ,OAAV,CAAd;EACH;;EACDusY,WAAW,CAACtlJ,KAAD,EAAQ;IACf,OAAOklJ,mEAAS,CAACllJ,KAAD,EAAQ,KAAKulJ,UAAb,CAAhB;EACH;;EACDE,WAAW,CAACD,OAAD,EAAU;IACjBvlH,kEAAM,CAACulH,OAAD,EAAU,KAAK7nS,QAAf,EAAyB,KAAK+nS,WAA9B,CAAN;EACH;;EACDnqY,IAAI,GAAG;IACH,IAAI,KAAK+sJ,SAAT,EAAoB;MAChBz4J,QAAQ,CAAC6L,IAAT,CAAc6sC,WAAd,CAA0B,KAAK+/G,SAA/B;MACA,KAAKA,SAAL,GAAiB,IAAjB;IACH;;IACD,KAAKmvK,UAAL,CAAgBl8T,IAAhB,CAAqBg3I,IAArB;EACH;;AAhFc;;AAkFnB8hM,YAAY,CAAClnV,IAAb;EAAA,iBAA0GknV,YAA1G,EAzuf4G9uL,+DAyuf5G,CAAwI4lJ,UAAxI,GAzuf4G5lJ,+DAyuf5G,CAA+JA,iDAA/J;AAAA;;AACA8uL,YAAY,CAACp9U,IAAb,kBA1uf4GsuJ,+DA0uf5G;EAAA,MAA8F8uL,YAA9F;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;;AACA;EAAA,mDA3uf4G9uL,+DA2uf5G,CAA4F8uL,YAA5F,EAAsH,CAAC;IAC3GzmV,IAAI,EAAExE,oDADqG;IAE3G2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,qBADX;MAECL,QAAQ,EAAE;IAFX,CAAD;EAFqG,CAAD,CAAtH,EAM4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEu9S;IAAR,CAAD,EAAuB;MAAEv9S,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAvB,CAAP;EAAqD,CAN/F,EAMiH;IAAE80O,MAAM,EAAE,CAAC;MAC5Gx4Y,IAAI,EAAE+3J,gDAAKA;IADiG,CAAD,CAAV;IAEjGkgP,UAAU,EAAE,CAAC;MACbj4Y,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAFqF;IAIjGh4D,OAAO,EAAE,CAAC;MACV//F,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CAJwF;IAMjGpgC,IAAI,EAAE,CAAC;MACP33H,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAN2F;IAQjG2gP,eAAe,EAAE,CAAC;MAClB14Y,IAAI,EAAE+3J,gDAAKA;IADO,CAAD,CARgF;IAUjGhoD,QAAQ,EAAE,CAAC;MACX/vG,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAVuF;IAYjGs9H,UAAU,EAAE,CAAC;MACbr1R,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAZqF;IAcjG4gP,QAAQ,EAAE,CAAC;MACX34Y,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAduF;IAgBjGktB,MAAM,EAAE,CAAC;MACTjlL,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CAhByF;IAkBjGwmF,KAAK,EAAE,CAAC;MACRv+O,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAlB0F;IAoBjG+gP,SAAS,EAAE,CAAC;MACZ94Y,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CApBsF;IAsBjGu9H,QAAQ,EAAE,CAAC;MACXt1R,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAtBuF;IAwBjGghP,WAAW,EAAE,CAAC;MACd/4Y,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CAxBoF;IA0BjG8gP,QAAQ,EAAE,CAAC;MACX74Y,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CA1BuF;IA4BjGozD,OAAO,EAAE,CAAC;MACVnrN,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CA5BwF;IA8BjG9qH,KAAK,EAAE,CAAC;MACRjtC,IAAI,EAAE+3J,gDAAKA;IADH,CAAD;EA9B0F,CANjH;AAAA;AAwCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMowL,mBAAN,SAAkC7sK,oEAAlC,CAAyC;EACrC59K,WAAW,CAACmsU,UAAD,EAAajvK,OAAb,EAAsBqC,QAAtB,EAAgCE,YAAhC,EAA8CC,MAA9C,EAAsD;IAC7D,MAAMxC,OAAN,EAAeqC,QAAf,EAAyB,IAAzB,EAA+BE,YAA/B,EAA6CC,MAA7C;IACA,KAAKysK,UAAL,GAAkBA,UAAlB;EACH;EACD;AACJ;AACA;;;EACIjiK,OAAO,CAACn6J,CAAD,EAAI;IACPA,CAAC,CAACulC,cAAF;IACA,KAAK62R,UAAL,CAAgBnsB,WAAhB,CAA4B/4J,IAA5B;EACH;;EACDz7I,QAAQ,GAAG;IACP,KAAKs1J,IAAL,GAAY,KAAZ;EACH;;AAdoC;;AAgBzC2pL,mBAAmB,CAAC5oV,IAApB;EAAA,iBAAiH4oV,mBAAjH,EAzzf4GxwL,+DAyzf5G,CAAsJ4lJ,UAAtJ,GAzzf4G5lJ,+DAyzf5G,CAA6KA,qDAA7K,GAzzf4GA,+DAyzf5G,CAAuMA,oDAAvM,GAzzf4GA,+DAyzf5G,CAAgOsyC,8EAAhO,GAzzf4GtyC,+DAyzf5G,CAAqQA,iDAArQ;AAAA;;AACAwwL,mBAAmB,CAACxkL,IAApB,kBA1zf4GhM,+DA0zf5G;EAAA,MAAqGwwL,mBAArG;EAAA;EAAA;IAAA;MA1zf4GxwL,wDA0zf5G;QAAA,OAAqG,mBAArG;MAAA;IAAA;EAAA;EAAA,WA1zf4GA,wEA0zf5G;AAAA;;AACA;EAAA,mDA3zf4GA,+DA2zf5G,CAA4FwwL,mBAA5F,EAA6H,CAAC;IAClHnoV,IAAI,EAAE63J,oDAD4G;IAElH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAF4G,CAAD,CAA7H,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAEu9S;IAAR,CAAD,EAAuB;MAAEv9S,IAAI,EAAE23J,qDAAaW;IAArB,CAAvB,EAAgD;MAAEt4J,IAAI,EAAE23J,oDAAY8L;IAApB,CAAhD,EAAwE;MAAEzjK,IAAI,EAAEiqM,8EAAwBhxC;IAAhC,CAAxE,EAA4G;MAAEj5J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA5G,CAAP;EAA0I,CALpL,EAKsM;IAAEkE,OAAO,EAAE,CAAC;MAClM5nK,IAAI,EAAEk4J,uDAD4L;MAElM/3J,IAAI,EAAE,CAAC,OAAD,EAAU,CAAC,QAAD,CAAV;IAF4L,CAAD;EAAX,CALtM;AAAA;;AAUA,MAAM2K,YAAY,GAAG,CACjB27U,YADiB,EAEjB0B,mBAFiB,CAArB;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAME,SAAN,CAAgB;;AAEhBA,SAAS,CAAC9oV,IAAV;EAAA,iBAAuG8oV,SAAvG;AAAA;;AACAA,SAAS,CAAC59U,IAAV,kBA32f4GktJ,8DA22f5G;EAAA,MAAwG0wL;AAAxG;AAGAA,SAAS,CAAC19U,IAAV,kBA92f4GgtJ,8DA82f5G;;AACA;EAAA,mDA/2f4GA,+DA+2f5G,CAA4F0wL,SAA5F,EAAmH,CAAC;IACxGroV,IAAI,EAAEvE,mDADkG;IAExG0E,IAAI,EAAE,CAAC;MACC2K,YAAY,EAAE,CAACA,YAAD,CADf;MAECu7J,OAAO,EAAE,CAACv7J,YAAD;IAFV,CAAD;EAFkG,CAAD,CAAnH;AAAA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpwgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;IAqBkG6sJ,qEA8gB1F;IA9gB0FA,wDA+gBtF;IA/gBsFA,mEAghB1F;;;;mBAhhB0FA;IAAAA,uDA+gBzE;IA/gByEA,wDA+gBzE;;;;;;;;IA/gByEA,qEAihB1F;IAjhB0FA,wDAkhBtF;IAlhBsFA,mEAmhB1F;;;;mBAnhB0FA;IAAAA,uDAkhBzE;IAlhByEA,wDAkhBzE;;;;;;;;;;;;;iBAlhByEA;;IAAAA,qEAwiC1F;IAxiC0FA,4DAyiCtF;IAziCsFA,wDA2iClF;MA3iCkFA,2DA2iClF;MAAA,eA3iCkFA,2DA2iClF;MAAA,OA3iCkFA,yDA2iCjE,gCAAjB;IAAA;IA3iCkFA,0DA+iCrF;IA/iCqFA,mEAgjC1F;;;;;mBAhjC0FA;IAAAA,uDA4iClF;IA5iCkFA,wDA4iClF;;;;;;iBA5iCkFA;;IAAAA,4DAijC1F;IAjjC0FA,wDA0jCtF;MA1jCsFA,2DA0jCtF;MAAA,gBA1jCsFA,2DA0jCtF;MAAA,OA1jCsFA,yDA0jC7E,qBAAT;IAAA;IA1jCsFA,uDA4jCtF;IA5jCsFA,0DA6jC1F;;;;mBA7jC0FA;IAAAA,yDAwjCtF;IAxjCsFA,wDAqjCtF;IArjCsFA,yDAsjCtF;;;;;;iBAtjCsFA;;IAAAA,qEAgkClF;IAhkCkFA,4DAikC9E;IAjkC8EA,wDAokCtE;MApkCsEA,2DAokCtE;MAAA,gBApkCsEA,2DAokCtE;MAAA,OApkCsEA,yDAokCrD,iCAAjB;IAAA;IApkCsEA,0DAwkCzE;IAxkCyEA,mEA0kClF;;;;;oBA1kCkFA;IAAAA,uDAqkCtE;IArkCsEA,wDAqkCtE;;;;;;IArkCsEA,4DA+jCtF;IA/jCsFA,wDAgkClF;IAhkCkFA,0DA2kCtF;;;;mBA3kCsFA;IAAAA,uDAgkCnD;IAhkCmDA,wDAgkCnD;;;;;;IAhkCmDA,uDA8kC1F;;;;;;;;;gBA9kC0FA;;IAAAA,4DA+2CtF;IA/2CsFA,wDA+3ClF;MA/3CkFA,2DA+3ClF;MAAA,eA/3CkFA,2DA+3ClF;MAAA,OA/3CkFA,yDA+3CzE,2BAAT;IAAA;MA/3CkFA,2DA+3ClF;MAAA,eA/3CkFA,2DA+3ClF;MAAA,OA/3CkFA,yDAg4CnE,iCADf;IAAA;MA/3CkFA,2DA+3ClF;MAAA,eA/3CkFA,2DA+3ClF;MAAA,OA/3CkFA,yDAi4ChE,oCAFlB;IAAA;MA/3CkFA,2DA+3ClF;MAAA,eA/3CkFA,2DA+3ClF;MAAA,OA/3CkFA,yDAk4C1E,iBAHR;IAAA;IA/3CkFA,oDAo4ClF;IAp4CkFA,0DAq4CtF;;;;mBAr4CsFA;IAAAA,wDAi3ClF;IAj3CkFA,yDAs3ClF;IAt3CkFA,uDAo4ClF;IAp4CkFA,gEAo4ClF;;;;;;iBAp4CkFA;;IAAAA,4DAw4CtF;IAx4CsFA,wDAy5ClF;MAz5CkFA,2DAy5ClF;MAAA,gBAz5CkFA,2DAy5ClF;MAAA,OAz5CkFA,yDAy5CzE,4BAAT;IAAA;MAz5CkFA,2DAy5ClF;MAAA,gBAz5CkFA,2DAy5ClF;MAAA,OAz5CkFA,yDA05ChE,qCADlB;IAAA;IAz5CkFA,oDA45ClF;IA55CkFA,0DA65CtF;;;;mBA75CsFA;IAAAA,wDA84ClF;IA94CkFA,yDAg5ClF;IAh5CkFA,uDA45ClF;IA55CkFA,gEA45ClF;;;;;;;;;gBA55CkFA;;IAAAA,4DAsnDlF;IAtnDkFA,wDAooD9E;MAAA,oBApoD8EA,2DAooD9E;MAAA;MAAA,eApoD8EA,2DAooD9E;MAAS,4BAAT;MAAA,OApoD8EA,yDAooD1C,8BAApC;IAAA;MAAA,oBApoD8EA,2DAooD9E;MAAA;MAAA,OApoD8EA,yDAqoD/D,oCADf;IAAA;MAAA,oBApoD8EA,2DAooD9E;MAAA;MAAA,gBApoD8EA,2DAooD9E;MAAA,OApoD8EA,yDAsoD5D,kDAFlB;IAAA;IApoD8EA,oDAwoD9E;IAxoD8EA,0DAyoDlF;;;;;IAzoDkFA,wDAynD9E;IAznD8EA,yDA2nD9E;IA3nD8EA,uDAwoD9E;IAxoD8EA,gEAwoD9E;;;;;;iBAxoD8EA;;IAAAA,4DA6mDtF;IA7mDsFA,wDAmnDlF;MAnnDkFA,2DAmnDlF;MAAA,gBAnnDkFA,2DAmnDlF;MAAA,OAnnDkFA,yDAmnDtE,4BAAZ;IAAA;MAnnDkFA,2DAmnDlF;MAAA,gBAnnDkFA,2DAmnDlF;MAAA,OAnnDkFA,yDAonDzE,mBADT;IAAA;IAnnDkFA,wDAsnDlF;IAtnDkFA,0DA0oDtF;;;;mBA1oDsFA;IAAAA,wDA+mDlF;IA/mDkFA,uDAwnD3D;IAxnD2DA,wDAwnD3D;;;;;;iBAxnD2DA;;IAAAA,4DAqpDlF;IArpDkFA,wDAoqD9E;MAAA,oBApqD8EA,2DAoqD9E;MAAA;MAAA,gBApqD8EA,2DAoqD9E;MAAS,6BAAT;MAAA,OApqD8EA,yDAoqD1C,+BAApC;IAAA;MAAA,oBApqD8EA,2DAoqD9E;MAAA;MAAA,gBApqD8EA,2DAoqD9E;MAAA,OApqD8EA,yDAqqD5D,mDADlB;IAAA;IApqD8EA,oDAuqD9E;IAvqD8EA,0DAwqDlF;;;;;IAxqDkFA,wDAypD9E;IAzpD8EA,yDA2pD9E;IA3pD8EA,uDAuqD9E;IAvqD8EA,gEAuqD9E;;;;;;IAvqD8EA,4DA6oDtF;IA7oDsFA,wDAqpDlF;IArpDkFA,0DAyqDtF;;;;mBAzqDsFA;IAAAA,wDAgpDlF;IAhpDkFA,uDAwpD3D;IAxpD2DA,wDAwpD3D;;;;;;;;gBAxpD2DA;;IAAAA,4DAuyD1F;IAvyD0FA,wDAqzDtF;MAAA,oBArzDsFA,2DAqzDtF;MAAA;MAAA;MAAA,eArzDsFA,2DAqzDtF;MAAA,OArzDsFA,yDAqzD7E,+BAAT;IAAA;IArzDsFA,oDAuzDtF;IAvzDsFA,0DAwzD1F;;;;;mBAxzD0FA;IAAAA,wDA+yDtF;IA/yDsFA,uDAuzDtF;IAvzDsFA,gEAuzDtF;;;;;;;;;;gBAvzDsFA;;IAAAA,4DAgjEtF;IAhjEsFA,wDA6jElF;MA7jEkFA,2DA6jElF;MAAA,eA7jEkFA,2DA6jElF;MAAA,OA7jEkFA,yDA6jE1E,0BAAR;IAAA;MA7jEkFA,2DA6jElF;MAAA,eA7jEkFA,2DA6jElF;MAAA,OA7jEkFA,yDA8jEzE,2BADT;IAAA;MA7jEkFA,2DA6jElF;MAAA,eA7jEkFA,2DA6jElF;MAAA,OA7jEkFA,yDA+jErE,+BAFb;IAAA;IA7jEkFA,oDAikElF;IAjkEkFA,0DAkkEtF;;;;mBAlkEsFA;IAAAA,wDAkjElF;IAljEkFA,uDAikElF;IAjkEkFA,gEAikElF;;;;;;iBAjkEkFA;;IAAAA,4DAqkEtF;IArkEsFA,wDA+kElF;MA/kEkFA,2DA+kElF;MAAA,gBA/kEkFA,2DA+kElF;MAAA,OA/kEkFA,yDA+kEzE,gCAAT;IAAA;IA/kEkFA,oDAilElF;IAjlEkFA,0DAklEtF;IAllEsFA,4DAmlEtF;IAnlEsFA,wDAwlElF;MAxlEkFA,2DAwlElF;MAAA,gBAxlEkFA,2DAwlElF;MAAA,OAxlEkFA,yDAwlErE,gCAAb;IAAA;MAxlEkFA,2DAwlElF;MAAA,gBAxlEkFA,2DAwlElF;MAAA,OAxlEkFA,yDAylEzE,mCADT;IAAA;IAxlEkFA,0DA2lEtF;;;;mBA3lEsFA;IAAAA,wDA0kElF;IA1kEkFA,uDAilElF;IAjlEkFA,gEAilElF;IAjlEkFA,uDAqlElF;IArlEkFA,wDAqlElF;;;;;;;;;;gBArlEkFA;;IAAAA,4DAs6EtF;IAt6EsFA,wDAs7ElF;MAt7EkFA,2DAs7ElF;MAAA,eAt7EkFA,2DAs7ElF;MAAA,OAt7EkFA,yDAs7EnE,iCAAf;IAAA;MAt7EkFA,2DAs7ElF;MAAA,eAt7EkFA,2DAs7ElF;MAAA,OAt7EkFA,yDAu7E1E,0BADR;IAAA;MAt7EkFA,2DAs7ElF;MAAA,eAt7EkFA,2DAs7ElF;MAAA,OAt7EkFA,yDAw7EzE,2BAFT;IAAA;MAt7EkFA,2DAs7ElF;MAAA,eAt7EkFA,2DAs7ElF;MAAA,OAt7EkFA,yDAy7ErE,+BAHb;IAAA;IAt7EkFA,0DA27EtF;;;;mBA37EsFA;IAAAA,wDAw6ElF;;;;;;iBAx6EkFA;;IAAAA,4DA87EtF;IA97EsFA,wDA28ElF;MA38EkFA,2DA28ElF;MAAA,gBA38EkFA,2DA28ElF;MAAA,OA38EkFA,yDA28EzE,mCAAT;IAAA;IA38EkFA,oDA68ElF;IA78EkFA,0DA88EtF;IA98EsFA,4DA+8EtF;IA/8EsFA,wDAs9ElF;MAt9EkFA,2DAs9ElF;MAAA,gBAt9EkFA,2DAs9ElF;MAAA,OAt9EkFA,yDAs9ErE,gCAAb;IAAA;MAt9EkFA,2DAs9ElF;MAAA,gBAt9EkFA,2DAs9ElF;MAAA,OAt9EkFA,yDAu9EzE,mCADT;IAAA;IAt9EkFA,0DAy9EtF;;;;mBAz9EsFA;IAAAA,wDAk8ElF;IAl8EkFA,uDA68ElF;IA78EkFA,gEA68ElF;IA78EkFA,uDAi9ElF;IAj9EkFA,wDAi9ElF;;;;;;;;IAj9EkFA,uDAwnFtF;;;;AA5oFZ,MAAMuC,eAAe,GAAG;EACpB38J,IAAI,EAAE,iCADc;EAEpB48J,WAAW,EAAE,sBAFO;EAGpBC,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;EAIpBC,WAAW,EAAE,UAJO;EAKpB78J,OAAO,EAAE,EALW;EAMpB88J,gBAAgB,EAAE;AANE,CAAxB;AASA;AACA;AACA;;AACA,MAAMwyR,cAAN,CAAqB;EACjBpvb,WAAW,GAAG;IACV,KAAKqvb,SAAL,GAAiB,IAAIn1R,uDAAJ,EAAjB;EACH;;EACDw/B,OAAO,CAAC41P,IAAD,EAAO;IACV,KAAKD,SAAL,CAAepoS,IAAf,CAAoBqoS,IAApB;EACH;;AANgB;;AAQrBF,cAAc,CAACvtb,IAAf;EAAA,iBAA4Gutb,cAA5G;AAAA;;AACAA,cAAc,CAACntb,KAAf,kBADkGg4J,gEAClG;EAAA,OAAgHm1R,cAAhH;EAAA,SAAgHA,cAAhH;AAAA;;AACA;EAAA,mDAFkGn1R,+DAElG,CAA4Fm1R,cAA5F,EAAwH,CAAC;IAC7G9sb,IAAI,EAAE3E,qDAAUA;EAD6F,CAAD,CAAxH;AAAA;AAIA;AACA;AACA;;;AACA,MAAMsqM,cAAc,GAAG,8CAAvB;AACA;AACA;AACA;;AACA,SAASw5E,UAAT,CAAoBvkH,OAApB,EAA6B;EACzB,IAAIroH,KAAK,GAAGqoH,OAAO,CAACqsC,WAApB;EACA,IAAI7sJ,KAAK,GAAGg4I,gBAAgB,CAACx3B,OAAD,CAA5B;EACAroH,KAAK,IAAIuuD,UAAU,CAAC1mD,KAAK,CAACglO,UAAP,CAAV,IAAgC,IAAIt+K,UAAU,CAAC1mD,KAAK,CAACilO,WAAP,CAA9C,IAAqE,CAA9E;EACA,OAAO9sO,KAAP;AACH;AACD;AACA;AACA;;;AACA,SAASN,UAAT,CAAoB2oH,OAApB,EAA6B;EACzB,IAAIroH,KAAK,GAAGqoH,OAAO,CAACqsC,WAApB;EACA,IAAI7sJ,KAAK,GAAGg4I,gBAAgB,CAACx3B,OAAD,CAA5B;EACAroH,KAAK,IAAIuuD,UAAU,CAAC1mD,KAAK,CAACy3K,WAAP,CAAV,IAAiC,IAAI/wH,UAAU,CAAC1mD,KAAK,CAAC6yY,eAAP,CAA/C,IAA0E,CAAnF;EACA16Y,KAAK,IAAIuuD,UAAU,CAAC1mD,KAAK,CAAC03K,YAAP,CAAV,IAAkC,IAAIhxH,UAAU,CAAC1mD,KAAK,CAAC8yY,gBAAP,CAAhD,IAA4E,CAArF;EACA,OAAO36Y,KAAP;AACH;AACD;AACA;AACA;;;AACA,SAAS46Y,WAAT,CAAqBvyR,OAArB,EAA8B;EAC1B,IAAIroH,KAAK,GAAGqoH,OAAO,CAACktC,YAApB;EACA,IAAI1tJ,KAAK,GAAGg4I,gBAAgB,CAACx3B,OAAD,CAA5B;EACAroH,KAAK,IAAIuuD,UAAU,CAAC1mD,KAAK,CAACgzY,SAAP,CAAV,IAA+B,IAAItsV,UAAU,CAAC1mD,KAAK,CAACizY,YAAP,CAA7C,IAAqE,CAA9E;EACA,OAAO96Y,KAAP;AACH;AACD;AACA;AACA;;;AACA,MAAMooH,OAAO,GAAG,CAACM,IAAD,EAAOoqC,SAAP,KAAqB;EACjC,OAAOpqC,IAAI,IAAI,CAACoqC,SAAS,CAACpqC,IAAD,CAAzB,EAAiC;IAC7BA,IAAI,GAAGA,IAAI,CAACvgH,UAAZ;EACH;;EACD,OAAOugH,IAAP;AACH,CALD;AAMA;AACA;AACA;;;AACA,MAAM8qC,SAAS,GAAInrC,OAAD,IAAa;EAC3B,MAAMorC,IAAI,GAAGprC,OAAO,CAAC2e,qBAAR,EAAb;EACA,MAAM0sB,OAAO,GAAGD,IAAI,CAACzzJ,KAAL,GAAa,CAAb,IAAkByzJ,IAAI,CAACvzJ,MAAL,GAAc,CAAhD;EACA,MAAMyzJ,WAAW,GAAGF,IAAI,CAAC/uB,CAAL,KAAW,CAAX,IAAgB+uB,IAAI,CAAC33L,CAAL,KAAW,CAA/C,CAH2B,CAI3B;EACA;;EACA,OAAO,CAAC43L,OAAO,IAAIC,WAAZ,KAA4B3jM,MAAM,CAAC6vL,gBAAP,CAAwBx3B,OAAxB,EAAiCvgH,UAAjC,KAAgD,QAAnF;AACH,CAPD;AAQA;AACA;AACA;;;AACA,MAAMorJ,WAAW,GAAG,CAACxqC,IAAD,EAAOoqC,SAAP,EAAkBC,SAAS,GAAG,IAA9B,KAAuC;EACvD,IAAI,CAACrqC,IAAL,EAAW;IACP;EACH;;EACD,IAAIqqC,SAAS,IAAID,SAAS,CAACpqC,IAAD,CAA1B,EAAkC;IAC9B,OAAOA,IAAP;EACH;;EACDA,IAAI,GAAGA,IAAI,CAAC8H,UAAZ;;EACA,OAAO9H,IAAP,EAAa;IACT,IAAIA,IAAI,CAAChxC,QAAL,KAAkB,CAAtB,EAAyB;MACrB,MAAM2wC,OAAO,GAAG6qC,WAAW,CAACxqC,IAAD,EAAOoqC,SAAP,CAA3B;;MACA,IAAIzqC,OAAJ,EAAa;QACT,OAAOA,OAAP;MACH;IACJ;;IACDK,IAAI,GAAGA,IAAI,CAACyqC,WAAZ;EACH;AACJ,CAjBD;AAkBA;AACA;AACA;;;AACA,MAAME,WAAW,GAAG,CAAChrC,OAAD,EAAUwrC,eAAe,GAAG,IAA5B,KAAqC;EACrD,IAAIxrC,OAAO,CAAC8F,OAAZ,EAAqB;IACjB,MAAMA,OAAO,GAAG9F,OAAO,CAAC8F,OAAR,CAAgB73J,WAAhB,EAAhB;IACA,MAAM01J,QAAQ,GAAG3D,OAAO,CAACsd,YAAR,CAAqB,UAArB,CAAjB;IACA,IAAI4tB,SAAS,GAAGvnC,QAAQ,KAAK,IAA7B;;IACA,IAAIonC,cAAc,CAAChoK,IAAf,CAAoB+iI,OAApB,CAAJ,EAAkC;MAC9BolC,SAAS,GAAG,CAAClrC,OAAO,CAACsE,QAArB;IACH;;IACD,OAAO4mC,SAAS,KAAK,CAACM,eAAD,IAAoBL,SAAS,CAACnrC,OAAD,CAAlC,CAAhB;EACH;;EACD,OAAO,KAAP;AACH,CAXD;AAYA;AACA;AACA;;;AACA,MAAM0rC,aAAa,GAAG,CAAC1rC,OAAD,EAAUwrC,eAAe,GAAG,IAA5B,KAAqC;EACvD,OAAOX,WAAW,CAAC7qC,OAAD,EAAUK,IAAI,IAAI2qC,WAAW,CAAC3qC,IAAD,EAAOmrC,eAAP,CAA7B,CAAlB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,MAAMC,kBAAkB,GAAG,CAACzrC,OAAD,EAAUwrC,eAAe,GAAG,IAA5B,KAAqC;EAC5D,OAAOX,WAAW,CAAC7qC,OAAD,EAAUK,IAAI,IAAI2qC,WAAW,CAAC3qC,IAAD,EAAOmrC,eAAP,CAA7B,EAAsD,KAAtD,CAAlB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,MAAMknP,oBAAoB,GAAG,CAAC1yR,OAAD,EAAUwrC,eAAe,GAAG,IAA5B,EAAkCzqG,OAAlC,KAA8C;EACvE,IAAIs/D,IAAI,GAAGt/D,OAAO,GAAGi/D,OAAO,CAAC2yR,WAAX,GAAyB3yR,OAAO,CAAC8qC,WAAnD;;EACA,OAAOzqC,IAAP,EAAa;IACT,IAAIA,IAAI,CAAChxC,QAAL,KAAkB,CAAtB,EAAyB;MACrB,MAAMhkH,MAAM,GAAGw/L,WAAW,CAACxqC,IAAD,EAAOH,EAAE,IAAI8qC,WAAW,CAAC9qC,EAAD,EAAKsrC,eAAL,CAAxB,CAA1B;;MACA,IAAIngM,MAAJ,EAAY;QACR,OAAOA,MAAP;MACH;IACJ;;IACDg1J,IAAI,GAAGt/D,OAAO,GAAGs/D,IAAI,CAACsyR,WAAR,GAAsBtyR,IAAI,CAACyqC,WAAzC;EACH;AACJ,CAXD;AAYA;AACA;AACA;;;AACA,MAAMhlG,SAAS,GAAIt/F,KAAD,IAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKnB,SAAzD;AACA;AACA;AACA;;;AACA,MAAMutb,UAAU,GAAIC,UAAD,IAAiB/pa,KAAD,IAAWg9E,SAAS,CAAC+sV,UAAU,CAAC/pa,KAAD,CAAX,CAAvD;AACA;AACA;AACA;;;AACA,MAAMgqa,iBAAiB,GAAG,CAACC,WAAD,EAAcC,WAAd,EAA2BH,UAA3B,KAA2ChtM,EAAD,IAAQ;EACxE,QAAQA,EAAE,CAACzgP,IAAX;IACI,KAAK,SAAL;MACI,IAAIygP,EAAE,CAACv/E,OAAH,KAAeysR,WAAnB,EAAgC;QAC5B,OAAOF,UAAU,CAACprb,MAAX,GAAoB,CAA3B;MACH;;MACD,IAAIo+O,EAAE,CAACv/E,OAAH,KAAe0sR,WAAnB,EAAgC;QAC5B,OAAO,CAAP;MACH;;MACD;;IACJ,KAAK,OAAL;MACI,OAAOH,UAAU,CAACvoR,SAAX,CAAqB2oR,EAAE,IAAIA,EAAE,KAAKptM,EAAE,CAACnxN,MAAV,IAAoBu+Z,EAAE,CAACzhR,QAAH,CAAYq0E,EAAE,CAACnxN,MAAf,CAA/C,CAAP;;IACJ,KAAK,OAAL;MACI,OAAO,CAAP;;IACJ;MACI,OAAO,CAAP;EAdR;AAgBH,CAjBD;AAkBA;AACA;AACA;;;AACA,MAAMw+Z,gBAAgB,GAAG,CAACH,WAAD,EAAcC,WAAd,EAA2BG,MAA3B,KAAsC,CAAC56L,UAAD,EAAa1S,EAAb,KAAoB;EAC/E,QAAQA,EAAE,CAACv/E,OAAX;IACI,KAAKysR,WAAL;MACI,OAAOI,MAAM,CAAC56L,UAAU,GAAG,CAAd,CAAN,GAAyBA,UAAU,GAAG,CAAtC,GAA0CA,UAAjD;;IACJ,KAAKy6L,WAAL;MACI,OAAOG,MAAM,CAAC56L,UAAU,GAAG,CAAd,CAAN,GAAyBA,UAAU,GAAG,CAAtC,GAA0CA,UAAjD;;IACJ;MACI,OAAOA,UAAP;EANR;AAQH,CATD;AAUA;AACA;AACA;;;AACA,MAAMw1L,QAAQ,GAAIjjR,KAAD,IAAYyrC,MAAD,IAAYzrC,KAAK,KAAKyrC,MAAlD;AACA;AACA;AACA;;;AACA,MAAM68O,UAAU,GAAG,CAAC/vR,GAAG,GAAG,KAAP,KAAiB,CAAC6mH,SAAS,GAAG,IAAb,KAAsBA,SAAS,GAAGlsH,0EAAH,GAAoBqF,GAAG,GAAGrF,0EAAH,GAAoBA,2EAA9G;AACA;AACA;AACA;;;AACA,MAAMq1R,UAAU,GAAG,CAAChwR,GAAG,GAAG,KAAP,KAAiB,CAAC6mH,SAAS,GAAG,IAAb,KAAsBA,SAAS,GAAGlsH,wEAAH,GAAkBqF,GAAG,GAAGrF,2EAAH,GAAqBA,0EAA7G;AACA;AACA;AACA;;;AACA,MAAMs1R,mBAAmB,GAAG,CAAC7/T,QAAD,EAAW8/T,WAAX,EAAwBrpK,SAAxB,KAAsC;EAC9D,QAAQqpK,WAAR;IACI,KAAK,SAAL;MACI,OAAOrpK,SAAS,GAAG7kR,SAAH,GAAeouH,QAA/B;;IACJ,KAAK,UAAL;MACI,OAAOy2J,SAAS,GAAGz2J,QAAH,GAAcpuH,SAA9B;;IACJ;MACI,OAAOouH,QAAP;EANR;AAQH,CATD;AAWA;AACA;AACA;;;AACA,MAAMm6C,iBAAN,CAAwB;EACpB9qK,WAAW,CAACuvK,IAAD,EAAO;IACd,KAAKA,IAAL,GAAYA,IAAZ;IACA,KAAKzG,OAAL,GAAe;MAAE4nR,YAAY,EAAE,IAAhB;MAAsB1qa,KAAK,EAAE,CAAC;IAA9B,CAAf;IACA,KAAK2qa,aAAL,GAAqB,EAArB;IACA,KAAKC,cAAL,GAAsB,KAAtB;IACA,KAAKC,uBAAL,GAA+B,KAA/B;EACH;;EACDC,gBAAgB,CAACC,GAAD,EAAM;IAClB,KAAKJ,aAAL,GAAqB,CAAC,GAAGI,GAAJ,CAArB;EACH;;EACDhyR,KAAK,CAAC;IAAE31E,OAAF;IAAW9oE,KAAK,EAAEyiO;EAAlB,CAAD,EAAyB;IAC1B,IAAI,KAAKj6E,OAAL,CAAa4nR,YAAb,KAA8BtnW,OAA9B,IAAyC25J,EAA7C,EAAiD;MAC7C,KAAKnvM,KAAL,CAAWw1C,OAAX,EAAoB25J,EAApB;IACH;EACJ;;EACDiuM,kBAAkB,GAAG;IACjB,KAAKJ,cAAL,GAAsB,KAAtB;IACA,KAAKK,mBAAL;EACH;;EACDC,gBAAgB,GAAG;IACf,KAAKN,cAAL,GAAsB,IAAtB;IACA,KAAKO,kBAAL;IACA,KAAKv9Y,KAAL;EACH;;EACDm8W,SAAS,CAAChtK,EAAD,EAAK;IACV,IAAI,CAAC,KAAK8tM,uBAAN,IAAiC,KAAK/nR,OAAL,CAAa4nR,YAA9C,IAA8D,CAAC,KAAK5nR,OAAL,CAAa4nR,YAAb,CAA0BpB,IAA1B,CAA+B1nK,SAA/B,CAAyC7kC,EAAzC,CAAnE,EAAiH;MAC7G,MAAMquM,MAAM,GAAG,KAAKC,iBAAL,GAAyBp6W,KAAzB,CAA+B,KAAK6xF,OAAL,CAAa9iJ,KAAb,GAAqB,CAApD,EAAuD,CAAvD,CAAf;;MACA,IAAIora,MAAJ,EAAY;QACR,KAAKx9Y,KAAL,CAAWw9Y,MAAX,EAAmBruM,EAAnB;MACH,CAFD,MAGK;QACD,IAAI,KAAKuuM,uBAAL,MAAkC,CAAC,KAAKV,cAA5C,EAA4D;UACxD,KAAKK,mBAAL;QACH;MACJ;IACJ;EACJ;;EACDvlB,SAAS,CAAC3oL,EAAD,EAAK;IACV,IAAI,KAAK8tM,uBAAT,EAAkC;MAC9B,MAAMU,eAAe,GAAG,KAAKF,iBAAL,GAAyBpzV,OAAzB,GAAmC,CAAnC,CAAxB;MACA,KAAKrqD,KAAL,CAAW29Y,eAAX,EAA4BxuM,EAA5B;IACH,CAHD,MAIK,IAAI,KAAKj6E,OAAL,CAAa4nR,YAAb,IAA6B,CAAC,KAAK5nR,OAAL,CAAa4nR,YAAb,CAA0BpB,IAA1B,CAA+B1nK,SAA/B,CAAyC7kC,EAAzC,CAAlC,EAAgF;MACjF,MAAMyuM,MAAM,GAAG,KAAKH,iBAAL,GACVp6W,KADU,CACJ,CADI,EACD,KAAK6xF,OAAL,CAAa9iJ,KADZ,EAEVi4E,OAFU,GAEA,CAFA,CAAf;;MAGA,IAAIuzV,MAAJ,EAAY;QACR,KAAK59Y,KAAL,CAAW49Y,MAAX,EAAmBzuM,EAAnB;MACH;IACJ;EACJ;;EACD0uM,eAAe,GAAG;IACd,KAAKN,kBAAL;IACA,KAAKroR,OAAL,CAAa4nR,YAAb,GAA4B,IAA5B;IACA,KAAK5nR,OAAL,CAAa9iJ,KAAb,GAAqB,CAAC,CAAtB;EACH;;EACDioX,UAAU,CAAClrJ,EAAD,EAAK;IACX,MAAM2uM,SAAS,GAAG,KAAKL,iBAAL,GAAyB,CAAzB,CAAlB;IACA,MAAMM,cAAc,GAAG,KAAKC,cAA5B;;IACA,IAAIF,SAAJ,EAAe;MACX,KAAK5oR,OAAL,CAAa4nR,YAAb,GAA4BgB,SAA5B;MACA,KAAK5oR,OAAL,CAAa9iJ,KAAb,GAAqB,KAAKqra,iBAAL,GAAyB7pR,SAAzB,CAAmCqqR,EAAE,IAAIA,EAAE,KAAKH,SAAhD,CAArB;MACA,KAAK99Y,KAAL,CAAW89Y,SAAX,EAAsB3uM,EAAtB;IACH,CAJD,MAKK,IAAI4uM,cAAJ,EAAoB;MACrBA,cAAc,CAAClxR,aAAf,CAA6B7sH,KAA7B;IACH;EACJ;;EACDy9Y,iBAAiB,GAAG;IAChB,OAAO,KAAKV,aAAL,CAAmB51a,MAAnB,CAA0B82a,EAAE,IAAIA,EAAE,CAACvC,IAAH,CAAQloK,SAAR,KAAsB,KAAKwpK,cAA3B,IAA6CiB,EAAE,CAACvC,IAAH,CAAQ5nK,QAAR,EAA7E,CAAP;EACH;;EACD9zO,KAAK,CAAC88Y,YAAD,EAAe3tM,EAAf,EAAmB;IACpB;IACA,KAAKxzE,IAAL,CAAUixE,QAAV,CAAmB/6O,IAAnB,CAAwB02J,oDAAI,CAAC,CAAD,CAA5B,EAAiCj4J,SAAjC,CAA2C,MAAM;MAC7C,IAAI,CAACwsb,YAAL,EAAmB;QACf,MAAMoB,YAAY,GAAG,KAAKT,iBAAL,EAArB;QACA,MAAMU,aAAa,GAAGD,YAAY,CAAC7+Z,IAAb,CAAkB4+Z,EAAE,IAAIA,EAAE,KAAK,KAAK/oR,OAAL,CAAa4nR,YAA5C,KAA6DoB,YAAY,CAAC,CAAD,CAA/F,CAFe,CAGf;;QACA,IAAIC,aAAJ,EAAmB;UACf,KAAKjpR,OAAL,CAAa4nR,YAAb,GAA4BqB,aAA5B;UACA,KAAKjpR,OAAL,CAAa9iJ,KAAb,GAAqB,KAAKqra,iBAAL,GAAyB7pR,SAAzB,CAAmCqqR,EAAE,IAAIA,EAAE,KAAKE,aAAhD,CAArB,CAFe,CAGf;;UACAA,aAAa,CAACzC,IAAd,CAAmB17Y,KAAnB,CAAyBmvM,EAAzB;QACH;MACJ,CAVD,MAWK,IAAI2tM,YAAY,CAACpB,IAAb,CAAkB5nK,QAAlB,IAA8BgpK,YAAY,CAACpB,IAAb,CAAkB5nK,QAAlB,EAAlC,EAAgE;QACjE,KAAK5+G,OAAL,CAAa4nR,YAAb,GAA4BA,YAA5B;QACA,KAAK5nR,OAAL,CAAa9iJ,KAAb,GAAqB,KAAKqra,iBAAL,GAAyB7pR,SAAzB,CAAmCqqR,EAAE,IAAIA,EAAE,KAAKnB,YAAhD,CAArB;QACAA,YAAY,CAACpB,IAAb,CAAkB17Y,KAAlB,CAAwBmvM,EAAxB;QACA,KAAKouM,kBAAL;MACH;IACJ,CAlBD;EAmBH;;EACDA,kBAAkB,GAAG;IACjB,IAAI,KAAKS,cAAT,EAAyB;MACrB,KAAKf,uBAAL,GAA+B,KAA/B;MACA,KAAKe,cAAL,CAAoBnxR,aAApB,CAAkCI,QAAlC,GAA6C,CAAC,CAA9C;IACH;EACJ;;EACDowR,mBAAmB,GAAG;IAClB,KAAKJ,uBAAL,GAA+B,IAA/B;IACA,KAAKe,cAAL,CAAoBnxR,aAApB,CAAkCI,QAAlC,GAA6C,CAA7C;IACA,KAAK+wR,cAAL,CAAoBnxR,aAApB,CAAkC7sH,KAAlC;EACH;;EACD09Y,uBAAuB,GAAG;IACtB,OAAQtuV,SAAS,CAAC,KAAK4uV,cAAN,CAAT,IACJ/sb,MAAM,CAAC6vL,gBAAP,CAAwB,KAAKk9P,cAAL,CAAoBnxR,aAA5C,EAA2D+pC,gBAA3D,CAA4E,YAA5E,MAA8F,SADlG;EAEH;;AA5GmB;;AA8GxB1/B,iBAAiB,CAACjpK,IAAlB;EAAA,iBAA+GipK,iBAA/G,EA9SkG7Q,sDA8SlG,CAAkJA,iDAAlJ;AAAA;;AACA6Q,iBAAiB,CAAC7oK,KAAlB,kBA/SkGg4J,gEA+SlG;EAAA,OAAmH6Q,iBAAnH;EAAA,SAAmHA,iBAAnH;AAAA;;AACA;EAAA,mDAhTkG7Q,+DAgTlG,CAA4F6Q,iBAA5F,EAA2H,CAAC;IAChHxoK,IAAI,EAAE3E,qDAAUA;EADgG,CAAD,CAA3H,EAE4B,YAAY;IAAE,OAAO,CAAC;MAAE2E,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAD,CAAP;EAA+B,CAFzE;AAAA;AAIA;AACA;AACA;AACA;;;AACA,MAAMoxG,oBAAN,CAA2B;EACvBp3Q,WAAW,GAAG;IACV,KAAK6gK,QAAL,GAAgB,CAAC,CAAjB,CADU,CACU;;IACpB,KAAKumH,SAAL,GAAiB,IAAjB,CAFU,CAGV;;IACA;AACR;AACA;;IACQ,KAAKggC,UAAL,GAAkB,IAAlB;EACH;;EACiB,IAAd4qI,cAAc,GAAG;IACjB,OAAO,KAAK5qK,SAAL,GAAiB,MAAjB,GAA0B,cAAjC;EACH;;EACkB,IAAf6qK,eAAe,GAAG;IAClB,OAAO,KAAK7qK,SAAL,GAAiB,OAAjB,GAA2B,MAAlC;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIM,QAAQ,GAAG;IACP,OAAO,KAAP;EACH;EACD;AACJ;AACA;AACA;AACA;EACI;;;EACA9zO,KAAK,CAACmvM,EAAD,EAAK;IACN;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;EACI;;;EACA6kC,SAAS,CAAC7kC,EAAD,EAAK;IACV,OAAO,KAAP;EACH;;AA3CsB;;AA6C3Bq0B,oBAAoB,CAACv1Q,IAArB;EAAA,iBAAkHu1Q,oBAAlH;AAAA;;AACAA,oBAAoB,CAACzrQ,IAArB,kBAtWkGsuJ,+DAsWlG;EAAA,MAAsGm9G,oBAAtG;EAAA;EAAA;IAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;;AACA;EAAA,mDAvWkGn9G,+DAuWlG,CAA4Fm9G,oBAA5F,EAA8H,CAAC;IACnH90Q,IAAI,EAAExE,oDAD6G;IAEnH2E,IAAI,EAAE,CAAC;MACC;MACA4J,QAAQ,EAAE,cAFX;MAGCL,QAAQ,EAAG;IAHZ,CAAD;EAF6G,CAAD,CAA9H,QAO4B;IAAEo7S,UAAU,EAAE,CAAC;MAC3B9kT,IAAI,EAAE+3J,gDAAKA;IADgB,CAAD;EAAd,CAP5B;AAAA;AAWA;AACA;AACA;;;AACA,MAAM8L,gBAAN,CAAuB;EACnBnmK,WAAW,GAAG;IACV,KAAKomK,SAAL,GAAiB,KAAjB;EACH;EACD;AACJ;AACA;AACA;;;EACI9wH,cAAc,GAAG;IACb,KAAK8wH,SAAL,GAAiB,IAAjB;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIC,kBAAkB,GAAG;IACjB,OAAO,KAAKD,SAAZ;EACH;;AAlBkB;AAqBvB;AACA;AACA;;;AACA,MAAM8rR,iBAAiB,GAAG,OAA1B;AAEA;AACA;AACA;;AACA,MAAMC,eAAN,CAAsB;EAClBC,UAAU,GAAG;IACT,OAAO,KAAKl1R,OAAL,CAAauD,aAApB;EACH;;EACDsb,aAAa,CAAC1vK,QAAD,EAAW;IACpB,OAAO,KAAK6wJ,OAAL,CAAauD,aAAb,CAA2Bsb,aAA3B,CAAyC1vK,QAAzC,CAAP;EACH;;EACDkmH,gBAAgB,CAAClmH,QAAD,EAAW;IACvB,OAAO,KAAK6wJ,OAAL,CAAauD,aAAb,CAA2BluC,gBAA3B,CAA4ClmH,QAA5C,CAAP;EACH;;EACDu8L,aAAa,GAAG;IACZ,OAAOA,aAAa,CAAC,KAAK1rC,OAAL,CAAauD,aAAd,EAA6B,KAA7B,CAApB;EACH;;EACDkoC,kBAAkB,CAACzrC,OAAD,EAAU;IACxB,IAAI,CAACA,OAAL,EAAc;MACVA,OAAO,GAAG,KAAK0rC,aAAL,EAAV;IACH;;IACD,OAAOD,kBAAkB,CAACzrC,OAAD,EAAU,KAAV,CAAzB;EACH;;EACDm1R,wBAAwB,CAACn1R,OAAD,EAAU;IAC9B,IAAI,CAACA,OAAL,EAAc;MACVA,OAAO,GAAG,KAAK0rC,aAAL,EAAV;IACH;;IACD,OAAOgnP,oBAAoB,CAAC1yR,OAAD,EAAU,KAAV,CAA3B;EACH;;EACDo1R,wBAAwB,CAACp1R,OAAD,EAAU;IAC9B,IAAI,CAACA,OAAL,EAAc;MACVA,OAAO,GAAG,KAAK0rC,aAAL,EAAV;IACH;;IACD,OAAOgnP,oBAAoB,CAAC1yR,OAAD,EAAU,KAAV,EAAiB,IAAjB,CAA3B;EACH;;EACDpgH,YAAY,CAACogH,OAAD,EAAUpX,IAAV,EAAgBpiJ,KAAhB,EAAuB;IAC/B,KAAK67J,QAAL,CAAcziH,YAAd,CAA2BogH,OAA3B,EAAoCpX,IAApC,EAA0CpiJ,KAA1C;EACH;;AAjCiB;;AAmCtByub,eAAe,CAACtwb,IAAhB;EAAA,iBAA6Gswb,eAA7G;AAAA;;AACAA,eAAe,CAAClwb,KAAhB,kBAtbkGg4J,gEAsblG;EAAA,OAAiHk4R,eAAjH;EAAA,SAAiHA,eAAjH;AAAA;;AACA;EAAA,mDAvbkGl4R,+DAublG,CAA4Fk4R,eAA5F,EAAyH,CAAC;IAC9G7vb,IAAI,EAAE3E,qDAAUA;EAD8F,CAAD,CAAzH;AAAA;AAIA;AACA;AACA;;;AACA,MAAM40b,wBAAN,CAA+B;EAC3Bvyb,WAAW,CAACk9J,OAAD,EAAUqC,QAAV,EAAoBizR,eAApB,EAAqCC,cAArC,EAAqD;IAC5D,KAAKv1R,OAAL,GAAeA,OAAf;IACA,KAAKqC,QAAL,GAAgBA,QAAhB;IACA,KAAKizR,eAAL,GAAuBA,eAAvB;IACA,KAAKC,cAAL,GAAsBA,cAAtB;IACA,KAAKC,aAAL,GAAqB,IAAIx4R,uDAAJ,EAArB;IACA,KAAKs4R,eAAL,CAAqBt1R,OAArB,GAA+BA,OAA/B;IACA,KAAKs1R,eAAL,CAAqBjzR,QAArB,GAAgC,IAAhC;IACA,KAAKozR,mBAAL,GAA2B,KAAKF,cAAL,CAAoBpD,SAApB,CAA8Bnrb,SAA9B,CAAyCorb,IAAD,IAAU;MACzE,IAAI,KAAKA,IAAL,KAAcA,IAAlB,EAAwB;QACpB,KAAK51P,OAAL;MACH;IACJ,CAJ0B,CAA3B;EAKH;;EACDxvB,OAAO,CAAC64E,EAAD,EAAK;IACR,KAAK2vM,aAAL,CAAmBzrS,IAAnB,CAAwB;MAAE79D,OAAO,EAAE,IAAX;MAAiB9oE,KAAK,EAAEyiO;IAAxB,CAAxB;EACH;;EACDv3O,QAAQ,GAAG;IACP,IAAI,KAAKg7O,SAAT,EAAoB;MAChB,IAAI,KAAKtmP,QAAL,KAAkB,SAAtB,EAAiC;QAC7B,KAAK8L,QAAL,GAAgB,KAAKsjb,IAAL,CAAUznK,eAA1B;QACA,KAAKtoH,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,YAAnD,EAAiE,QAAjE;QACA,KAAKlB,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,SAAnD,EAA8D,MAA9D;MACH,CAJD,MAKK;QACD,KAAKz0J,QAAL,GAAgB,KAAKsjb,IAAL,CAAUp9Q,aAA1B;QACA,KAAK3S,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,SAAnD,EAA8D,MAA9D;MACH;IACJ,CAVD,MAWK;MACD,KAAK6uR,IAAL,CAAUloK,SAAV,GAAsB,KAAtB;MACA,KAAKp7Q,QAAL,GAAgB,KAAKsjb,IAAL,CAAUznK,eAA1B;MACA,KAAKtoH,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,YAAnD,EAAiE,SAAjE;MACA,KAAKlB,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,SAAnD,EAA8D,cAA9D;IACH;EACJ;;EACDwD,WAAW,GAAG;IACV,KAAK0uR,mBAAL,CAAyBtuR,WAAzB;EACH;;EACDR,eAAe,GAAG;IACd,IAAI,KAAK2iF,SAAT,EAAoB;MAChB,KAAK9sD,OAAL;IACH;EACJ;EACD;AACJ;AACA;;;EACa,IAAL7kJ,KAAK,GAAG;IACR,OAAO,KAAKy6Y,IAAL,CAAUloK,SAAV,GAAsB,CAAtB,GAA0B3F,UAAU,CAAC,KAAKvkH,OAAL,CAAauD,aAAd,CAA3C;EACH;EACD;AACJ;AACA;;;EACImyR,WAAW,GAAG;IACV,OAAO,KAAK11R,OAAL,CAAauD,aAAb,CAA2B/jH,KAA3B,CAAiCk5I,OAAjC,KAA6C,MAApD;EACH;EACD;AACJ;AACA;;;EACI8D,OAAO,GAAG;IACN,IAAI,KAAK8sD,SAAT,EAAoB;MAChB,IAAI,KAAKtmP,QAAL,KAAkB,SAAtB,EAAiC;QAC7B,KAAKq/J,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,YAAnD,EAAiE,KAAK6uR,IAAL,CAAU3yY,UAA3E;QACA,KAAK4iH,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,SAAnD,EAA8D,KAAK6uR,IAAL,CAAU0C,cAAxE;MACH,CAHD,MAIK;QACD,KAAKzyR,QAAL,CAAc6b,QAAd,CAAuB,KAAKle,OAAL,CAAauD,aAApC,EAAmD,SAAnD,EAA8D,KAAK6uR,IAAL,CAAU2C,eAAxE;MACH;IACJ;EACJ;EACD;AACJ;AACA;;;EACIn1Y,YAAY,CAACogH,OAAD,EAAUpX,IAAV,EAAgBpiJ,KAAhB,EAAuB;IAC/B,KAAK67J,QAAL,CAAcziH,YAAd,CAA2BogH,OAA3B,EAAoCpX,IAApC,EAA0CpiJ,KAA1C;EACH;;AA5E0B;;AA8E/B6ub,wBAAwB,CAAC1wb,IAAzB;EAAA,iBAAsH0wb,wBAAtH,EA5gBkGt4R,+DA4gBlG,CAAgKA,qDAAhK,GA5gBkGA,+DA4gBlG,CAA0LA,oDAA1L,GA5gBkGA,+DA4gBlG,CAAmNk4R,eAAnN,GA5gBkGl4R,+DA4gBlG,CAA+Om1R,cAA/O;AAAA;;AACAmD,wBAAwB,CAAC5mb,IAAzB,kBA7gBkGsuJ,+DA6gBlG;EAAA,MAA0Gs4R,wBAA1G;EAAA;EAAA;IAAA;MA7gBkGt4R,wDA6gBlG;QAAA,OAA0G,mBAA1G;MAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;EAAA;EAAA,WA7gBkGA,gEA6gBlG,CAA6V,CAACk4R,eAAD,CAA7V;EAAA;EAAA;EAAA;EAAA;IAAA;MA7gBkGl4R,wDA8gB1F,8EADR;MA7gBkGA,wDAihB1F,8EAJR;IAAA;;IAAA;MA7gBkGA,wDA8gB3E,oCADvB;MA7gBkGA,uDAihB3E,GAJvB;MA7gBkGA,wDAihB3E,4DAJvB;IAAA;EAAA;EAAA,eAO4CgC,iDAP5C,EAO6HA,6DAP7H;EAAA;AAAA;;AAQA;EAAA,mDArhBkGhC,+DAqhBlG,CAA4Fs4R,wBAA5F,EAAkI,CAAC;IACvHjwb,IAAI,EAAExE,oDADiH;IAEvH2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,sBADX;MAECv5J,SAAS,EAAE,CAACwlb,eAAD,CAFZ;MAGC9lb,QAAQ,EAAE,wBAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;IAXmB,CAAD;EAFiH,CAAD,CAAlI,EAe4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,oDAAY8L;IAApB,CAA1B,EAAkD;MAAEzjK,IAAI,EAAE6vb;IAAR,CAAlD,EAA6E;MAAE7vb,IAAI,EAAE8sb;IAAR,CAA7E,CAAP;EAAgH,CAf1J,EAe4K;IAAEE,IAAI,EAAE,CAAC;MACrKhtb,IAAI,EAAE+3J,gDAAKA;IAD0J,CAAD,CAAR;IAE5Jn6J,QAAQ,EAAE,CAAC;MACXoC,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAFkJ;IAI5JmsF,SAAS,EAAE,CAAC;MACZlkP,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAJiJ;IAM5Jq4R,aAAa,EAAE,CAAC;MAChBpwb,IAAI,EAAEg4J,iDAAMA;IADI,CAAD,CAN6I;IAQ5J4P,OAAO,EAAE,CAAC;MACV5nK,IAAI,EAAEk4J,uDADI;MAEV/3J,IAAI,EAAE,CAAC,OAAD,EAAU,CAAC,QAAD,CAAV;IAFI,CAAD;EARmJ,CAf5K;AAAA;AA4BA;AACA;AACA;;;AACA,MAAMowb,eAAN,SAA8Bp3R,2EAA9B,CAAgD;;AAEhDo3R,eAAe,CAAChxb,IAAhB;EAAA;EAAA;IAAA,wEAtjBkGo4J,mEAsjBlG,CAA6G44R,eAA7G,SAA6GA,eAA7G;EAAA;AAAA;;AACAA,eAAe,CAAC5sR,IAAhB,kBAvjBkGhM,+DAujBlG;EAAA,MAAiG44R,eAAjG;EAAA;EAAA;IAAA;EAAA;EAAA,WAvjBkG54R,wEAujBlG;AAAA;;AACA;EAAA,mDAxjBkGA,+DAwjBlG,CAA4F44R,eAA5F,EAAyH,CAAC;IAC9Gvwb,IAAI,EAAE63J,oDADwG;IAE9G13J,IAAI,EAAE,CAAC;MACC;MACA4J,QAAQ,EAAE;IAFX,CAAD;EAFwG,CAAD,CAAzH,QAM4B;IAAEymb,cAAc,EAAE,CAAC;MAC/Bxwb,IAAI,EAAE+3J,gDAAKA;IADoB,CAAD;EAAlB,CAN5B;AAAA;AAUA;AACA;AACA;;;AACA,MAAM04R,iCAAN,SAAgDF,eAAhD,CAAgE;EAC5D7yb,WAAW,CAACw/J,OAAD,EAAU;IACjB;IACA,KAAKA,OAAL,GAAeA,OAAf;EACH;;AAJ2D;;AAMhEuzR,iCAAiC,CAAClxb,IAAlC;EAAA,iBAA+Hkxb,iCAA/H,EA3kBkG94R,+DA2kBlG,CAAkLqB,6EAAlL;AAAA;;AACAy3R,iCAAiC,CAAC9sR,IAAlC,kBA5kBkGhM,+DA4kBlG;EAAA,MAAmH84R,iCAAnH;EAAA;EAAA,WA5kBkG94R,gEA4kBlG,CAA8M,CACtM;IACIrtJ,OAAO,EAAEimb,eADb;IAEI5jR,WAAW,EAAEtU,yDAAU,CAAC,MAAMo4R,iCAAP;EAF3B,CADsM,CAA9M,GA5kBkG94R,wEA4kBlG;AAAA;;AAMA;EAAA,mDAllBkGA,+DAklBlG,CAA4F84R,iCAA5F,EAA2I,CAAC;IAChIzwb,IAAI,EAAE63J,oDAD0H;IAEhI13J,IAAI,EAAE,CAAC;MACCkK,SAAS,EAAE,CACP;QACIC,OAAO,EAAEimb,eADb;QAEI5jR,WAAW,EAAEtU,yDAAU,CAAC,MAAMo4R,iCAAP;MAF3B,CADO,CADZ;MAOC1mb,QAAQ,EAAE;IAPX,CAAD;EAF0H,CAAD,CAA3I,EAW4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CAXtF;AAAA;;AAaA,MAAMy3R,uBAAuB,GAAIC,KAAD,KAAY;EACxC12R,OAAO,EAAE,IAD+B;EAExCiV,WAAW,EAAE;IAAEE,UAAU,EAAEuhR,KAAK,GAAG,MAAH,GAAY,OAA/B;IAAwCthR,QAAQ,EAAE;EAAlD,CAF2B;EAGxCL,UAAU,EAAE;IAAEI,UAAU,EAAEuhR,KAAK,GAAG,MAAH,GAAY,OAA/B;IAAwCthR,QAAQ,EAAE;EAAlD;AAH4B,CAAZ,CAAhC;AAKA;AACA;AACA;;;AACA,MAAM0lG,gBAAN,CAAuB;EACnBr3Q,WAAW,CAACy/J,YAAD,EAAe+P,YAAf,EAA6BijR,cAA7B,EAA6ChmR,iBAA7C,EAAgEvP,OAAhE,EAAyEqS,IAAzE,EAA+EhQ,QAA/E,EAAyF2zR,IAAzF,EAA+F;IACtG,KAAKzzR,YAAL,GAAoBA,YAApB;IACA,KAAK+P,YAAL,GAAoBA,YAApB;IACA,KAAKijR,cAAL,GAAsBA,cAAtB;IACA,KAAKhmR,iBAAL,GAAyBA,iBAAzB;IACA,KAAKvP,OAAL,GAAeA,OAAf;IACA,KAAKqS,IAAL,GAAYA,IAAZ;IACA,KAAKhQ,QAAL,GAAgBA,QAAhB;IACA,KAAK2zR,IAAL,GAAYA,IAAZ;IACA;AACR;AACA;;IACQ,KAAK/7W,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;;IACQ,KAAKmvF,QAAL,GAAgB,CAAhB;IACA;AACR;AACA;;IACQ,KAAK70I,IAAL,GAAY,IAAIyoI,uDAAJ,EAAZ;IACA;AACR;AACA;;IACQ,KAAKt5I,KAAL,GAAa,IAAIs5I,uDAAJ,EAAb;IACA,KAAKi9B,WAAL,GAAmB,IAAnB;IACA,KAAKg8P,gCAAL,GAAwC,IAAIt0b,yCAAJ,EAAxC;IACA,KAAKk5K,aAAL,GAAqB,IAAIrc,8CAAJ,EAArB;IACA,KAAKsU,SAAL,GAAiB,IAAItU,8CAAJ,EAAjB;IACAG,0EAAe,CAACW,eAAD,CAAf;IACA,KAAK8D,SAAL,GAAiBb,YAAY,CAACc,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;EACH;EACD;AACJ;AACA;;;EACiB,IAATimF,SAAS,CAAC9iP,KAAD,EAAQ;IACjB,KAAKyzE,QAAL,GAAgBzzE,KAAhB;EACH;;EACY,IAAT8iP,SAAS,GAAG;IACZ,OAAO,KAAKrvK,QAAZ;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACqB,IAAbg5F,aAAa,CAACC,QAAD,EAAW;IACxB,KAAKpD,cAAL,GAAsB3nK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB0tb,uBAAuB,CAAC,KAAKvzR,YAAL,CAAkBc,GAAnB,CAAzC,EAAkE6P,QAAlE,CAAtB;EACH;;EACgB,IAAbD,aAAa,GAAG;IAChB,OAAO,KAAKnD,cAAL,IAAuBgmR,uBAAuB,CAAC,KAAKvzR,YAAL,CAAkBc,GAAnB,CAArD;EACH;EACD;AACJ;AACA;;;EACgB,IAARM,QAAQ,CAACA,QAAD,EAAW;IACnB,KAAKyF,QAAL,GAAgBzF,QAAhB;EACH;;EACW,IAARA,QAAQ,GAAG;IACX,OAAO,KAAKyF,QAAZ;EACH;;EACW,IAARwL,QAAQ,GAAG;IACX,MAAM;MAAEA;IAAF,IAAe,KAAK3B,aAA1B;;IACA,IAAI,CAAC2B,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;MAClC,OAAOvvK,SAAP;IACH;;IACD,OAAOuvK,QAAQ,KAAK,WAAb,GAA2B,KAAK9U,SAAhC,GAA4C8U,QAAnD;EACH;;EACY,IAATM,SAAS,CAAC3gJ,IAAD,EAAO;IAChB,IAAI,KAAK2gJ,SAAL,KAAmB3gJ,IAAvB,EAA6B;MACzB;IACH;;IACD,MAAM62I,SAAS,GAAG,IAAInC,gBAAJ,EAAlB;;IACA,IAAI10I,IAAJ,EAAU;MACN,KAAKA,IAAL,CAAUw1H,IAAV,CAAeqhB,SAAf;IACH,CAFD,MAGK;MACD,KAAK1nJ,KAAL,CAAWqmI,IAAX,CAAgBqhB,SAAhB;IACH;;IACD,IAAIA,SAAS,CAACjC,kBAAV,EAAJ,EAAoC;MAChC;IACH;;IACD,KAAK6J,MAAL,CAAYz+I,IAAZ;EACH;;EACY,IAAT2gJ,SAAS,GAAG;IACZ,OAAO,KAAKvF,KAAZ;EACH;EACD;AACJ;AACA;;;EACIlK,OAAO,CAACogF,EAAD,EAAK;IACR,KAAKt2E,iBAAL,CAAuBglR,eAAvB;IACA,KAAKhlR,iBAAL,CAAuBwhO,UAAvB,CAAkClrJ,EAAlC,EAFQ,CAGR;;IACA,KAAK7lF,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,IAApD;EACH;EACD;AACJ;AACA;;;EACIivP,UAAU,CAACzrR,KAAD,EAAQ;IACd;IACA,IAAI28I,OAAO,CAAC38I,KAAK,CAACqnJ,aAAP,EAAuBvK,EAAD,IAAQA,EAAE,KAAK,KAAKF,OAAL,CAAauD,aAAlD,CAAX,EAA6E;MACzE,KAAKvD,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,IAApD;MACA;IACH;;IACD,KAAKogH,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,KAAKwpH,QAAL,CAAc3kJ,QAAd,EAApD;EACH;;EACU,IAAPmlJ,OAAO,GAAG;IACV,OAAO,SAAP;EACH;;EACS,IAANssR,MAAM,GAAG;IACT,OAAO,KAAK9yR,SAAZ;EACH;;EACiB,IAAd+sH,cAAc,GAAG;IACjB,OAAO,KAAKl2M,QAAZ;EACH;;EACD0sF,eAAe,GAAG;IACd,MAAM3G,OAAO,GAAG,KAAKA,OAAL,CAAauD,aAA7B;;IACA,IAAI,CAACvD,OAAO,CAACsd,YAAR,CAAqB,UAArB,CAAL,EAAuC;MACnC,KAAKtd,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,GAApD;IACH;;IACD,KAAKyyH,IAAL,CAAUnM,iBAAV,CAA4B,MAAM;MAC9B,KAAKiwR,sBAAL,GAA8B,KAAK9zR,QAAL,CAAc8D,MAAd,CAAqB,KAAKnG,OAAL,CAAauD,aAAlC,EAAiD,SAAjD,EAA6DsiF,EAAD,IAAQ;QAC9F,QAAQA,EAAE,CAACv/E,OAAX;UACI,KAAKtI,0EAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;cAChB2hI,EAAE,CAACztM,cAAH;;cACA,IAAI,KAAKgrH,SAAL,KAAmB,KAAvB,EAA8B;gBAC1B,KAAKmM,iBAAL,CAAuBi/P,SAAvB,CAAiC3oL,EAAjC;cACH,CAFD,MAGK;gBACD,KAAKt2E,iBAAL,CAAuBsjP,SAAvB,CAAiChtK,EAAjC;cACH,CAPe,CAQhB;;;cACA,KAAK7lF,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,IAApD;YACH,CAVD;YAWA;;UACJ,KAAKo+G,2EAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;cAChB2hI,EAAE,CAACztM,cAAH;;cACA,IAAI,KAAKgrH,SAAL,KAAmB,KAAvB,EAA8B;gBAC1B,KAAKmM,iBAAL,CAAuBsjP,SAAvB,CAAiChtK,EAAjC;cACH,CAFD,MAGK;gBACD,KAAKt2E,iBAAL,CAAuBi/P,SAAvB,CAAiC3oL,EAAjC;cACH,CAPe,CAQhB;;;cACA,KAAK7lF,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,IAApD;YACH,CAVD;YAWA;;UACJ,KAAKo+G,oEAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM,KAAKqrD,iBAAL,CAAuBglR,eAAvB,EAApB;YACA;;UACJ,KAAKv2R,uEAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM,KAAK8uD,MAAL,CAAY,KAAZ,CAApB;YACA;;UACJ;YACI;QAlCR;MAoCH,CArC6B,CAA9B;IAsCH,CAvCD;;IAwCA,IAAI,KAAK/4F,QAAT,EAAmB;MACf,KAAK4gG,aAAL,CAAmB/mG,GAAnB,CAAuB4qF,2CAAK,CAAC,KAAKm+H,YAAL,CAAkBjiG,MAAnB,EAA2B,KAAK64P,aAAL,CAAmBnwR,OAA9C,CAAL,CAA4Dt8J,SAA5D,CAAsE,MAAM;QAAE,KAAKy0L,QAAL;MAAkB,CAAhG,CAAvB,EADe,CAEf;MACA;MACA;MACA;;MACA,KAAKppB,IAAL,CAAUnM,iBAAV,CAA4B,MAAM1iJ,UAAU,CAAC,MAAM;QAAE,KAAKi4K,QAAL;QAAiB,KAAKA,QAAL;MAAkB,CAA5C,CAA5C;MACA,KAAKlsB,iBAAL,CAAuBmlR,cAAvB,GAAwC,KAAKA,cAA7C;IACH;;IACD,KAAKnlR,iBAAL,CAAuBqkR,gBAAvB,CAAwC,KAAKH,aAAL,CAAmBppR,OAAnB,EAAxC;IACA,KAAKwQ,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAK2/W,aAAL,CAAmBnwR,OAAnB,CAA2Bt8J,SAA3B,CAAsC6sb,GAAD,IAAS,KAAKtkR,iBAAL,CAAuBqkR,gBAAvB,CAAwCC,GAAG,CAACxpR,OAAJ,EAAxC,CAA9C,CAAvB;EACH;;EACD/7J,QAAQ,GAAG;IACP,KAAKusK,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAKyuF,YAAL,CAAkBe,OAAlB,CAA0Bt8J,SAA1B,CAAoC,CAAC;MAAEq8J;IAAF,CAAD,KAAc,KAAKD,SAAL,GAAiBC,GAAG,GAAG,KAAH,GAAW,KAAjF,CAAvB;;IACA,IAAItF,mFAAmB,EAAvB,EAA2B;MACvB,KAAKsU,IAAL,CAAUnM,iBAAV,CAA4B,MAAM,KAAK2U,aAAL,CAAmB/mG,GAAnB,CAAuB2qF,+CAAS,CAACp3J,QAAD,EAAW,OAAX,CAAT,CACpDkB,IADoD,CAC/CsV,uDAAM,CAAC,MAAM,CAAC,CAAC,KAAKo2J,QAAd,CADyC,EAChBp2J,uDAAM,CAAEgoO,EAAD,IAAQ,CAAC,KAAK5xE,QAAL,CAAc5gI,KAAd,CAAoBtwC,QAApB,CAA6B+8J,SAA7B,CAAuCyD,aAAvC,CAAqDiO,QAArD,CAA8Dq0E,EAAE,CAACnxN,MAAjE,CAAV,CADU,EAC2E7W,uDAAM,CAAEgoO,EAAD,IAAQ,CAAC,KAAK6uM,cAAL,CAAoBnxR,aAApB,CAAkCiO,QAAlC,CAA2Cq0E,EAAE,CAACnxN,MAA9C,CAAV,CADjF,EAEpD1tB,SAFoD,CAE1C,MAAM;QACjB,KAAKqrK,IAAL,CAAUnuD,GAAV,CAAc,MAAM;UAChB,KAAKgxD,SAAL,GAAiB,KAAjB;QACH,CAFD;MAGH,CANwD,CAAvB,CAAlC;IAOH;EACJ;;EACDzO,WAAW,CAACnD,OAAD,EAAU;IACjB,IAAIA,OAAO,CAAC8F,QAAZ,EAAsB;MAClB;MACA,KAAKpJ,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD0jH,OAAO,CAAC8F,QAAR,CAAiB+K,YAAjB,CAA8B1vJ,QAA9B,EAApD;IACH;EACJ;;EACDsiJ,WAAW,GAAG;IACV,KAAK2N,YAAL;;IACA,IAAI,KAAKyhR,sBAAT,EAAiC;MAC7B,KAAKA,sBAAL;IACH;;IACD,KAAKF,gCAAL,CAAsC5vb,IAAtC;IACA,KAAKw0K,aAAL,CAAmB1T,WAAnB;EACH;EACD;AACJ;AACA;;;EACsB,IAAdyuR,cAAc,GAAG;IACjB,OAAO,KAAKrzR,YAAL,CAAkBz0J,GAAlB,CAAsB,gBAAtB,CAAP;EACH;EACD;AACJ;AACA;;;EACW,IAAH4hK,GAAG,GAAG;IACN,OAAO,KAAKsmR,IAAZ;EACH;EACD;AACJ;AACA;;;EACII,eAAe,CAACvya,IAAD,EAAO;IAClB,KAAK0rJ,iBAAL,CAAuB1N,KAAvB,CAA6Bh+I,IAA7B;IACA,KAAKm8I,OAAL,CAAauD,aAAb,CAA2B3jH,YAA3B,CAAwC,UAAxC,EAAoD,IAApD;EACH;EACD;AACJ;AACA;;;EACIy2Y,SAAS,GAAG;IACR,KAAKnhR,SAAL,GAAiB,CAAC,KAAKA,SAAvB;IACA,KAAK3F,iBAAL,CAAuB1N,KAAvB,CAA6B;MAAE31E,OAAO,EAAE7mF,SAAX;MAAsB+d,KAAK,EAAE/d;IAA7B,CAA7B;EACH;EACD;AACJ;AACA;;;EACI2tK,MAAM,CAACkC,SAAD,EAAY;IACd,KAAKvF,KAAL,GAAauF,SAAS,KAAK7vK,SAAd,GAA0B6vK,SAA1B,GAAsC,CAAC,KAAKA,SAAzD;;IACA,IAAI,KAAKjB,QAAT,EAAmB;MACf,KAAKA,QAAL,CAAcvwJ,KAAd;MACA,KAAKuwJ,QAAL,GAAgB,IAAhB;IACH;;IACD,IAAI,KAAKiB,SAAT,EAAoB;MAChB,KAAKjB,QAAL,GAAgB,KAAK3B,YAAL,CAAkB/9I,IAAlB,CAAuB;QACnCwgJ,MAAM,EAAE,KAAK2/Q,cADsB;QAEnCpgR,WAAW,EAAE,KAAKrB,aAAL,CAAmBqB,WAFG;QAGnCF,UAAU,EAAE,KAAKnB,aAAL,CAAmBmB,UAHI;QAInC9+C,OAAO,EAAE,KAAK0/C,aAJqB;QAKnCJ,QAAQ,EAAE,KAAKA,QALoB;QAMnCvV,OAAO,EAAE,KAAK4T,aAAL,CAAmB5T,OANO;QAOnC0Q,UAAU,EAAE,KAAKkD,aAAL,CAAmBlD,UAPI;QAQnCiM,YAAY,EAAE;MARqB,CAAvB,CAAhB;MAUA,KAAKs6Q,yBAAL;MACA,KAAKxjR,SAAL,CAAeh/F,GAAf,CAAmB,KAAKmgG,QAAL,CAAciB,SAAd,CAAwBluK,SAAxB,CAAkC,KAAKuvb,WAAL,CAAiBj0a,IAAjB,CAAsB,IAAtB,CAAlC,CAAnB;MACA,KAAKwwJ,SAAL,CAAeh/F,GAAf,CAAmB,KAAKmgG,QAAL,CAAcusF,UAAd,CAAyBx5P,SAAzB,CAAmC,KAAKwvb,YAAL,CAAkBl0a,IAAlB,CAAuB,IAAvB,CAAnC,CAAnB;IACH;EACJ;EACD;AACJ;AACA;;;EACIm5K,QAAQ,GAAG;IACP,IAAI19B,mFAAmB,EAAvB,EAA2B;MACvB,MAAMsoD,cAAc,GAAGhvK,UAAU,CAAC,KAAK2oH,OAAL,CAAauD,aAAd,CAAV,GAAyC,KAAKkzR,mBAArE;MACA,KAAK5oP,MAAL,CAAYwY,cAAZ,EAA4B,KAAKqwO,aAAjC;MACA,KAAKhqD,OAAL,CAAarmL,cAAb,EAA6B,KAAKqwO,aAAlC;MACA,KAAKC,aAAL;MACA,KAAK95J,YAAL,CAAkBpwF,UAAlB;IACH;EACJ;EACD;AACJ;AACA;;;EACI8pP,WAAW,GAAG;IACV,KAAKlkR,IAAL,CAAUnM,iBAAV,CAA4B,MAAM;MAC9B,KAAK0wR,uBAAL,GAA+B,KAAKv0R,QAAL,CAAc8D,MAAd,CAAqB,KAAK8N,QAAL,CAAcI,YAAnC,EAAiD,SAAjD,EAA6DwxE,EAAD,IAAQ;QAC/F,QAAQA,EAAE,CAACv/E,OAAX;UACI,KAAKtI,wEAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;cAChB2hI,EAAE,CAACztM,cAAH;cACA,KAAKm3H,iBAAL,CAAuBi/P,SAAvB,CAAiC3oL,EAAjC;YACH,CAHD;YAIA;;UACJ,KAAK7nF,0EAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;cAChB2hI,EAAE,CAACztM,cAAH;cACA,KAAKm3H,iBAAL,CAAuBsjP,SAAvB,CAAiChtK,EAAjC;YACH,CAHD;YAIA;;UACJ,KAAK7nF,uEAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM,KAAK8uD,MAAL,CAAY,KAAZ,CAApB;YACA;;UACJ,KAAKhV,oEAAL;YACI,KAAKqU,IAAL,CAAUnuD,GAAV,CAAc,MAAM;cAChB,KAAK8uD,MAAL,CAAY,KAAZ;cACA,KAAKzD,iBAAL,CAAuBglR,eAAvB;YACH,CAHD;YAIA;;UACJ;YACI;QAvBR;MAyBH,CA1B8B,CAA/B;IA2BH,CA5BD;IA6BA,KAAK0B,gCAAL,CAAsC5vb,IAAtC;IACA,KAAKkpK,iBAAL,CAAuBykR,gBAAvB;IACA,KAAKzkR,iBAAL,CAAuBqkR,gBAAvB,CAAwC,KAAKiD,qBAAL,CAA2BxsR,OAA3B,EAAxC;IACA,KAAKwsR,qBAAL,CAA2BvzR,OAA3B,CACK/6J,IADL,CACUi4O,0DAAS,CAAC,KAAKy1M,gCAAN,CADnB,EAEKjvb,SAFL,CAEgB6sb,GAAD,IAAS,KAAKtkR,iBAAL,CAAuBqkR,gBAAvB,CAAwCC,GAAG,CAACxpR,OAAJ,EAAxC,CAFxB;EAGH;EACD;AACJ;AACA;;;EACImsR,YAAY,GAAG;IACX,KAAKP,gCAAL,CAAsC5vb,IAAtC;IACA,KAAKkpK,iBAAL,CAAuBqkR,gBAAvB,CAAwC,KAAKH,aAAL,CAAmBppR,OAAnB,EAAxC;IACA,KAAKopR,aAAL,CAAmBnwR,OAAnB,CACK/6J,IADL,CACUi4O,0DAAS,CAAC,KAAKy1M,gCAAN,CADnB,EAEKjvb,SAFL,CAEgB6sb,GAAD,IAAS,KAAKtkR,iBAAL,CAAuBqkR,gBAAvB,CAAwCC,GAAG,CAACxpR,OAAJ,EAAxC,CAFxB;IAGA,KAAKkF,iBAAL,CAAuBukR,kBAAvB;;IACA,IAAI,KAAK8C,uBAAT,EAAkC;MAC9B,KAAKA,uBAAL;IACH;EACJ;;EACDD,aAAa,GAAG;IACZ,MAAMl3Y,UAAU,GAAG,KAAKq3Y,QAAL,CAAcj5a,MAAd,CAAqBhZ,CAAC,IAAIA,CAAC,CAACqlR,SAAF,IAAerlR,CAAC,CAACqlT,UAA3C,EAAuDziT,MAAvD,GAAgE,CAAhE,GAAoE,SAApE,GAAgF,QAAnG;IACA,KAAK46J,QAAL,CAAc6b,QAAd,CAAuB,KAAKw2Q,cAAL,CAAoBnxR,aAA3C,EAA0D,YAA1D,EAAwE9jH,UAAxE;EACH;;EACa,IAAVgjN,UAAU,GAAG;IACb,IAAI,CAAC,KAAKxvF,aAAN,IAAuB,CAAC,KAAKA,aAAL,CAAmBt7H,KAA/C,EAAsD;MAClD,OAAOq9Y,iBAAP;IACH;;IACD,OAAO9xW,KAAK,CAAC,KAAK+vF,aAAL,CAAmBt7H,KAApB,CAAL,GAAkC,KAAKs7H,aAAL,CAAmBt7H,KAArD,GAA8D,GAAE,KAAKs7H,aAAL,CAAmBt7H,KAAM,IAAhG;EACH;;EACc,IAAXmmN,WAAW,GAAG;IACd,IAAI,CAAC,KAAK7qF,aAAN,IAAuB,CAAC,KAAKA,aAAL,CAAmBp7H,MAA/C,EAAuD;MACnD;IACH;;IACD,OAAOqrC,KAAK,CAAC,KAAK+vF,aAAL,CAAmBp7H,MAApB,CAAL,GAAmC,KAAKo7H,aAAL,CAAmBp7H,MAAtD,GAAgE,GAAE,KAAKo7H,aAAL,CAAmBp7H,MAAO,IAAnG;EACH;;EACsB,IAAnB4+Y,mBAAmB,GAAG;IACtB,IAAI,CAAC,KAAKx8W,QAAV,EAAoB;MAChB,OAAO,CAAP;IACH;;IACD,IAAI,CAAC,KAAK88W,yBAAV,EAAqC;MACjC,KAAKA,yBAAL,GAAiCxyK,UAAU,CAAC,KAAKmwK,cAAL,CAAoBnxR,aAArB,CAA3C;IACH;;IACD,OAAO,KAAKwzR,yBAAZ;EACH;;EACM,IAAHt9Q,GAAG,GAAG;IACN,IAAI3zE,SAAS,CAAC,KAAKkxV,SAAN,CAAb,EAA+B;MAC3B,OAAO,KAAKA,SAAZ;IACH;;IACD,MAAMC,WAAW,GAAGz/P,gBAAgB,CAAC,KAAKx3B,OAAL,CAAauD,aAAd,CAAhB,CAA6CkW,GAAjE;IACA,KAAKu9Q,SAAL,GAAiBlxV,SAAS,CAACmxV,WAAD,CAAT,GAAyBhtb,QAAQ,CAACgtb,WAAD,EAAc,EAAd,CAAjC,GAAqD,CAAtE;IACA,OAAO,KAAKD,SAAZ;EACH;;EACgB,IAAbN,aAAa,GAAG;IAChB,MAAM/+Y,KAAK,GAAG,KAAK87Y,aAAL,CAAmBh7W,MAAnB,CAA0B,CAACk3L,UAAD,EAAayiL,IAAb,KAAsBA,IAAI,CAACz6Y,KAAL,GAAag4N,UAAb,IAA2ByiL,IAAI,CAACsD,WAAL,KAAqB,KAAKj8Q,GAA1B,GAAgC,CAA3D,CAAhD,EAA+G,CAA/G,CAAd;IACA,OAAO/2I,IAAI,CAACyB,IAAL,CAAUwT,KAAV,CAAP;EACH;;EACe,IAAZu/Y,YAAY,GAAG;IACf,OAAO,KAAKJ,QAAL,CAAcj5a,MAAd,CAAsBu0a,IAAD,IAAU;MAClC,OAAOA,IAAI,CAACloK,SAAL,KAAmB,KAA1B;IACH,CAFM,CAAP;EAGH;;EACgB,IAAbitK,aAAa,GAAG;IAChB,OAAO,KAAKL,QAAL,CAAcj5a,MAAd,CAAsBu0a,IAAD,IAAU;MAClC,OAAOA,IAAI,CAACloK,SAAL,KAAmB,IAA1B;IACH,CAFM,CAAP;EAGH;;EACDr8E,MAAM,CAACwY,cAAD,EAAiBqwO,aAAjB,EAAgC;IAClC,IAAI/+Y,KAAJ;;IACA,IAAI0uK,cAAc,GAAGqwO,aAArB,EAAoC;MAChC,KAAK,IAAIzkb,CAAC,GAAG,KAAKilb,YAAL,CAAkBzvb,MAAlB,GAA2B,CAAxC,EAA2CwK,CAAC,IAAI,CAAhD,EAAmDA,CAAC,EAApD,EAAwD;QACpD,IAAIo0M,cAAc,GAAGqwO,aAArB,EAAoC;UAChC;QACH,CAFD,MAGK;UACD/+Y,KAAK,GAAG,KAAKy/Y,mBAAL,EAAR;UACAV,aAAa,IAAI/+Y,KAAjB;QACH;MACJ;IACJ;EACJ;;EACD+0V,OAAO,CAACrmL,cAAD,EAAiBqwO,aAAjB,EAAgC;IACnC,IAAI/+Y,KAAJ;;IACA,IAAI0uK,cAAc,GAAGqwO,aAArB,EAAoC;MAChC,KAAK,IAAIzkb,CAAC,GAAG,KAAKklb,aAAL,CAAmB1vb,MAAnB,GAA4B,CAAzC,EAA4CwK,CAAC,IAAI,CAAjD,EAAoDA,CAAC,EAArD,EAAyD;QACrD0lC,KAAK,GAAG,KAAK0/Y,mBAAL,CAAyBhxO,cAAzB,EAAyCqwO,aAAzC,CAAR;;QACA,IAAI/+Y,KAAJ,EAAW;UACP++Y,aAAa,IAAI/+Y,KAAjB;QACH,CAFD,MAGK;UACD;QACH;MACJ;IACJ;EACJ;;EACDy/Y,mBAAmB,GAAG;IAClB,MAAMhF,IAAI,GAAG,KAAK8E,YAAL,CAAkB,KAAKA,YAAL,CAAkBzvb,MAAlB,GAA2B,CAA7C,CAAb;IACA,MAAM6vb,eAAe,GAAG,KAAK7D,aAAL,CAAmB19Z,IAAnB,CAAyB3hB,CAAD,IAAO;MACnD,OAAOA,CAAC,CAACg+a,IAAF,KAAWA,IAAlB;IACH,CAFuB,CAAxB;IAGA,MAAMz6Y,KAAK,GAAG2/Y,eAAe,CAAC3/Y,KAA9B;IACAy6Y,IAAI,CAACloK,SAAL,GAAiB,IAAjB;IACA,KAAKqrK,cAAL,CAAoB/4P,OAApB,CAA4B41P,IAA5B;IACA,OAAOz6Y,KAAP;EACH;;EACD0/Y,mBAAmB,CAAChxO,cAAD,EAAiBqwO,aAAjB,EAAgC;IAC/C,MAAMtE,IAAI,GAAG,KAAK+E,aAAL,CAAmB,CAAnB,CAAb;IACA,MAAMG,eAAe,GAAG,KAAK7D,aAAL,CAAmB19Z,IAAnB,CAAwB3hB,CAAC,IAAIA,CAAC,CAACg+a,IAAF,KAAWA,IAAxC,CAAxB;IACAA,IAAI,CAACloK,SAAL,GAAiB,KAAjB;IACAkoK,IAAI,CAAC3yY,UAAL,GAAkB,QAAlB;IACA,KAAK81Y,cAAL,CAAoB/4P,OAApB,CAA4B41P,IAA5B;;IACA,IAAI/rO,cAAc,GAAGqwO,aAAa,GAAGY,eAAe,CAAC3/Y,KAArD,EAA4D;MACxDy6Y,IAAI,CAAC3yY,UAAL,GAAkB,SAAlB;MACA,KAAK81Y,cAAL,CAAoB/4P,OAApB,CAA4B41P,IAA5B;IACH,CAHD,MAIK;MACDA,IAAI,CAACloK,SAAL,GAAiB,IAAjB;MACA,KAAKqrK,cAAL,CAAoB/4P,OAApB,CAA4B41P,IAA5B;IACH;;IACD,OAAOkF,eAAe,CAAC3/Y,KAAvB,CAd+C,CAcjB;EACjC;;EACD2+Y,yBAAyB,GAAG;IACxB,MAAMiB,qBAAqB,GAAG,KAAKtjR,QAAL,CAAc5gI,KAAd,CAAoBtwC,QAApB,CAA6BwiZ,gBAA7B,CAA8ChiP,aAA5E;IACAg0R,qBAAqB,CAAC/3Y,KAAtB,CAA4B7H,KAA5B,GAAoC,KAAK8qN,UAAzC;IACA80L,qBAAqB,CAAC/3Y,KAAtB,CAA4B3H,MAA5B,GAAqC,KAAKimN,WAA1C;IACAy5L,qBAAqB,CAAC/3Y,KAAtB,CAA4By6B,QAA5B,GAAuC,MAAvC;EACH;;EACDy6F,YAAY,GAAG;IACX,IAAI,KAAKT,QAAT,EAAmB;MACf,KAAKnB,SAAL,CAAe3L,WAAf;MACA,KAAK8M,QAAL,CAAcvwJ,KAAd;MACA,KAAKuwJ,QAAL,GAAgB,IAAhB;IACH;EACJ;;AAhbkB;;AAkbvBkmG,gBAAgB,CAACx1Q,IAAjB;EAAA,iBAA8Gw1Q,gBAA9G,EAzhCkGp9G,+DAyhClG,CAAgJqB,6EAAhJ,GAzhCkGrB,+DAyhClG,CAAmL+B,wEAAnL,GAzhCkG/B,+DAyhClG,CAA+Mm1R,cAA/M,GAzhCkGn1R,+DAyhClG,CAA0O6Q,iBAA1O,GAzhCkG7Q,+DAyhClG,CAAwQA,qDAAxQ,GAzhCkGA,+DAyhClG,CAAkSA,iDAAlS,GAzhCkGA,+DAyhClG,CAAwTA,oDAAxT,GAzhCkGA,+DAyhClG,CAAiVA,4DAAjV;AAAA;;AACAo9G,gBAAgB,CAAC1rQ,IAAjB,kBA1hCkGsuJ,+DA0hClG;EAAA,MAAkGo9G,gBAAlG;EAAA;EAAA;IAAA;MA1hCkGp9G,4DA0hClG,WAQwDm9G,oBARxD;IAAA;;IAAA;MAAA;;MA1hCkGn9G,4DA0hClG,MA1hCkGA,yDA0hClG;IAAA;EAAA;EAAA;IAAA;MA1hCkGA,yDA0hClG;MA1hCkGA,yDA0hClG;MA1hCkGA,yDA0hClG;MA1hCkGA,yDA0hClG,SAQ6eY,2DAR7e;MA1hCkGZ,yDA0hClG;MA1hCkGA,yDA0hClG;IAAA;;IAAA;MAAA;;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;MA1hCkGA,4DA0hClG,MA1hCkGA,yDA0hClG;IAAA;EAAA;EAAA;EAAA;IAAA;MA1hCkGA,wDA0hClG;QAAA,OAAkG,mBAAlG;MAAA;QAAA,OAAkG,sBAAlG;MAAA;IAAA;;IAAA;MA1hCkGA,yDA0hClG;MA1hCkGA,yDA0hClG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WA1hCkGA,gEA0hClG,CAA2mB,CACnmBm1R,cADmmB,EAEnmBtkR,iBAFmmB,EAGnmBvP,6EAHmmB,EAInmB;IACI3uJ,OAAO,EAAE4uJ,qEADb;IAEI3uJ,QAAQ,EAAE;EAFd,CAJmmB,CAA3mB,GA1hCkGotJ,kEA0hClG;EAAA;EAAA;EAAA;IAAA;;IAAA;MAAA;AACA;AACA;AACA;MAHA;MAAA;IAAA;MAAA,kCAWwB,yGAXxB;IAAA;;IAAA;EAAA;EAAA;IAAA;MA1hCkGA,gEAmiC1F,MATR;MA1hCkGA,wDAwiC1F,sEAdR;MA1hCkGA,wDAijC1F,0DAvBR;MA1hCkGA,wDA8jC1F,2EA9jC0FA,oEA8jC1F,CApCR;MA1hCkGA,gEA6kC1F,YAnDR;MA1hCkGA,wDA8kC1F,oFApDR;IAAA;;IAAA;MA1hCkGA,uDAwiC3D,GAdvC;MA1hCkGA,wDAwiC3D,yBAdvC;MA1hCkGA,uDAujCrF,GA7Bb;MA1hCkGA,wDAujCrF,sBA7Bb;MA1hCkGA,uDA8kCpE,GApD9B;MA1hCkGA,wDA8kCpE,sBApD9B;IAAA;EAAA;EAAA,eAqD4Cs4R,wBArD5C,EAqD+N30M,iFArD/N,EAqD8Vm1M,iCArD9V,EAqDwb92R,oDArDxb,EAqDkiBA,iDArDliB;EAAA;AAAA;;AAsDA;EAAA,mDAhlCkGhC,+DAglClG,CAA4Fo9G,gBAA5F,EAA0H,CAAC;IAC/G/0Q,IAAI,EAAExE,oDADyG;IAE/G2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,cADX;MAECv5J,SAAS,EAAE,CACPyib,cADO,EAEPtkR,iBAFO,EAGPvP,6EAHO,EAIP;QACI3uJ,OAAO,EAAE4uJ,qEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CAJO,CAFZ;MAWCR,QAAQ,EAAE,eAXX;MAYCL,QAAQ,EAAG;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;IAzDmB,CAAD;EAFyG,CAAD,CAA1H,EA6D4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,EAAmC;MAAEj5J,IAAI,EAAE05J,wEAAeqW;IAAvB,CAAnC,EAA8D;MAAE/vK,IAAI,EAAE8sb;IAAR,CAA9D,EAAwF;MAAE9sb,IAAI,EAAEwoK;IAAR,CAAxF,EAAqH;MAAExoK,IAAI,EAAE23J,qDAAaW;IAArB,CAArH,EAA8I;MAAEt4J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA9I,EAAmK;MAAE1jK,IAAI,EAAE23J,oDAAY8L;IAApB,CAAnK,EAA2L;MAAEzjK,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAA3L,CAAP;EAAoO,CA7D9Q,EA6DgS;IAAE13F,QAAQ,EAAE,CAAC;MAC7R70E,IAAI,EAAE+3J,gDAAKA;IADkR,CAAD,CAAZ;IAEhRmsF,SAAS,EAAE,CAAC;MACZlkP,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAFqQ;IAIhR8V,aAAa,EAAE,CAAC;MAChB7tK,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAJiQ;IAMhRiM,QAAQ,EAAE,CAAC;MACXhkK,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CANsQ;IAQhRwG,QAAQ,EAAE,CAAC;MACXv+J,IAAI,EAAE+3J,gDADK;MAEX53J,IAAI,EAAE,CAAC,UAAD;IAFK,CAAD,CARsQ;IAWhRgvB,IAAI,EAAE,CAAC;MACPnvB,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CAX0Q;IAahR15I,KAAK,EAAE,CAAC;MACRte,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CAbyQ;IAehR05R,QAAQ,EAAE,CAAC;MACX1xb,IAAI,EAAEo4J,0DADK;MAEXj4J,IAAI,EAAE,CAAC20Q,oBAAD;IAFK,CAAD,CAfsQ;IAkBhRw6K,cAAc,EAAE,CAAC;MACjBtvb,IAAI,EAAEy4J,oDADW;MAEjBt4J,IAAI,EAAE,CAAC,gBAAD,EAAmB;QAAE+vK,MAAM,EAAE;MAAV,CAAnB;IAFW,CAAD,CAlBgQ;IAqBhRN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CArBiQ;IAwBhRunH,YAAY,EAAE,CAAC;MACfz3R,IAAI,EAAEy4J,oDADS;MAEft4J,IAAI,EAAE,CAAC,cAAD,EAAiB;QAAE+vK,MAAM,EAAE;MAAV,CAAjB;IAFS,CAAD,CAxBkQ;IA2BhRxV,SAAS,EAAE,CAAC;MACZ16J,IAAI,EAAEy4J,oDADM;MAEZt4J,IAAI,EAAE,CAAC,WAAD,EAAc;QAAEiwK,IAAI,EAAE7X,2DAAR;QAA0B2X,MAAM,EAAE;MAAlC,CAAd;IAFM,CAAD,CA3BqQ;IA8BhRm+Q,aAAa,EAAE,CAAC;MAChBrub,IAAI,EAAE47K,uDADU;MAEhBz7K,IAAI,EAAE,CAAC,iBAAD;IAFU,CAAD,CA9BiQ;IAiChRsxb,qBAAqB,EAAE,CAAC;MACxBzxb,IAAI,EAAE47K,uDADkB;MAExBz7K,IAAI,EAAE,CAAC,kBAAD;IAFkB,CAAD,CAjCyP;IAoChR00L,WAAW,EAAE,CAAC;MACd70L,IAAI,EAAEi4J,sDADQ;MAEd93J,IAAI,EAAE,CAAC,gBAAD;IAFQ,CAAD,EAGd;MACCH,IAAI,EAAEi4J,sDADP;MAEC93J,IAAI,EAAE,CAAC,iBAAD;IAFP,CAHc,CApCmQ;IA0ChRkgK,OAAO,EAAE,CAAC;MACVrgK,IAAI,EAAEk4J,uDADI;MAEV/3J,IAAI,EAAE,CAAC,OAAD,EAAU,CAAC,QAAD,CAAV;IAFI,CAAD,CA1CuQ;IA6ChRspS,UAAU,EAAE,CAAC;MACbzpS,IAAI,EAAEk4J,uDADO;MAEb/3J,IAAI,EAAE,CAAC,UAAD,EAAa,CAAC,QAAD,CAAb;IAFO,CAAD,CA7CoQ;IAgDhRqkK,OAAO,EAAE,CAAC;MACVxkK,IAAI,EAAEi4J,sDADI;MAEV93J,IAAI,EAAE,CAAC,WAAD;IAFI,CAAD,CAhDuQ;IAmDhR2wb,MAAM,EAAE,CAAC;MACT9wb,IAAI,EAAEi4J,sDADG;MAET93J,IAAI,EAAE,CAAC,UAAD;IAFG,CAAD,CAnDwQ;IAsDhR4qR,cAAc,EAAE,CAAC;MACjB/qR,IAAI,EAAEi4J,sDADW;MAEjB93J,IAAI,EAAE,CAAC,2BAAD;IAFW,CAAD;EAtDgQ,CA7DhS;AAAA;AAwHA;AACA;AACA;;;AACA,MAAM+mR,sBAAN,SAAqCpS,oBAArC,CAA0D;EACtDp3Q,WAAW,GAAG;IACV,QADU,CAEV;;IACA;AACR;AACA;;IACQ,KAAKipR,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;;IACQ,KAAKC,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKvpH,UAAL,GAAkB,KAAlB;IACA;AACR;AACA;;IACQ,KAAKgB,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKpC,QAAL,GAAgB,OAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKyD,UAAL,GAAkB,MAAlB;IACA;AACR;AACA;;IACQ,KAAKjD,KAAL,GAAa,IAAI7E,uDAAJ,EAAb;IACA;AACR;AACA;;IACQ,KAAKmvH,WAAL,GAAmB,IAAInvH,uDAAJ,EAAnB;IACA;AACR;AACA;AACA;;IACQ,KAAK2F,cAAL,GAAsB,IAAI3F,uDAAJ,EAAtB;IACA,KAAKivH,cAAL,GAAsB;MAClBvoL,IAAI,EAAE,EADY;MAElBkgE,IAAI,EAAE,EAFY;MAGlBK,SAAS,EAAE,EAHO;MAIlBE,QAAQ,EAAE;IAJQ,CAAtB;IAMA,KAAKqzR,eAAL,GAAuB;MACnB9zV,IAAI,EAAE,EADa;MAEnBkgE,IAAI,EAAE,EAFa;MAGnBK,SAAS,EAAE,EAHQ;MAInBE,QAAQ,EAAE;IAJS,CAAvB;EAMH;EACD;AACJ;AACA;;;EACY,IAAJzgE,IAAI,CAACA,IAAD,EAAO;IACX,KAAKuoL,cAAL,CAAoBvoL,IAApB,GAA2B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKyrK,eAAL,CAAqB9zV,IAArB,GAA4B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;;;EACY,IAAJnmH,IAAI,CAACA,IAAD,EAAO;IACX,IAAIA,IAAJ,EAAU;MACN,KAAKvE,QAAL,GAAgBuE,IAAI,KAAK,SAAT,GAAqB,OAArB,GAA+BA,IAA/C;IACH;EACJ;EACD;AACJ;AACA;;;EACiB,IAATpC,SAAS,GAAG;IACZ,OAAO,KAAKf,UAAZ;EACH;;EACY,IAATe,SAAS,CAACh9J,KAAD,EAAQ;IACjB,KAAKi8J,UAAL,GAAkBj8J,KAAlB;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACY,IAAJo9J,IAAI,CAACA,IAAD,EAAO;IACX,KAAKqoH,cAAL,CAAoBroH,IAApB,GAA2B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKwrK,eAAL,CAAqB5zR,IAArB,GAA4B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;AACA;;;EACiB,IAAT/nH,SAAS,CAACA,SAAD,EAAY;IACrB,KAAKgoH,cAAL,CAAoBhoH,SAApB,GAAgCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,KAA3B,CAAnD;IACA,KAAKwrK,eAAL,CAAqBvzR,SAArB,GAAiCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,IAA3B,CAApD;EACH;EACD;AACJ;AACA;AACA;;;EACgB,IAAR7nH,QAAQ,CAACA,QAAD,EAAW;IACnB,KAAK8nH,cAAL,CAAoB9nH,QAApB,GAA+BmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,KAA1B,CAAlD;IACA,KAAKwrK,eAAL,CAAqBrzR,QAArB,GAAgCmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,IAA1B,CAAnD;EACH;EACD;AACJ;AACA;;;EACItmH,MAAM,GAAG;IACL,KAAK4vH,SAAL,GAAiB3xH,QAAjB,GAA4B,CAAC,CAA7B;EACH;EACD;AACJ;AACA;;;EACI6mH,QAAQ,GAAG;IACP,OAAO,CAAC,KAAKlmH,QAAb;EACH;EACD;AACJ;AACA;;;EACI5tH,KAAK,CAACmvM,EAAD,EAAK;IACN;IACA,IAAI,CAACA,EAAD,IAAOA,EAAE,CAACzgP,IAAH,KAAY,OAAnB,IAA8BygP,EAAE,CAACzgP,IAAH,KAAY,SAA9C,EAAyD;MACrD,KAAKkwR,SAAL,GAAiB5+O,KAAjB;IACH;;IACD,KAAK4+O,SAAL,GAAiB3xH,QAAjB,GAA4B,CAA5B;EACH;EACD;AACJ;AACA;;;EACI+mH,SAAS,GAAG;IACR,KAAK4K,SAAL,GAAiB3xH,QAAjB,GAA4B,CAAC,CAA7B;IACA,OAAO,KAAP;EACH;;EACD2xH,SAAS,GAAG;IACR,OAAO,CAAC,KAAKpL,SAAL,GAAiB,KAAKutK,qBAAtB,GAA8C,KAAKC,oBAApD,EAA0En0R,aAAjF;EACH;;AA/JqD;;AAiK1D+oH,sBAAsB,CAAC3nR,IAAvB;EAAA,iBAAoH2nR,sBAApH;AAAA;;AACAA,sBAAsB,CAAC79Q,IAAvB,kBA72CkGsuJ,+DA62ClG;EAAA,MAAwGuvH,sBAAxG;EAAA;EAAA;IAAA;MA72CkGvvH,yDA62ClG;MA72CkGA,yDA62ClG;MA72CkGA,yDA62ClG,SAAshCW,qDAAthC;MA72CkGX,yDA62ClG,SAAkpCW,qDAAlpC;IAAA;;IAAA;MAAA;;MA72CkGX,4DA62ClG,MA72CkGA,yDA62ClG;MA72CkGA,4DA62ClG,MA72CkGA,yDA62ClG;MA72CkGA,4DA62ClG,MA72CkGA,yDA62ClG;MA72CkGA,4DA62ClG,MA72CkGA,yDA62ClG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WA72CkGA,gEA62ClG,CAA8lB,CAAC;IAAErtJ,OAAO,EAAEwqQ,oBAAX;IAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM6uH,sBAAP;EAAxD,CAAD,CAA9lB,GA72CkGvvH,wEA62ClG;EAAA;EAAA;EAAA;EAAA;IAAA;MA72CkGA,wDA82C1F,kFA92C0FA,oEA82C1F,CADR;MA72CkGA,wDAu4C1F,kFAv4C0FA,oEAu4C1F,CA1BR;IAAA;EAAA;EAAA,eAkD4CsyC,6EAlD5C,EAkDmXtwC,oDAlDnX,EAkDqbA,oDAlDrb;EAAA;AAAA;;AAmDA;EAAA,mDAh6CkGhC,+DAg6ClG,CAA4FuvH,sBAA5F,EAAgI,CAAC;IACrHlnR,IAAI,EAAExE,oDAD+G;IAErH2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,oBADX;MAECv5J,SAAS,EAAE,CAAC;QAAEC,OAAO,EAAEwqQ,oBAAX;QAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM6uH,sBAAP;MAAxD,CAAD,CAFZ;MAGCn9Q,QAAQ,EAAE,sBAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAtDmB,CAAD;EAF+G,CAAD,CAAhI,EA0D4B,YAAY;IAAE,OAAO,EAAP;EAAY,CA1DtD,EA0DwE;IAAEi9Q,QAAQ,EAAE,CAAC;MACrE3mR,IAAI,EAAE+3J,gDAAKA;IAD0D,CAAD,CAAZ;IAExD6uH,QAAQ,EAAE,CAAC;MACX5mR,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAF8C;IAIxDz5D,IAAI,EAAE,CAAC;MACPt+F,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAJkD;IAMxD39G,KAAK,EAAE,CAAC;MACRp6C,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CANiD;IAQxDzY,SAAS,EAAE,CAAC;MACZt/I,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAR6C;IAUxD9qH,KAAK,EAAE,CAAC;MACRjtC,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAViD;IAYxDmH,QAAQ,EAAE,CAAC;MACXl/J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAZ8C;IAcxDsF,UAAU,EAAE,CAAC;MACbr9J,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAd4C;IAgBxDyI,IAAI,EAAE,CAAC;MACPxgK,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAhBkD;IAkBxDqG,SAAS,EAAE,CAAC;MACZp+J,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAlB6C;IAoBxDsG,QAAQ,EAAE,CAAC;MACXr+J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CApB8C;IAsBxDkE,QAAQ,EAAE,CAAC;MACXj8J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAtB8C;IAwBxD2H,UAAU,EAAE,CAAC;MACb1/J,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAxB4C;IA0BxDyG,IAAI,EAAE,CAAC;MACPx+J,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CA1BkD;IA4BxD8G,SAAS,EAAE,CAAC;MACZ7+J,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CA5B6C;IA8BxDgH,QAAQ,EAAE,CAAC;MACX/+J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CA9B8C;IAgCxD0E,KAAK,EAAE,CAAC;MACRz8J,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CAhCiD;IAkCxD+uH,WAAW,EAAE,CAAC;MACd/mR,IAAI,EAAEg4J,iDAAMA;IADE,CAAD,CAlC2C;IAoCxDuF,cAAc,EAAE,CAAC;MACjBv9J,IAAI,EAAEg4J,iDAAMA;IADK,CAAD,CApCwC;IAsCxDutH,eAAe,EAAE,CAAC;MAClBvlR,IAAI,EAAEy4J,oDADY;MAElBt4J,IAAI,EAAE,CAAC,iBAAD,EAAoB;QAAE+vK,MAAM,EAAE;MAAV,CAApB;IAFY,CAAD,CAtCuC;IAyCxDN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CAzCyC;IA4CxDoiR,oBAAoB,EAAE,CAAC;MACvBtyb,IAAI,EAAEy4J,oDADiB;MAEvBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAEiwK,IAAI,EAAE9X,qDAAR;QAAoB4X,MAAM,EAAE;MAA5B,CAAlB;IAFiB,CAAD,CA5CkC;IA+CxDmiR,qBAAqB,EAAE,CAAC;MACxBryb,IAAI,EAAEy4J,oDADkB;MAExBt4J,IAAI,EAAE,CAAC,gBAAD,EAAmB;QAAEiwK,IAAI,EAAE9X,qDAAR;QAAoB4X,MAAM,EAAE;MAA5B,CAAnB;IAFkB,CAAD;EA/CiC,CA1DxE;AAAA;AA8GA;AACA;AACA;;;AACA,MAAMw9G,2BAAN,SAA0C5Y,oBAA1C,CAA+D;EAC3Dp3Q,WAAW,CAACy/J,YAAD,EAAe;IACtB;IACA,KAAKA,YAAL,GAAoBA,YAApB;IACA;AACR;AACA;;IACQ,KAAK+G,SAAL,GAAiB,UAAjB;IACA,KAAKa,YAAL,GAAoB,CAAC,CAArB;IACA,KAAKipR,UAAL,GAAkBA,UAAU,CAAC,KAAK7wR,YAAL,CAAkBc,GAAnB,CAA5B;IACA,KAAKgwR,UAAL,GAAkBA,UAAU,CAAC,KAAK9wR,YAAL,CAAkBc,GAAnB,CAA5B;EACH;EACD;AACJ;AACA;;;EACY,IAAJuC,IAAI,CAACA,IAAD,EAAO;IACX,IAAIA,IAAJ,EAAU;MACN,KAAK+xR,gBAAL,CAAsBnrb,OAAtB,CAA8B+E,CAAC,IAAIA,CAAC,CAAC8vJ,QAAF,GAAauE,IAAI,KAAK,SAAT,GAAqB,OAArB,GAA+BA,IAA/E;IACH;EACJ;;EACiB,IAAdgyR,cAAc,GAAG;IACjB,OAAO,KAAKC,cAAL,GACFztR,OADE,CACMvsJ,MADN,CACatM,CAAC,IAAI,CAACA,CAAC,CAACo/H,UADrB,EAEF3uI,GAFE,CAEEuP,CAAC,IAAIA,CAAC,CAACyuJ,OAFT,CAAP;EAGH;EACD;AACJ;AACA;;;EACIyF,OAAO,GAAG;IACN;IACA,KAAK0E,YAAL,GAAoB,CAApB;EACH;EACD;AACJ;AACA;;;EACIoqF,UAAU,CAAC1O,EAAD,EAAK;IACXA,EAAE,CAACztM,cAAH;EACH;EACD;AACJ;AACA;;;EACI0/Y,qBAAqB,CAAC7vb,KAAD,EAAQ65J,MAAR,EAAgB;IACjCA,MAAM,CAAC2B,QAAP,GAAkBx7J,KAAlB;IACA65J,MAAM,CAACa,cAAP,CAAsB5Y,IAAtB,CAA2B9hJ,KAA3B;EACH;EACD;AACJ;AACA;;;EACI6rK,aAAa,CAAC+xE,EAAD,EAAK;IACd,KAAK17E,YAAL,GAAoB,KAAKytR,cAAL,CAAoBttR,SAApB,CAA8B2oR,EAAE,IAAIA,EAAE,KAAKptM,EAAE,CAACnxN,MAAV,IAAoBu+Z,EAAE,CAACzhR,QAAH,CAAYq0E,EAAE,CAACnxN,MAAf,CAAxD,CAApB;IACA,KAAK68I,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;EACH;EACD;AACJ;AACA;;;EACI2kC,QAAQ,GAAG;IACP,OAAO,EAAE,KAAKlmH,QAAL,IAAiB,KAAKszR,cAAL,CAAoBnwb,MAApB,KAA+B,CAAlD,CAAP;EACH;EACD;AACJ;AACA;;;EACIivC,KAAK,CAACmvM,EAAE,GAAG,EAAN,EAAU;IACX,MAAMkyM,OAAO,GAAG,KAAK3E,UAAL,CAAgB,KAAKlpK,SAArB,CAAhB;IACA,MAAM8tK,OAAO,GAAG,KAAK3E,UAAL,CAAgB,KAAKnpK,SAArB,CAAhB;IACA,KAAK//G,YAAL,GAAoB2oR,iBAAiB,CAACkF,OAAD,EAAUD,OAAV,EAAmB,KAAKH,cAAxB,CAAjB,CAAyD/xM,EAAzD,CAApB;IACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;EACH;EACD;AACJ;AACA;;;EACI6kC,SAAS,CAAC7kC,EAAD,EAAK;IACV,MAAMkyM,OAAO,GAAG,KAAK3E,UAAL,CAAgB,KAAKlpK,SAArB,CAAhB;IACA,MAAM8tK,OAAO,GAAG,KAAK3E,UAAL,CAAgB,KAAKnpK,SAArB,CAAhB;IACA,MAAM+tK,WAAW,GAAGrF,UAAU,CAAC,KAAKgF,cAAN,CAA9B;IACA,MAAMM,YAAY,GAAGnK,QAAQ,CAAC,KAAK5jR,YAAN,CAA7B;IACA,KAAKA,YAAL,GAAoB+oR,gBAAgB,CAAC8E,OAAD,EAAUD,OAAV,EAAmBE,WAAnB,CAAhB,CAAgD,KAAK9tR,YAArD,EAAmE07E,EAAnE,CAApB;IACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;IACA,OAAO,CAACqyM,YAAY,CAAC,KAAK/tR,YAAN,CAApB;EACH;;EACD0tR,cAAc,GAAG;IACb,OAAO,KAAK3tK,SAAL,GAAiB,KAAKiuK,mBAAtB,GAA4C,KAAKC,kBAAxD;EACH;;EACD7mR,WAAW,CAACzoJ,KAAD,EAAQ+8N,EAAR,EAAY;IACnB;IACA,IAAI,CAACA,EAAE,CAACzgP,IAAJ,IAAYygP,EAAE,CAACzgP,IAAH,KAAY,OAAxB,IAAmCygP,EAAE,CAACzgP,IAAH,KAAY,SAAnD,EAA8D;MAC1D,KAAKwyb,cAAL,CAAoB9ua,KAApB,EAA2B4tB,KAA3B;IACH;EACJ;;AAvF0D;;AAyF/Do8O,2BAA2B,CAACnuR,IAA5B;EAAA,iBAAyHmuR,2BAAzH,EA1mDkG/1H,+DA0mDlG,CAAsKqB,6EAAtK;AAAA;;AACA00H,2BAA2B,CAACrkR,IAA5B,kBA3mDkGsuJ,+DA2mDlG;EAAA,MAA6G+1H,2BAA7G;EAAA;EAAA;IAAA;MA3mDkG/1H,4DA2mDlG,WAAseuvH,sBAAte;IAAA;;IAAA;MAAA;;MA3mDkGvvH,4DA2mDlG,MA3mDkGA,yDA2mDlG;IAAA;EAAA;EAAA;IAAA;MA3mDkGA,yDA2mDlG;MA3mDkGA,yDA2mDlG;MA3mDkGA,yDA2mDlG;MA3mDkGA,yDA2mDlG;IAAA;;IAAA;MAAA;;MA3mDkGA,4DA2mDlG,MA3mDkGA,yDA2mDlG;MA3mDkGA,4DA2mDlG,MA3mDkGA,yDA2mDlG;MA3mDkGA,4DA2mDlG,MA3mDkGA,yDA2mDlG;MA3mDkGA,4DA2mDlG,MA3mDkGA,yDA2mDlG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WA3mDkGA,gEA2mDlG,CAAoR,CAACsB,6EAAD,EAAsB;IAAE3uJ,OAAO,EAAEwqQ,oBAAX;IAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAMq1H,2BAAP;EAAxD,CAAtB,CAApR,GA3mDkG/1H,wEA2mDlG;EAAA;EAAA;EAAA;EAAA;IAAA;MA3mDkGA,wDA4mD1F,sFA5mD0FA,oEA4mD1F,CADR;MA3mDkGA,wDA4oD1F,sFA5oD0FA,oEA4oD1F,CAjCR;IAAA;EAAA;EAAA,eAgE4CsyC,kFAhE5C,EAgE6OtwC,oDAhE7O,EAgEuVswC,6EAhEvV,EAgE8pBtwC,oDAhE9pB,EAgEguBA,oDAhEhuB;EAAA;AAAA;;AAiEA;EAAA,mDA5qDkGhC,+DA4qDlG,CAA4F+1H,2BAA5F,EAAqI,CAAC;IAC1H1tR,IAAI,EAAExE,oDADoH;IAE1H2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,yBADX;MAECv5J,SAAS,EAAE,CAAC4uJ,6EAAD,EAAsB;QAAE3uJ,OAAO,EAAEwqQ,oBAAX;QAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAMq1H,2BAAP;MAAxD,CAAtB,CAFZ;MAGC3jR,QAAQ,EAAE,2BAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IApEmB,CAAD;EAFoH,CAAD,CAArI,EAwE4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CAxEtF,EAwEwG;IAAEiG,QAAQ,EAAE,CAAC;MACrGl/J,IAAI,EAAE+3J,gDAAKA;IAD0F,CAAD,CAAZ;IAExFmM,SAAS,EAAE,CAAC;MACZlkK,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAF6E;IAIxFxlH,KAAK,EAAE,CAAC;MACRvyC,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAJiF;IAMxFyI,IAAI,EAAE,CAAC;MACPxgK,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CANkF;IAQxFwtH,eAAe,EAAE,CAAC;MAClBvlR,IAAI,EAAEy4J,oDADY;MAElBt4J,IAAI,EAAE,CAAC,iBAAD,EAAoB;QAAE+vK,MAAM,EAAE;MAAV,CAApB;IAFY,CAAD,CARuE;IAWxFN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CAXyE;IAcxFqiR,gBAAgB,EAAE,CAAC;MACnBvyb,IAAI,EAAEo4J,0DADa;MAEnBj4J,IAAI,EAAE,CAACk4J,yDAAU,CAAC,MAAM6uH,sBAAP,CAAX;IAFa,CAAD,CAdsE;IAiBxF8rK,kBAAkB,EAAE,CAAC;MACrBhzb,IAAI,EAAEy4J,oDADe;MAErBt4J,IAAI,EAAE,CAAC,oBAAD,EAAuB;QAAE+vK,MAAM,EAAE;MAAV,CAAvB;IAFe,CAAD,CAjBoE;IAoBxF6iR,mBAAmB,EAAE,CAAC;MACtB/yb,IAAI,EAAEy4J,oDADgB;MAEtBt4J,IAAI,EAAE,CAAC,qBAAD,EAAwB;QAAE+vK,MAAM,EAAE;MAAV,CAAxB;IAFgB,CAAD;EApBmE,CAxExG;AAAA;AAiGA;AACA;AACA;;;AACA,MAAM+iR,0BAAN,CAAiC;EAC7Bv1b,WAAW,GAAG;IACV,KAAKwhK,QAAL,GAAgB,KAAhB;IACA,KAAKjD,QAAL,GAAgB,OAAhB;IACA,KAAKyD,UAAL,GAAkB,MAAlB;IACA,KAAK4N,SAAL,GAAiB,IAAI1V,uDAAJ,EAAjB;EACH;;EACD4P,OAAO,CAACC,QAAD,EAAW;IACd,IAAIA,QAAJ,EAAc;MACV,OAAO,KAAKC,SAAL,GAAiBD,QAAQ,CAAC,KAAKC,SAAN,CAAzB,GAA4CD,QAAQ,CAACnpE,IAAT,IAAiBmpE,QAApE;IACH;;IACD,OAAOxnK,SAAP;EACH;;EACD2nK,OAAO,CAAC3nJ,IAAD,EAAOyD,KAAP,EAAc;IACjB,MAAM+jJ,QAAQ,GAAG,KAAKhpJ,IAAL,CAAUiF,KAAV,CAAjB;;IACA,IAAIzD,IAAI,CAACw8I,KAAT,EAAgB;MACZx8I,IAAI,CAACw8I,KAAL,CAAWgL,QAAX;IACH;;IACD,KAAK6F,SAAL,CAAe3oB,IAAf,CAAoB8iB,QAApB;EACH;;AAnB4B;;AAqBjCwrR,0BAA0B,CAAC1zb,IAA3B;EAAA,iBAAwH0zb,0BAAxH;AAAA;;AACAA,0BAA0B,CAAC5pb,IAA3B,kBAtyDkGsuJ,+DAsyDlG;EAAA,MAA4Gs7R,0BAA5G;EAAA;EAAA;IAAA;MAtyDkGt7R,yDAsyDlG;IAAA;;IAAA;MAAA;;MAtyDkGA,4DAsyDlG,MAtyDkGA,yDAsyDlG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;EAAA;EAAA;EAAA;EAAA;IAAA;MAtyDkGA,wDAuyD1F,oEADR;IAAA;;IAAA;MAtyDkGA,wDA8yDrE,qBAR7B;IAAA;EAAA;EAAA,eAmB4CgC,oDAnB5C,EAmBsJswC,6EAnBtJ;EAAA;AAAA;;AAoBA;EAAA,mDA1zDkGtyC,+DA0zDlG,CAA4Fs7R,0BAA5F,EAAoI,CAAC;IACzHjzb,IAAI,EAAExE,oDADmH;IAEzH2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,0BADX;MAECL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IArBmB,CAAD;EAFmH,CAAD,CAApI,QAyB4B;IAAE+U,IAAI,EAAE,CAAC;MACrBze,IAAI,EAAE+3J,gDAAKA;IADU,CAAD,CAAR;IAEZ2P,SAAS,EAAE,CAAC;MACZ1nK,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAFC;IAIZmH,QAAQ,EAAE,CAAC;MACXl/J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAJE;IAMZkE,QAAQ,EAAE,CAAC;MACXj8J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CANE;IAQZ2H,UAAU,EAAE,CAAC;MACb1/J,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CARA;IAUZuV,SAAS,EAAE,CAAC;MACZttK,IAAI,EAAEg4J,iDAAMA;IADA,CAAD,CAVC;IAYZgN,OAAO,EAAE,CAAC;MACVhlK,IAAI,EAAE47K,uDADI;MAEVz7K,IAAI,EAAE,CAAC,QAAD;IAFI,CAAD;EAZG,CAzB5B;AAAA;AA0CA;AACA;AACA;;;AACA,MAAM+yb,8BAAN,SAA6Cp+K,oBAA7C,CAAkE;EAC9Dp3Q,WAAW,GAAG;IACV,QADU,CAEV;;IACA;AACR;AACA;;IACQ,KAAKipR,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;;IACQ,KAAKC,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK3qH,QAAL,GAAgB,OAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKyD,UAAL,GAAkB,MAAlB;IACA;AACR;AACA;AACA;;IACQ,KAAK4N,SAAL,GAAiB,IAAI1V,uDAAJ,EAAjB;IACA;AACR;AACA;AACA;;IACQ,KAAKzoI,IAAL,GAAY,IAAIyoI,uDAAJ,EAAZ;IACA;AACR;AACA;AACA;;IACQ,KAAKt5I,KAAL,GAAa,IAAIs5I,uDAAJ,EAAb;IACA,KAAKivH,cAAL,GAAsB;MAClBvoL,IAAI,EAAE,EADY;MAElBkgE,IAAI,EAAE,EAFY;MAGlBK,SAAS,EAAE,EAHO;MAIlBE,QAAQ,EAAE;IAJQ,CAAtB;IAMA,KAAKqzR,eAAL,GAAuB;MACnB9zV,IAAI,EAAE,EADa;MAEnBkgE,IAAI,EAAE,EAFa;MAGnBK,SAAS,EAAE,EAHQ;MAInBE,QAAQ,EAAE;IAJS,CAAvB;IAMA,KAAK2L,cAAL,GAAsB;MAAEzQ,OAAO,EAAE,IAAX;MAAiB0Q,UAAU,EAAE;IAA7B,CAAtB;IACA,KAAK5F,YAAL,GAAoB,CAAC,CAArB;IACA,KAAKipR,UAAL,GAAkBA,UAAU,EAA5B;IACA,KAAKC,UAAL,GAAkBA,UAAU,EAA5B;EACH;EACD;AACJ;AACA;AACA;;;EACY,IAAJ3vV,IAAI,CAACA,IAAD,EAAO;IACX,KAAKuoL,cAAL,CAAoBvoL,IAApB,GAA2B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKyrK,eAAL,CAAqB9zV,IAArB,GAA4B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;;;EACY,IAAJnoH,IAAI,CAACA,IAAD,EAAO;IACX,KAAKqoH,cAAL,CAAoBroH,IAApB,GAA2B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKwrK,eAAL,CAAqB5zR,IAArB,GAA4B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;;;EACiB,IAAT/nH,SAAS,CAACA,SAAD,EAAY;IACrB,KAAKgoH,cAAL,CAAoBhoH,SAApB,GAAgCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,KAA3B,CAAnD;IACA,KAAKwrK,eAAL,CAAqBvzR,SAArB,GAAiCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,IAA3B,CAApD;EACH;EACD;AACJ;AACA;;;EACgB,IAAR7nH,QAAQ,CAACA,QAAD,EAAW;IACnB,KAAK8nH,cAAL,CAAoB9nH,QAApB,GAA+BmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,KAA1B,CAAlD;IACA,KAAKwrK,eAAL,CAAqBrzR,QAArB,GAAgCmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,IAA1B,CAAnD;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACqB,IAAb/4G,aAAa,CAACC,QAAD,EAAW;IACxB,KAAKpD,cAAL,GAAsB3nK,MAAM,CAACC,MAAP,CAAc;MAAEi3J,OAAO,EAAE,IAAX;MAAiB0Q,UAAU,EAAE;IAA7B,CAAd,EAAiDmD,QAAjD,CAAtB;EACH;;EACgB,IAAbD,aAAa,GAAG;IAChB,OAAO,KAAKnD,cAAZ;EACH;EACD;AACJ;AACA;;;EACY,IAAJlK,IAAI,CAACA,IAAD,EAAO;IACX,IAAIA,IAAJ,EAAU;MACN,KAAKvE,QAAL,GAAgBuE,IAAI,KAAK,SAAT,GAAqB,OAArB,GAA+BA,IAA/C;IACH;EACJ;EACD;AACJ;AACA;;;EACe,IAAPD,OAAO,CAACA,OAAD,EAAU;IACjB,KAAKb,UAAL,GAAkBa,OAAO,GAAG,SAAH,GAAe,MAAxC;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACY,IAAJ9hJ,IAAI,CAACA,IAAD,EAAO;IACX,KAAKurI,KAAL,GAAavrI,IAAI,IAAI,EAArB;EACH;;EACO,IAAJA,IAAI,GAAG;IACP,IAAI,CAAC,KAAKurI,KAAV,EAAiB;MACb,KAAKvrI,IAAL,GAAY,EAAZ;IACH;;IACD,OAAO,KAAKurI,KAAZ;EACH;;EACkB,IAAfmpS,eAAe,GAAG;IAClB,OAAO,CAAC,GAAG,KAAKC,gCAAL,CAAsCpuR,OAAtC,CAA8CC,OAA9C,GAAwDxsJ,MAAxD,CAA+DtM,CAAC,IAAI,CAACA,CAAC,CAACgyJ,aAAF,CAAgBe,QAArF,CAAJ,CAAP;EACH;EACD;AACJ;AACA;;;EACIm0R,iBAAiB,CAAC5yM,EAAD,EAAK;IAClB,KAAK17E,YAAL,GAAoB,KAAKquR,gCAAL,CAAsCpuR,OAAtC,CACfC,OADe,GAEfC,SAFe,CAEL/4J,CAAC,IAAIA,CAAC,CAACgyJ,aAAF,CAAgBiO,QAAhB,CAAyBq0E,EAAE,CAACnxN,MAA5B,CAFA,CAApB;EAGH;EACD;AACJ;AACA;;;EACI81P,QAAQ,GAAG;IACP,OAAO,CAAC,KAAKlmH,QAAb;EACH;EACD;AACJ;AACA;;;EACI5tH,KAAK,CAACmvM,EAAE,GAAG,EAAN,EAAU;IACX,IAAI,CAAC,KAAKqkC,SAAV,EAAqB;MACjB,IAAIrkC,EAAE,CAACzgP,IAAH,KAAY,OAAZ,IAAuBygP,EAAE,CAACzgP,IAAH,KAAY,SAAvC,EAAkD;QAC9C,KAAKszb,qBAAL,CAA2BhiZ,KAA3B;MACH;IACJ,CAJD,MAKK,IAAI,KAAK6hZ,eAAL,CAAqB9wb,MAArB,GAA8B,CAAlC,EAAqC;MACtC,KAAK0iK,YAAL,GAAoB2oR,iBAAiB,CAAC,KAAKO,UAAL,EAAD,EAAoB,KAAKD,UAAL,EAApB,EAAuC,KAAKmF,eAAL,CAAqBv2b,GAArB,CAAyB22b,EAAE,IAAIA,EAAE,CAACp1R,aAAlC,CAAvC,CAAjB,CAA0GsiF,EAA1G,CAApB;MACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;IACH;EACJ;EACD;AACJ;AACA;;;EACI6kC,SAAS,CAAC7kC,EAAD,EAAK;IACV,IAAI,CAAC,KAAKqkC,SAAN,KAAoBrkC,EAAE,CAACv/E,OAAH,KAAe,KAAK+sR,UAAL,CAAgB,KAAKnpK,SAArB,CAAf,IAAkDrkC,EAAE,CAACv/E,OAAH,KAAe,KAAK8sR,UAAL,CAAgB,KAAKlpK,SAArB,CAArF,CAAJ,EAA2H;MACvH,OAAO,KAAP;IACH;;IACD,IAAI,KAAKA,SAAT,EAAoB;MAChB,MAAM+tK,WAAW,GAAGrF,UAAU,CAAC,KAAK2F,eAAN,CAA9B;MACA,MAAML,YAAY,GAAGnK,QAAQ,CAAC,KAAK5jR,YAAN,CAA7B;MACA,KAAKA,YAAL,GAAoB+oR,gBAAgB,CAAC,KAAKG,UAAL,EAAD,EAAoB,KAAKD,UAAL,EAApB,EAAuC6E,WAAvC,CAAhB,CAAoE,KAAK9tR,YAAzE,EAAuF07E,EAAvF,CAApB;MACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;MACA,OAAO,CAACqyM,YAAY,CAAC,KAAK/tR,YAAN,CAApB;IACH;EACJ;;EACDoH,WAAW,CAACzoJ,KAAD,EAAQ+8N,EAAR,EAAY;IACnB,IAAI,CAACA,EAAE,CAACzgP,IAAJ,IAAYygP,EAAE,CAACzgP,IAAH,KAAY,OAAxB,IAAmCygP,EAAE,CAACzgP,IAAH,KAAY,SAAnD,EAA8D;MAC1D,KAAKmzb,eAAL,CAAqBzva,KAArB,EAA4By6I,aAA5B,CAA0C7sH,KAA1C;IACH;EACJ;;AApM6D;;AAsMlE4hZ,8BAA8B,CAAC3zb,IAA/B;EAAA,iBAA4H2zb,8BAA5H;AAAA;;AACAA,8BAA8B,CAAC7pb,IAA/B,kBA9iEkGsuJ,+DA8iElG;EAAA,MAAgHu7R,8BAAhH;EAAA;EAAA;IAAA;MA9iEkGv7R,yDA8iElG;MA9iEkGA,yDA8iElG;MA9iEkGA,yDA8iElG,UAA+gCW,qDAA/gC;MA9iEkGX,yDA8iElG,CAA8mCgZ,qFAA9mC;MA9iEkGhZ,yDA8iElG;MA9iEkGA,yDA8iElG;IAAA;;IAAA;MAAA;;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;MA9iEkGA,4DA8iElG,MA9iEkGA,yDA8iElG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WA9iEkGA,gEA8iElG,CAAolB,CAAC;IAAErtJ,OAAO,EAAEwqQ,oBAAX;IAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM66R,8BAAP;EAAxD,CAAD,CAAplB,GA9iEkGv7R,wEA8iElG;EAAA;EAAA;EAAA;EAAA;IAAA;MA9iEkGA,wDA+iE1F,0FA/iE0FA,oEA+iE1F,CADR;MA9iEkGA,wDAokE1F,yFApkE0FA,oEAokE1F,CAtBR;IAAA;EAAA;EAAA,eA+C4CsyC,qFA/C5C,EA+CwXgpP,0BA/CxX,EA+C+iBhpP,6EA/C/iB,EA+Cs3BtwC,oDA/Ct3B;EAAA;AAAA;;AAgDA;EAAA,mDA9lEkGhC,+DA8lElG,CAA4Fu7R,8BAA5F,EAAwI,CAAC;IAC7Hlzb,IAAI,EAAExE,oDADuH;IAE7H2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,4BADX;MAECv5J,SAAS,EAAE,CAAC;QAAEC,OAAO,EAAEwqQ,oBAAX;QAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM66R,8BAAP;MAAxD,CAAD,CAFZ;MAGCnpb,QAAQ,EAAE,8BAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAnDmB,CAAD;EAFuH,CAAD,CAAxI,EAuD4B,YAAY;IAAE,OAAO,EAAP;EAAY,CAvDtD,EAuDwE;IAAEi9Q,QAAQ,EAAE,CAAC;MACrE3mR,IAAI,EAAE+3J,gDAAKA;IAD0D,CAAD,CAAZ;IAExD6uH,QAAQ,EAAE,CAAC;MACX5mR,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAF8C;IAIxDz5D,IAAI,EAAE,CAAC;MACPt+F,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAJkD;IAMxDyG,IAAI,EAAE,CAAC;MACPx+J,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CANkD;IAQxD8G,SAAS,EAAE,CAAC;MACZ7+J,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAR6C;IAUxDgH,QAAQ,EAAE,CAAC;MACX/+J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAV8C;IAYxD8V,aAAa,EAAE,CAAC;MAChB7tK,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAZyC;IAcxDyI,IAAI,EAAE,CAAC;MACPxgK,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAdkD;IAgBxDwI,OAAO,EAAE,CAAC;MACVvgK,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CAhB+C;IAkBxDkE,QAAQ,EAAE,CAAC;MACXj8J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAlB8C;IAoBxD2H,UAAU,EAAE,CAAC;MACb1/J,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CApB4C;IAsBxDiY,WAAW,EAAE,CAAC;MACdhwK,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CAtB2C;IAwBxD2P,SAAS,EAAE,CAAC;MACZ1nK,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAxB6C;IA0BxDmH,QAAQ,EAAE,CAAC;MACXl/J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CA1B8C;IA4BxDt5I,IAAI,EAAE,CAAC;MACPze,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CA5BkD;IA8BxDuV,SAAS,EAAE,CAAC;MACZttK,IAAI,EAAEg4J,iDAAMA;IADA,CAAD,CA9B6C;IAgCxD7oI,IAAI,EAAE,CAAC;MACPnvB,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CAhCkD;IAkCxD15I,KAAK,EAAE,CAAC;MACRte,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CAlCiD;IAoCxDutH,eAAe,EAAE,CAAC;MAClBvlR,IAAI,EAAEy4J,oDADY;MAElBt4J,IAAI,EAAE,CAAC,iBAAD,EAAoB;QAAE+vK,MAAM,EAAE;MAAV,CAApB;IAFY,CAAD,CApCuC;IAuCxDN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CAvCyC;IA0CxDsjR,cAAc,EAAE,CAAC;MACjBxzb,IAAI,EAAEy4J,oDADW;MAEjBt4J,IAAI,EAAE,CAAC,gBAAD,EAAmB;QAAEiwK,IAAI,EAAE9X,qDAAR;QAAoB4X,MAAM,EAAE;MAA5B,CAAnB;IAFW,CAAD,CA1CwC;IA6CxDujR,uBAAuB,EAAE,CAAC;MAC1Bzzb,IAAI,EAAEy4J,oDADoB;MAE1Bt4J,IAAI,EAAE,CAACwwK,qFAAD,EAA0B;QAAET,MAAM,EAAE;MAAV,CAA1B;IAFoB,CAAD,CA7C+B;IAgDxDojR,qBAAqB,EAAE,CAAC;MACxBtzb,IAAI,EAAEy4J,oDADkB;MAExBt4J,IAAI,EAAE,CAAC,uBAAD,EAA0B;QAAE+vK,MAAM,EAAE;MAAV,CAA1B;IAFkB,CAAD,CAhDiC;IAmDxDkjR,gCAAgC,EAAE,CAAC;MACnCpzb,IAAI,EAAEy4J,oDAD6B;MAEnCt4J,IAAI,EAAE,CAAC,kCAAD,EAAqC;QAAE+vK,MAAM,EAAE;MAAV,CAArC;IAF6B,CAAD;EAnDsB,CAvDxE;AAAA;AA+GA;AACA;AACA;;;AACA,MAAMwjR,2BAAN,SAA0C5+K,oBAA1C,CAA+D;EAC3Dp3Q,WAAW,GAAG;IACV,QADU,CAEV;;IACA;AACR;AACA;;IACQ,KAAKipR,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;;IACQ,KAAKC,QAAL,GAAgB,MAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK3qH,QAAL,GAAgB,OAAhB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKyD,UAAL,GAAkB,MAAlB;IACA;AACR;AACA;AACA;;IACQ,KAAK0N,eAAL,GAAuB,SAAvB;IACA;AACR;AACA;;IACQ,KAAK1F,SAAL,GAAiB,MAAjB;IACA;AACR;AACA;;IACQ,KAAK2F,WAAL,GAAmB,IAAIzV,uDAAJ,EAAnB;IACA;AACR;AACA;AACA;;IACQ,KAAK0V,SAAL,GAAiB,IAAI1V,uDAAJ,EAAjB;IACA;AACR;AACA;AACA;;IACQ,KAAKzoI,IAAL,GAAY,IAAIyoI,uDAAJ,EAAZ;IACA;AACR;AACA;AACA;;IACQ,KAAKt5I,KAAL,GAAa,IAAIs5I,uDAAJ,EAAb;IACA,KAAKivH,cAAL,GAAsB;MAClBvoL,IAAI,EAAE,EADY;MAElBkgE,IAAI,EAAE,EAFY;MAGlBK,SAAS,EAAE,EAHO;MAIlBE,QAAQ,EAAE;IAJQ,CAAtB;IAMA,KAAKqzR,eAAL,GAAuB;MACnB9zV,IAAI,EAAE,EADa;MAEnBkgE,IAAI,EAAE,EAFa;MAGnBK,SAAS,EAAE,EAHQ;MAInBE,QAAQ,EAAE;IAJS,CAAvB;IAMA,KAAK2L,cAAL,GAAsB;MAAEzQ,OAAO,EAAE,IAAX;MAAiB0Q,UAAU,EAAE;IAA7B,CAAtB;IACA,KAAK5F,YAAL,GAAoB,CAAC,CAArB;IACA,KAAKipR,UAAL,GAAkBA,UAAU,EAA5B;IACA,KAAKC,UAAL,GAAkBA,UAAU,EAA5B;EACH;EACD;AACJ;AACA;;;EACY,IAAJ3vV,IAAI,CAACA,IAAD,EAAO;IACX,KAAKuoL,cAAL,CAAoBvoL,IAApB,GAA2B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKyrK,eAAL,CAAqB9zV,IAArB,GAA4B4vV,mBAAmB,CAAC5vV,IAAD,EAAO,KAAKqoL,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;AACA;;;EACY,IAAJnoH,IAAI,CAACA,IAAD,EAAO;IACX,KAAKqoH,cAAL,CAAoBroH,IAApB,GAA2B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,KAAtB,CAA9C;IACA,KAAKwrK,eAAL,CAAqB5zR,IAArB,GAA4B0vR,mBAAmB,CAAC1vR,IAAD,EAAO,KAAKooH,QAAZ,EAAsB,IAAtB,CAA/C;EACH;EACD;AACJ;AACA;;;EACiB,IAAT/nH,SAAS,CAACA,SAAD,EAAY;IACrB,KAAKgoH,cAAL,CAAoBhoH,SAApB,GAAgCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,KAA3B,CAAnD;IACA,KAAKwrK,eAAL,CAAqBvzR,SAArB,GAAiCqvR,mBAAmB,CAACrvR,SAAD,EAAY,KAAK+nH,QAAjB,EAA2B,IAA3B,CAApD;EACH;EACD;AACJ;AACA;;;EACgB,IAAR7nH,QAAQ,CAACA,QAAD,EAAW;IACnB,KAAK8nH,cAAL,CAAoB9nH,QAApB,GAA+BmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,KAA1B,CAAlD;IACA,KAAKwrK,eAAL,CAAqBrzR,QAArB,GAAgCmvR,mBAAmB,CAACnvR,QAAD,EAAW,KAAK6nH,QAAhB,EAA0B,IAA1B,CAAnD;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACqB,IAAb/4G,aAAa,CAACzsK,KAAD,EAAQ;IACrB,KAAKspK,cAAL,GAAsBtpK,KAAtB;EACH;;EACgB,IAAbysK,aAAa,GAAG;IAChB,IAAI,CAAC,KAAKnD,cAAV,EAA0B;MACtB,KAAKA,cAAL,GAAsB;QAAEzQ,OAAO,EAAE,IAAX;QAAiB0Q,UAAU,EAAE;MAA7B,CAAtB;IACH;;IACD,OAAO,KAAKD,cAAZ;EACH;EACD;AACJ;AACA;;;EACY,IAAJlK,IAAI,CAACA,IAAD,EAAO;IACX,IAAIA,IAAJ,EAAU;MACN,KAAKvE,QAAL,GAAgBuE,IAAI,KAAK,SAAT,GAAqB,OAArB,GAA+BA,IAA/C;IACH;EACJ;EACD;AACJ;AACA;AACA;AACA;;;EACY,IAAJ/hJ,IAAI,CAACA,IAAD,EAAO;IACX,KAAKurI,KAAL,GAAavrI,IAAI,IAAI,EAArB;EACH;;EACO,IAAJA,IAAI,GAAG;IACP,IAAI,CAAC,KAAKurI,KAAV,EAAiB;MACb,KAAKvrI,IAAL,GAAY,EAAZ;IACH;;IACD,OAAO,KAAKurI,KAAZ;EACH;;EACkB,IAAfmpS,eAAe,GAAG;IAClB,OAAO,CAAC,KAAKQ,mBAAN,EAA2B,GAAG,KAAKC,6BAAL,CAAmC5uR,OAAnC,CAA2CC,OAA3C,GAAqDxsJ,MAArD,CAA4DtM,CAAC,IAAI,CAACA,CAAC,CAACgyJ,aAAF,CAAgBe,QAAlF,CAA9B,CAAP;EACH;EACD;AACJ;AACA;;;EACIm0R,iBAAiB,CAAC5yM,EAAD,EAAK;IAClB,KAAK17E,YAAL,GAAoB,KAAKouR,eAAL,CAAqBjuR,SAArB,CAA+B/4J,CAAC,IAAIA,CAAC,CAACgyJ,aAAF,CAAgBiO,QAAhB,CAAyBq0E,EAAE,CAACnxN,MAA5B,CAApC,CAApB;EACH;EACD;AACJ;AACA;;;EACIuka,iBAAiB,CAACpzM,EAAD,EAAK;IAClB,KAAKpzE,WAAL,CAAiB1oB,IAAjB,CAAsB87F,EAAtB;IACA,KAAK17E,YAAL,GAAoB,CAApB;EACH;EACD;AACJ;AACA;;;EACIqgH,QAAQ,GAAG;IACP,OAAO,CAAC,KAAKlmH,QAAb;EACH;EACD;AACJ;AACA;;;EACI5tH,KAAK,CAACmvM,EAAE,GAAG,EAAN,EAAU;IACX,IAAI,CAAC,KAAKqkC,SAAV,EAAqB;MACjB,IAAIrkC,EAAE,CAACzgP,IAAH,KAAY,OAAZ,IAAuBygP,EAAE,CAACzgP,IAAH,KAAY,SAAvC,EAAkD;QAC9C,KAAK8zb,kBAAL,CAAwBxiZ,KAAxB;MACH;IACJ,CAJD,MAKK,IAAI,KAAK6hZ,eAAL,CAAqB9wb,MAArB,GAA8B,CAAlC,EAAqC;MACtC,KAAK0iK,YAAL,GAAoB2oR,iBAAiB,CAAC,KAAKO,UAAL,EAAD,EAAoB,KAAKD,UAAL,EAApB,EAAuC,KAAKmF,eAAL,CAAqBv2b,GAArB,CAAyB22b,EAAE,IAAIA,EAAE,CAACp1R,aAAlC,CAAvC,CAAjB,CAA0GsiF,EAA1G,CAApB;MACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;IACH;EACJ;EACD;AACJ;AACA;;;EACI6kC,SAAS,CAAC7kC,EAAD,EAAK;IACV,IAAI,CAAC,KAAKqkC,SAAN,KAAoBrkC,EAAE,CAACv/E,OAAH,KAAe,KAAK+sR,UAAL,CAAgB,KAAKnpK,SAArB,CAAf,IAAkDrkC,EAAE,CAACv/E,OAAH,KAAe,KAAK8sR,UAAL,CAAgB,KAAKlpK,SAArB,CAArF,CAAJ,EAA2H;MACvH,OAAO,KAAP;IACH;;IACD,IAAI,KAAKA,SAAT,EAAoB;MAChB,MAAM+tK,WAAW,GAAGrF,UAAU,CAAC,KAAK2F,eAAN,CAA9B;MACA,MAAML,YAAY,GAAGnK,QAAQ,CAAC,KAAK5jR,YAAN,CAA7B;MACA,KAAKA,YAAL,GAAoB+oR,gBAAgB,CAAC,KAAKG,UAAL,EAAD,EAAoB,KAAKD,UAAL,EAApB,EAAuC6E,WAAvC,CAAhB,CAAoE,KAAK9tR,YAAzE,EAAuF07E,EAAvF,CAApB;MACA,KAAKt0E,WAAL,CAAiB,KAAKpH,YAAtB,EAAoC07E,EAApC;MACA,OAAO,CAACqyM,YAAY,CAAC,KAAK/tR,YAAN,CAApB;IACH;EACJ;;EACDoH,WAAW,CAACzoJ,KAAD,EAAQ+8N,EAAR,EAAY;IACnB,IAAI,CAACA,EAAE,CAACzgP,IAAJ,IAAYygP,EAAE,CAACzgP,IAAH,KAAY,OAAxB,IAAmCygP,EAAE,CAACzgP,IAAH,KAAY,SAA/C,IAA4DygP,EAAE,CAACzgP,IAAH,KAAY,OAA5E,EAAqF;MACjF,KAAKmzb,eAAL,CAAqBzva,KAArB,EAA4By6I,aAA5B,CAA0C7sH,KAA1C;IACH;EACJ;;AAjN0D;;AAmN/DoiZ,2BAA2B,CAACn0b,IAA5B;EAAA,iBAAyHm0b,2BAAzH;AAAA;;AACAA,2BAA2B,CAACrqb,IAA5B,kBAp6EkGsuJ,+DAo6ElG;EAAA,MAA6G+7R,2BAA7G;EAAA;EAAA;IAAA;MAp6EkG/7R,yDAo6ElG;MAp6EkGA,yDAo6ElG;MAp6EkGA,yDAo6ElG;MAp6EkGA,yDAo6ElG,UAA0sCW,qDAA1sC;MAp6EkGX,yDAo6ElG;IAAA;;IAAA;MAAA;;MAp6EkGA,4DAo6ElG,MAp6EkGA,yDAo6ElG;MAp6EkGA,4DAo6ElG,MAp6EkGA,yDAo6ElG;MAp6EkGA,4DAo6ElG,MAp6EkGA,yDAo6ElG;MAp6EkGA,4DAo6ElG,MAp6EkGA,yDAo6ElG;MAp6EkGA,4DAo6ElG,MAp6EkGA,yDAo6ElG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WAp6EkGA,gEAo6ElG,CAA6pB,CAAC;IAAErtJ,OAAO,EAAEwqQ,oBAAX;IAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAMq7R,2BAAP;EAAxD,CAAD,CAA7pB,GAp6EkG/7R,wEAo6ElG;EAAA;EAAA;EAAA;EAAA;IAAA;MAp6EkGA,wDAq6E1F,uFAr6E0FA,oEAq6E1F,CADR;MAp6EkGA,wDA67E1F,uFA77E0FA,oEA67E1F,CAzBR;IAAA;EAAA;EAAA,eAuD4CsyC,kFAvD5C,EAuDqbgpP,0BAvDrb,EAuD4mBhpP,6EAvD5mB,EAuDm7BtwC,oDAvDn7B;EAAA;AAAA;;AAwDA;EAAA,mDA59EkGhC,+DA49ElG,CAA4F+7R,2BAA5F,EAAqI,CAAC;IAC1H1zb,IAAI,EAAExE,oDADoH;IAE1H2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,yBADX;MAECv5J,SAAS,EAAE,CAAC;QAAEC,OAAO,EAAEwqQ,oBAAX;QAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAMq7R,2BAAP;MAAxD,CAAD,CAFZ;MAGC3pb,QAAQ,EAAE,2BAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA3DmB,CAAD;EAFoH,CAAD,CAArI,EA+D4B,YAAY;IAAE,OAAO,EAAP;EAAY,CA/DtD,EA+DwE;IAAEi9Q,QAAQ,EAAE,CAAC;MACrE3mR,IAAI,EAAE+3J,gDAAKA;IAD0D,CAAD,CAAZ;IAExD6uH,QAAQ,EAAE,CAAC;MACX5mR,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAF8C;IAIxDz5D,IAAI,EAAE,CAAC;MACPt+F,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAJkD;IAMxDyG,IAAI,EAAE,CAAC;MACPx+J,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CANkD;IAQxD8G,SAAS,EAAE,CAAC;MACZ7+J,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAR6C;IAUxDgH,QAAQ,EAAE,CAAC;MACX/+J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAV8C;IAYxDmH,QAAQ,EAAE,CAAC;MACXl/J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAZ8C;IAcxD8V,aAAa,EAAE,CAAC;MAChB7tK,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAdyC;IAgBxDkE,QAAQ,EAAE,CAAC;MACXj8J,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAhB8C;IAkBxD2H,UAAU,EAAE,CAAC;MACb1/J,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAlB4C;IAoBxDyI,IAAI,EAAE,CAAC;MACPxgK,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CApBkD;IAsBxDiY,WAAW,EAAE,CAAC;MACdhwK,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CAtB2C;IAwBxDkY,gBAAgB,EAAE,CAAC;MACnBjwK,IAAI,EAAE+3J,gDAAKA;IADQ,CAAD,CAxBsC;IA0BxDqV,eAAe,EAAE,CAAC;MAClBptK,IAAI,EAAE+3J,gDAAKA;IADO,CAAD,CA1BuC;IA4BxD2P,SAAS,EAAE,CAAC;MACZ1nK,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CA5B6C;IA8BxDt5I,IAAI,EAAE,CAAC;MACPze,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CA9BkD;IAgCxDsV,WAAW,EAAE,CAAC;MACdrtK,IAAI,EAAEg4J,iDAAMA;IADE,CAAD,CAhC2C;IAkCxDsV,SAAS,EAAE,CAAC;MACZttK,IAAI,EAAEg4J,iDAAMA;IADA,CAAD,CAlC6C;IAoCxD7oI,IAAI,EAAE,CAAC;MACPnvB,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CApCkD;IAsCxD15I,KAAK,EAAE,CAAC;MACRte,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CAtCiD;IAwCxDutH,eAAe,EAAE,CAAC;MAClBvlR,IAAI,EAAEy4J,oDADY;MAElBt4J,IAAI,EAAE,CAAC,iBAAD,EAAoB;QAAE+vK,MAAM,EAAE;MAAV,CAApB;IAFY,CAAD,CAxCuC;IA2CxDN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CA3CyC;IA8CxD4jR,kBAAkB,EAAE,CAAC;MACrB9zb,IAAI,EAAEy4J,oDADe;MAErBt4J,IAAI,EAAE,CAAC,oBAAD,EAAuB;QAAE+vK,MAAM,EAAE;MAAV,CAAvB;IAFe,CAAD,CA9CoC;IAiDxDyjR,mBAAmB,EAAE,CAAC;MACtB3zb,IAAI,EAAEy4J,oDADgB;MAEtBt4J,IAAI,EAAE,CAAC,qBAAD,EAAwB;QAAEiwK,IAAI,EAAE9X,qDAAR;QAAoB4X,MAAM,EAAE;MAA5B,CAAxB;IAFgB,CAAD,CAjDmC;IAoDxD0jR,6BAA6B,EAAE,CAAC;MAChC5zb,IAAI,EAAEy4J,oDAD0B;MAEhCt4J,IAAI,EAAE,CAAC,+BAAD,EAAkC;QAAE+vK,MAAM,EAAE;MAAV,CAAlC;IAF0B,CAAD;EApDyB,CA/DxE;AAAA;AAwHA;AACA;AACA;;;AACA,MAAM6jR,yBAAN,SAAwCj/K,oBAAxC,CAA6D;EACzDp3Q,WAAW,GAAG;IACV;EACH;EACD;AACJ;AACA;;;EACI0nR,QAAQ,GAAG;IACP,OAAO,KAAP;EACH,CATwD,CAUzD;;EACA;AACJ;AACA;;;EACI9zO,KAAK,GAAG;IACJ;EACH,CAhBwD,CAiBzD;;EACA;AACJ;AACA;;;EACIg0O,SAAS,GAAG;IACR,OAAO,KAAP;EACH;;EACD/jH,eAAe,GAAG;IACd,IAAI,CAAC,KAAKqO,aAAV,EAAyB;MACrB,KAAKA,aAAL,GAAqB,KAAK21G,eAA1B;IACH;EACJ;;AA5BwD;;AA8B7DwuK,yBAAyB,CAACx0b,IAA1B;EAAA,iBAAuHw0b,yBAAvH;AAAA;;AACAA,yBAAyB,CAAC1qb,IAA1B,kBAtnFkGsuJ,+DAsnFlG;EAAA,MAA2Go8R,yBAA3G;EAAA;EAAA;IAAA;MAtnFkGp8R,yDAsnFlG;MAtnFkGA,yDAsnFlG;MAtnFkGA,yDAsnFlG;IAAA;;IAAA;MAAA;;MAtnFkGA,4DAsnFlG,MAtnFkGA,yDAsnFlG;MAtnFkGA,4DAsnFlG,MAtnFkGA,yDAsnFlG;MAtnFkGA,4DAsnFlG,MAtnFkGA,yDAsnFlG;IAAA;EAAA;EAAA;EAAA,WAtnFkGA,gEAsnFlG,CAAsL,CAAC;IAAErtJ,OAAO,EAAEwqQ,oBAAX;IAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM07R,yBAAP;EAAxD,CAAD,CAAtL,GAtnFkGp8R,wEAsnFlG;EAAA;EAAA;EAAA;EAAA;IAAA;MAtnFkGA,wDAunF1F,oFAvnF0FA,oEAunF1F,CADR;IAAA;EAAA;EAAA;AAAA;;AAKA;EAAA,mDA3nFkGA,+DA2nFlG,CAA4Fo8R,yBAA5F,EAAmI,CAAC;IACxH/zb,IAAI,EAAExE,oDADkH;IAExH2E,IAAI,EAAE,CAAC;MACCyjK,QAAQ,EAAE,uBADX;MAECv5J,SAAS,EAAE,CAAC;QAAEC,OAAO,EAAEwqQ,oBAAX;QAAiCnoG,WAAW,EAAEtU,yDAAU,CAAC,MAAM07R,yBAAP;MAAxD,CAAD,CAFZ;MAGChqb,QAAQ,EAAE,yBAHX;MAICL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;IARmB,CAAD;EAFkH,CAAD,CAAnI,EAY4B,YAAY;IAAE,OAAO,EAAP;EAAY,CAZtD,EAYwE;IAAE67Q,eAAe,EAAE,CAAC;MAC5EvlR,IAAI,EAAEy4J,oDADsE;MAE5Et4J,IAAI,EAAE,CAAC,iBAAD,EAAoB;QAAE+vK,MAAM,EAAE;MAAV,CAApB;IAFsE,CAAD,CAAnB;IAGxDN,aAAa,EAAE,CAAC;MAChB5vK,IAAI,EAAEy4J,oDADU;MAEhBt4J,IAAI,EAAE,CAAC,eAAD,EAAkB;QAAE+vK,MAAM,EAAE;MAAV,CAAlB;IAFU,CAAD,CAHyC;IAMxD8lL,SAAS,EAAE,CAAC;MACZh2V,IAAI,EAAEy4J,oDADM;MAEZt4J,IAAI,EAAE,CAAC,WAAD,EAAc;QAAE+vK,MAAM,EAAE;MAAV,CAAd;IAFM,CAAD;EAN6C,CAZxE;AAAA;AAuBA;AACA;AACA;;;AACA,MAAM8jR,8BAAN,SAA6CzD,eAA7C,CAA6D;EACzD7yb,WAAW,CAACw/J,OAAD,EAAU;IACjB;IACA,KAAKA,OAAL,GAAeA,OAAf;EACH;;EACW,IAARoT,QAAQ,GAAG;IACX,OAAO,IAAP;EACH;;AAPwD;;AAS7D0jR,8BAA8B,CAACz0b,IAA/B;EAAA,iBAA4Hy0b,8BAA5H,EA9pFkGr8R,+DA8pFlG,CAA4KqB,6EAA5K;AAAA;;AACAg7R,8BAA8B,CAAC3qb,IAA/B,kBA/pFkGsuJ,+DA+pFlG;EAAA,MAAgHq8R,8BAAhH;EAAA;EAAA,WA/pFkGr8R,gEA+pFlG,CAA+L,CACvL;IACIrtJ,OAAO,EAAEimb,eADb;IAEI5jR,WAAW,EAAEtU,yDAAU,CAAC,MAAM27R,8BAAP;EAF3B,CADuL,CAA/L,GA/pFkGr8R,wEA+pFlG;EAAA;EAAA;EAAA;EAAA;AAAA;;AAMA;EAAA,mDArqFkGA,+DAqqFlG,CAA4Fq8R,8BAA5F,EAAwI,CAAC;IAC7Hh0b,IAAI,EAAExE,oDADuH;IAE7H2E,IAAI,EAAE,CAAC;MACCkK,SAAS,EAAE,CACP;QACIC,OAAO,EAAEimb,eADb;QAEI5jR,WAAW,EAAEtU,yDAAU,CAAC,MAAM27R,8BAAP;MAF3B,CADO,CADZ;MAOCjqb,QAAQ,EAAE,wBAPX;MAQCL,QAAQ,EAAG;IARZ,CAAD;EAFuH,CAAD,CAAxI,EAY4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CAZtF;AAAA;;AAcA,MAAM84H,aAAa,GAAG,CAClBjd,oBADkB,EAElBoS,sBAFkB,EAGlBwG,2BAHkB,EAIlBwlK,8BAJkB,EAKlBQ,2BALkB,EAMlBK,yBANkB,CAAtB;AAQA,MAAME,cAAc,GAAG,CACnBhE,wBADmB,EAEnBgD,0BAFmB,EAGnBe,8BAHmB,EAInBvD,iCAJmB,CAAvB;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMz7K,aAAN,CAAoB;;AAEpBA,aAAa,CAACz1Q,IAAd;EAAA,iBAA2Gy1Q,aAA3G;AAAA;;AACAA,aAAa,CAACvqQ,IAAd,kBAhtFkGktJ,8DAgtFlG;EAAA,MAA4Gq9G;AAA5G;AAcAA,aAAa,CAACrqQ,IAAd,kBA9tFkGgtJ,8DA8tFlG;EAAA,UAAqI,CAAC/7J,yDAAD,EAAey/K,2EAAf,EAA8BzhB,uEAA9B,EAA2CkiB,8EAA3C,CAArI;AAAA;;AACA;EAAA,mDA/tFkGnkB,+DA+tFlG,CAA4Fq9G,aAA5F,EAAuH,CAAC;IAC5Gh1Q,IAAI,EAAEvE,mDADsG;IAE5G0E,IAAI,EAAE,CAAC;MACC2K,YAAY,EAAE,CAACiqQ,gBAAD,EAAmBgd,aAAnB,EAAkCkiK,cAAlC,CADf;MAEC5tR,OAAO,EAAE,CAAC0uG,gBAAD,EAAmBgd,aAAnB,EAAkCiiK,8BAAlC,EAAkEvD,iCAAlE,CAFV;MAGC5lb,OAAO,EAAE,CAACjP,yDAAD,EAAey/K,2EAAf,EAA8BzhB,uEAA9B,EAA2CkiB,8EAA3C;IAHV,CAAD;EAFsG,CAAD,CAAvH;AAAA;AASA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;IA+CmGnkB,4DA+PvF;IA/PuFA,wDAgQnF;IAhQmFA,0DAqQvF;;;;mBArQuFA;IAAAA,uDAiQ/E;IAjQ+EA,wDAiQ/E,oGAjQ+EA,6DAiQ/E;;;;;;;;IAjQ+EA,oDA8QnF;;;;mBA9QmFA;IAAAA,gEA8QnF;;;;;;gBA9QmFA;;IAAAA,4DAkR3F;IAlR2FA,wDAkR5C;MAlR4CA,2DAkR5C;MAAA,eAlR4CA,2DAkR5C;MAAA,OAlR4CA,yDAkRnC,6BAAT;IAAA;IAlR4CA,uDAmRvF;IAnRuFA,0DAoR3F;;;;mBApR2FA;IAAAA,uDAmRlD;IAnRkDA,yDAmRlD;;;;;;IAnRkDA,uDAsR3F;;;;mBAtR2FA;IAAAA,wDAsRpD;;;;;;IAtRoDA,uDAi/B3F;;;;mBAj/B2FA;IAAAA,wDAi/B5D;;;;;;;;;;;;;;;IAj/B4DA,wDAo/BvF;;;;mBAp/BuFA;IAAAA,wDAq/BnF,wHAr/BmFA,6DAq/BnF;;;;;;IAr/BmFA,qEAw/BvF;IAx/BuFA,oDAy/BnF;IAz/BmFA,mEA0/BvF;;;;mBA1/BuFA;IAAAA,uDAy/BnF;IAz/BmFA,gEAy/BnF;;;;;;IAz/BmFA,4DAm/B3F;IAn/B2FA,wDAo/BvF;IAp/BuFA,wDAw/BvF;IAx/BuFA,0DA2/B3F;;;;mBA3/B2FA;IAAAA,uDAo/BzE;IAp/ByEA,wDAo/BzE;IAp/ByEA,uDAw/BxE;IAx/BwEA,wDAw/BxE;;;;;;;;IAx/BwEA,wDA8/BvF;;;;mBA9/BuFA;IAAAA,wDA+/BnF,sHA//BmFA,6DA+/BnF;;;;;;IA//BmFA,qEAkgCvF;IAlgCuFA,oDAmgCnF;IAngCmFA,mEAogCvF;;;;mBApgCuFA;IAAAA,uDAmgCnF;IAngCmFA,gEAmgCnF;;;;;;IAngCmFA,4DA6/B3F;IA7/B2FA,wDA8/BvF;IA9/BuFA,wDAkgCvF;IAlgCuFA,0DAqgC3F;;;;mBArgC2FA;IAAAA,uDA8/BzE;IA9/ByEA,wDA8/BzE;IA9/ByEA,uDAkgCxE;IAlgCwEA,wDAkgCxE;;;;;;;;IAlgCwEA,wDAwgCvF;;;;oBAxgCuFA;IAAAA,wDAygCnF,8HAzgCmFA,6DAygCnF;;;;;;IAzgCmFA,4DAugC3F;IAvgC2FA,wDAwgCvF;IAxgCuFA,0DA4gC3F;;;;mBA5gC2FA;IAAAA,uDAwgCzE;IAxgCyEA,wDAwgCzE;;;;;;;;;;;;;IAxgCyEA,4DAg/B/F;IAh/B+FA,wDAi/B3F;IAj/B2FA,wDAm/B3F;IAn/B2FA,wDA6/B3F;IA7/B2FA,wDAugC3F;IAvgC2FA,0DA6gC/F;;;;mBA7gC+FA;IAAAA,wDAg/BzC,YAh/ByCA,6DAg/BzC;IAh/ByCA,uDAi/B1B;IAj/B0BA,wDAi/B1B;IAj/B0BA,uDAm/BrF;IAn/BqFA,wDAm/BrF;IAn/BqFA,uDA6/BrF;IA7/BqFA,wDA6/BrF;IA7/BqFA,uDAugCrF;IAvgCqFA,wDAugCrF;;;;AArjCd,MAAMuC,eAAe,GAAG;EACpB38J,IAAI,EAAE,iCADc;EAEpB48J,WAAW,EAAE,sBAFO;EAGpBC,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;EAIpBC,WAAW,EAAE,UAJO;EAKpB78J,OAAO,EAAE,EALW;EAMpB88J,gBAAgB,EAAE;AANE,CAAxB;AASA;AACA;AACA;AACA;AACA;;AACA,MAAM45R,gBAAgB,GAAG,IAAI94b,yDAAJ,CAAmB,2BAAnB,CAAzB;AACA;AACA;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+4b,eAAN,CAAsB;EAClB;AACJ;AACA;EACIz2b,WAAW,GAAG,CAAG;;AAJC;;AAMtBy2b,eAAe,CAAC50b,IAAhB;EAAA,iBAA6G40b,eAA7G;AAAA;;AACAA,eAAe,CAACx0b,KAAhB,kBADmGg4J,gEACnG;EAAA,OAAiHw8R,eAAjH;EAAA,SAAiHA,eAAjH;AAAA;;AACA;EAAA,mDAFmGx8R,+DAEnG,CAA4Fw8R,eAA5F,EAAyH,CAAC;IAC9Gn0b,IAAI,EAAE3E,qDAAUA;EAD8F,CAAD,CAAzH,EAE4B,YAAY;IAAE,OAAO,EAAP;EAAY,CAFtD;AAAA;AAIA;AACA;AACA;;;AACA,SAAS8zK,KAAT,CAAe70H,QAAf,EAAyB++B,MAAzB,EAAiC;EAC7B,IAAI61F,WAAW,GAAG,EAAlB;EACA,IAAIF,UAAU,GAAG,EAAjB;EACA,IAAIolR,WAAW,GAAG,EAAlB;;EACA,QAAQ95Y,QAAR;IACI,KAAK,KAAL;MACI40H,WAAW,GAAG;QAAEE,UAAU,EAAE,QAAd;QAAwBC,QAAQ,EAAE;MAAlC,CAAd;MACAL,UAAU,GAAG;QAAEI,UAAU,EAAE,QAAd;QAAwBC,QAAQ,EAAE;MAAlC,CAAb;MACA+kR,WAAW,GAAG;QAAEhlR,UAAU,EAAE,CAAd;QAAiBC,QAAQ,EAAEh2F;MAA3B,CAAd;MACA;;IACJ,KAAK,QAAL;MACI61F,WAAW,GAAG;QAAEE,UAAU,EAAE,QAAd;QAAwBC,QAAQ,EAAE;MAAlC,CAAd;MACAL,UAAU,GAAG;QAAEI,UAAU,EAAE,QAAd;QAAwBC,QAAQ,EAAE;MAAlC,CAAb;MACA+kR,WAAW,GAAG;QAAEhlR,UAAU,EAAE,CAAd;QAAiBC,QAAQ,EAAEh2F;MAA3B,CAAd;MACA;;IACJ,KAAK,OAAL;MACI61F,WAAW,GAAG;QAAEE,UAAU,EAAE,OAAd;QAAuBC,QAAQ,EAAE;MAAjC,CAAd;MACAL,UAAU,GAAG;QAAEI,UAAU,EAAE,MAAd;QAAsBC,QAAQ,EAAE;MAAhC,CAAb;MACA+kR,WAAW,GAAG;QAAEhlR,UAAU,EAAE/1F,MAAd;QAAsBg2F,QAAQ,EAAE;MAAhC,CAAd;MACA;;IACJ,KAAK,MAAL;MACIH,WAAW,GAAG;QAAEE,UAAU,EAAE,MAAd;QAAsBC,QAAQ,EAAE;MAAhC,CAAd;MACAL,UAAU,GAAG;QAAEI,UAAU,EAAE,OAAd;QAAuBC,QAAQ,EAAE;MAAjC,CAAb;MACA+kR,WAAW,GAAG;QAAEhlR,UAAU,EAAE/1F,MAAd;QAAsBg2F,QAAQ,EAAE;MAAhC,CAAd;MACA;;IACJ;MAAS;EArBb;;EAuBA,OAAO;IACHH,WADG;IAEHF,UAFG;IAGHolR;EAHG,CAAP;AAKH;AACD;AACA;AACA;;;AACA,SAASlsQ,SAAT,CAAmBmsQ,cAAnB,EAAmC/5Y,QAAnC,EAA6C;EACzC,IAAI+5Y,cAAJ,EAAoB;IAChB,OAAOA,cAAP;EACH;;EACD,IAAI/5Y,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAvC,EAAiD;IAC7C,OAAO;MAAE80H,UAAU,EAAE,KAAd;MAAqBC,QAAQ,EAAE;IAA/B,CAAP;EACH;;EACD,OAAO;IAAED,UAAU,EAAE,MAAd;IAAsBC,QAAQ,EAAE;EAAhC,CAAP;AACH;;AACD,SAAS5U,cAAT,CAAwBC,SAAxB,EAAmC;EAC/B,OAAOA,SAAS,CAACzwC,QAAV,KAAuB,CAA9B;AACH;AACD;AACA;AACA;;;AACA,SAASqqU,iBAAT,CAA2B15R,OAA3B,EAAoC7wJ,QAApC,EAA8C;EAC1C,IAAI6wJ,OAAO,CAACD,OAAZ,EAAqB;IACjB,OAAOC,OAAO,CAACD,OAAR,CAAgB5wJ,QAAhB,CAAP;EACH;;EACD,MAAMk+C,OAAO,GAAG4yG,OAAO,CAACtuJ,SAAR,CAAkB07C,OAAlB,GACZ,CAAC6yG,EAAD,EAAKC,GAAL,KAAaD,EAAE,CAAC7yG,OAAH,CAAW8yG,GAAX,CADD,GAEV,CAACD,EAAD,EAAKC,GAAL,KAAaD,EAAE,CAACE,iBAAH,CAAqBD,GAArB,CAFnB;EAGA,IAAIE,IAAI,GAAGL,OAAX;;EACA,OAAOK,IAAI,IAAI,CAACR,cAAc,CAACQ,IAAD,CAA9B,EAAsC;IAClC,IAAIhzG,OAAO,CAACgzG,IAAD,EAAOlxJ,QAAP,CAAX,EAA6B;MACzB,OAAOkxJ,IAAP;IACH;;IACDA,IAAI,GAAGA,IAAI,CAACvgH,UAAZ;EACH;AACJ;AACD;AACA;AACA;;;AACA,SAAS0xH,QAAT,CAAkB1R,SAAlB,EAA6B8qC,KAA7B,EAAoC;EAChC,IAAI,CAAC9qC,SAAL,EAAgB;IACZ,OAAO,KAAP;EACH;;EACD,IAAID,cAAc,CAACC,SAAD,CAAlB,EAA+B;IAC3B,OAAO,KAAP;EACH;;EACD,IAAIA,SAAS,CAAC0R,QAAd,EAAwB;IACpB,OAAO1R,SAAS,CAAC0R,QAAV,CAAmBo5B,KAAnB,CAAP;EACH;;EACD,IAAI9qC,SAAS,CAACymJ,uBAAd,EAAuC;IACnC,OAAO,CAAC,EAAEzmJ,SAAS,CAACymJ,uBAAV,CAAkC37G,KAAlC,IAA2Ci1E,IAAI,CAAC85K,8BAAlD,CAAR;EACH;AACJ;AACD;AACA;AACA;;;AACA,MAAMvpQ,SAAS,GAAG,CAAC/vB,IAAD,EAAOh7G,MAAP,KAAkB;EAChC,OAAOg7G,IAAI,IAAIA,IAAI,KAAKh7G,MAAxB,EAAgC;IAC5Bg7G,IAAI,GAAGA,IAAI,CAACvgH,UAAZ;EACH;;EACD,OAAOugH,IAAP;AACH,CALD;AAMA;AACA;AACA;;;AACA,SAASu5R,eAAT,CAAyBv0a,IAAzB,EAA+B2nI,GAA/B,EAAoC54E,IAApC,EAA0C;EACtC,MAAMg3H,IAAI,GAAG/lL,IAAI,CAACs5J,qBAAL,EAAb;EACA,OAAOysB,IAAI,CAACp+C,GAAD,CAAJ,GAAao+C,IAAI,CAACh3H,IAAD,CAAJ,GAAa,CAAjC;AACH;AACD;AACA;AACA;;;AACA,SAASylX,YAAT,CAAsBhH,UAAtB,EAAkCxta,IAAlC,EAAwC;EACpC,OAAOwta,UAAU,CAAC/ob,OAAX,CAAmBub,IAAnB,MAA6B,CAAC,CAArC;AACH;AAED;AACA;AACA;;;AACA,MAAMmxN,0BAAN,SAAyCj4E,2EAAzC,CAA2D;EACvDz7J,WAAW,CAACw/J,OAAD,EAAU;IACjB;IACA,KAAKA,OAAL,GAAeA,OAAf;EACH;;AAJsD;;AAM3Dk0E,0BAA0B,CAAC7xO,IAA3B;EAAA,iBAAwH6xO,0BAAxH,EA5HmGz5E,+DA4HnG,CAAoKqB,6EAApK;AAAA;;AACAo4E,0BAA0B,CAACztE,IAA3B,kBA7HmGhM,+DA6HnG;EAAA,MAA4Gy5E,0BAA5G;EAAA;EAAA;IAAA;EAAA;EAAA,WA7HmGz5E,gEA6HnG,CAAsO,CAC9N;IACIrtJ,OAAO,EAAE6uJ,2EADb;IAEIwT,WAAW,EAAEtU,yDAAU,CAAC,MAAM+4E,0BAAP;EAF3B,CAD8N,CAAtO,GA7HmGz5E,wEA6HnG;AAAA;;AAMA;EAAA,mDAnImGA,+DAmInG,CAA4Fy5E,0BAA5F,EAAoI,CAAC;IACzHpxO,IAAI,EAAE63J,oDADmH;IAEzH13J,IAAI,EAAE,CAAC;MACCkK,SAAS,EAAE,CACP;QACIC,OAAO,EAAE6uJ,2EADb;QAEIwT,WAAW,EAAEtU,yDAAU,CAAC,MAAM+4E,0BAAP;MAF3B,CADO,CADZ;MAOCrnO,QAAQ,EAAG;IAPZ,CAAD;EAFmH,CAAD,CAApI,EAW4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CAXtF,EAWwG;IAAE2kF,UAAU,EAAE,CAAC;MACvG59O,IAAI,EAAE+3J,gDAAKA;IAD4F,CAAD;EAAd,CAXxG;AAAA;AAeA;AACA;AACA;;;AACA,MAAM28R,uBAAN,CAA8B;EAC1Bh3b,WAAW,CAACwyH,OAAD,EAAUohD,mBAAV,EAA+B;IACtC,KAAKphD,OAAL,GAAeA,OAAf;IACA,KAAKohD,mBAAL,GAA2BA,mBAA3B;IACA,KAAKhzJ,KAAL,GAAa,IAAIs5I,uDAAJ,EAAb;IACA,KAAK+8R,YAAL,GAAoB,IAApB;IACA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKC,OAAL,GAAe,IAAf;;IACA,KAAKC,aAAL,GAAqB,CAACx6Y,QAAD,EAAWy6Y,WAAX,EAAwBC,MAAxB,KAAmC;MACpD,MAAM9kP,MAAM,GAAG,EAAf;MACA,MAAM2zJ,UAAU,GAAGvpT,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAtD;MACA,MAAM26Y,OAAO,GAAG,QAAhB;MACA,MAAMC,OAAO,GAAG,MAAhB;;MACA,IAAI,CAACF,MAAL,EAAa;QACT9kP,MAAM,CAACntD,SAAP,GAAmB8gN,UAAU,GAAI,WAAUqxF,OAAQ,GAAtB,GAA4B,WAAUA,OAAQ,GAA3E;QACA,OAAOhlP,MAAP;MACH;;MACD,IAAI51J,QAAQ,KAAK,KAAjB,EAAwB;QACpB41J,MAAM,CAAC71B,MAAP,GAAgB,OAAhB;MACH,CAFD,MAGK,IAAI//H,QAAQ,KAAK,QAAjB,EAA2B;QAC5B41J,MAAM,CAACx9J,GAAP,GAAa,OAAb;MACH,CAFI,MAGA,IAAI4H,QAAQ,KAAK,MAAjB,EAAyB;QAC1B41J,MAAM,CAACrhG,KAAP,GAAe,OAAf;MACH,CAFI,MAGA,IAAIv0D,QAAQ,KAAK,OAAjB,EAA0B;QAC3B41J,MAAM,CAACt9J,IAAP,GAAc,OAAd;MACH;;MACDs9J,MAAM,CAAC51J,QAAD,CAAN,GAAoB,GAAE,CAACy6Y,WAAY,IAAnC;MACA7kP,MAAM,CAACntD,SAAP,GAAmB8gN,UAAU,GAAI,WAAUoxF,OAAQ,GAAtB,GAA4B,WAAUA,OAAQ,GAA3E;MACA,OAAO/kP,MAAP;IACH,CAxBD;;IAyBA,KAAKlyC,SAAL,GAAiBsT,mBAAmB,CAACrT,GAApB,GAA0B,KAA1B,GAAkC,KAAnD;EACH;;EACa,IAAVo/E,UAAU,GAAG;IACb,OAAO,oBAAP;EACH;;EACY,IAAT/9F,SAAS,GAAG;IACZ,OAAO,KAAK0oO,QAAZ;EACH;;EACc,IAAXmtE,WAAW,GAAG;IACd,OAAO,UAAP;EACH;;EACDjsb,QAAQ,GAAG;IACP,KAAKoqK,sBAAL,GAA8B,KAAKhC,mBAAL,CAAyBpT,OAAzB,CACzBt8J,SADyB,CACf,CAAC;MAAEq8J;IAAF,CAAD,KAAa,KAAKD,SAAL,GAAiBC,GAAG,GAAG,KAAH,GAAW,KAD7B,CAA9B;EAEH;;EACD0D,WAAW,GAAG;IACV,IAAI,KAAK2R,sBAAT,EAAiC;MAC7B,KAAKA,sBAAL,CAA4BvR,WAA5B;IACH;EACJ;;EACmB,IAAhBk8E,gBAAgB,GAAG;IACnB,OAAO,KAAKL,UAAL,IAAmB,KAAKtsE,mBAAL,CAAyB5oK,GAAzB,CAA6B,YAA7B,CAA1B;EACH;;EACD0sb,oBAAoB,GAAG;IACnB,OAAO;MACH,OAAO,aADJ;MAEH,QAAQ,aAFL;MAGH,UAAU,aAHP;MAIH,SAAS;IAJN,EAKL,KAAK96Y,QALA,CAAP;EAMH;;EACD6jM,YAAY,CAACngO,KAAD,EAAQ;IAChBA,KAAK,CAACg1B,cAAN;IACA,KAAK10B,KAAL,CAAWqmI,IAAX;EACH;;EACD0wS,qBAAqB,CAAC/6Y,QAAD,EAAW06Y,MAAX,EAAmB;IACpC,IAAI,CAAC,KAAKH,OAAV,EAAmB;MACf;IACH;;IACD,MAAMA,OAAO,GAAG,KAAK3kU,OAAL,CAAaiuC,aAAb,CAA2Bsb,aAA3B,CAAyC,YAAzC,CAAhB;IACA,MAAMoqL,UAAU,GAAGvpT,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAtD;IACA,MAAM00B,IAAI,GAAG60R,UAAU,GAAG,OAAH,GAAa,QAApC;IACA,MAAMj8M,GAAG,GAAGi8M,UAAU,GAAG,MAAH,GAAY,KAAlC;IACA,MAAMyxF,cAAc,GAAGzxF,UAAU,GAAG,YAAH,GAAkB,WAAnD;IACA,MAAMkxF,WAAW,GAAGF,OAAO,CAACt7Q,qBAAR,GAAgCvqG,IAAhC,CAApB;IACA,MAAMumX,YAAY,GAAGf,eAAe,CAAC,KAAK7kR,MAAL,CAAYxR,aAAb,EAA4BvW,GAA5B,EAAiC54E,IAAjC,CAApC;IACA,MAAMwmX,aAAa,GAAGhB,eAAe,CAAC,KAAKtkU,OAAL,CAAaiuC,aAAd,EAA6BvW,GAA7B,EAAkC54E,IAAlC,CAArC;IACA,MAAM8gI,IAAI,GAAGxyK,IAAI,CAACokE,GAAL,CAAS8zV,aAAa,GAAGD,YAAzB,CAAb;;IACA,IAAIzlP,IAAI,GAAG,CAAP,IAAYA,IAAI,KAAK,CAArB,IAA0BxyK,IAAI,CAACo1C,KAAL,CAAWo9H,IAAX,MAAqB,CAAnD,EAAsD;MAClD,MAAM2lP,SAAS,GAAGD,aAAa,GAAGD,YAAhB,GAAgCR,WAAW,GAAG,CAAhE;MACAF,OAAO,CAACz6Y,KAAR,CAAck7Y,cAAd,IAAiC,GAAE,CAACG,SAAU,IAA9C;IACH;;IACD,MAAMX,aAAa,GAAG,KAAKA,aAAL,CAAmBx6Y,QAAnB,EAA6By6Y,WAA7B,EAA0CC,MAA1C,CAAtB;IACAjyb,MAAM,CAAC6D,IAAP,CAAYkub,aAAZ,EAA2B1tb,OAA3B,CAAoCgzC,KAAD,IAAW;MAC1Cy6Y,OAAO,CAACz6Y,KAAR,CAAcA,KAAd,IAAuB06Y,aAAa,CAAC16Y,KAAD,CAApC;IACH,CAFD;EAGH;;AAzFyB;;AA2F9Bs6Y,uBAAuB,CAACn1b,IAAxB;EAAA,iBAAqHm1b,uBAArH,EAhPmG/8R,+DAgPnG,CAA8JA,qDAA9J,GAhPmGA,+DAgPnG,CAAwLqB,6EAAxL;AAAA;;AACA07R,uBAAuB,CAACrrb,IAAxB,kBAjPmGsuJ,+DAiPnG;EAAA,MAAyG+8R,uBAAzG;EAAA;EAAA;EAAA;IAAA;MAjPmG/8R,yDAiPnG;MAjPmGA,wDAiPnG;MAjPmGA,yDAiPnG;MAjPmGA,yDAiPnG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;EAAA,WAjPmGA,gEAiPnG,CAA6oB,CACroBsB,6EADqoB,EAEroB;IACI3uJ,OAAO,EAAE4uJ,qEADb;IAEI3uJ,QAAQ,EAAE;EAFd,CAFqoB,CAA7oB;EAAA;EAAA;EAAA;IAAA;;IAAA;MAAA;AACA;AACA;AACA;MAHA;MAAA;IAAA;MAAA,iCASwB,+DATxB;IAAA;;IAAA;EAAA;EAAA;IAAA;MAjPmGotJ,gEAwP3F,MAPR;MAjPmGA,4DA8P3F,aAbR;MAjPmGA,wDA+PvF,2DAdZ;MAjPmGA,wDAuQvF,2EAtBZ;MAjPmGA,wDA4QvF,2EA3BZ;MAjPmGA,0DAgR3F,EA/BR;MAjPmGA,wDAkR3F,2DAjCR;MAjPmGA,wDAsR3F,2DArCR;IAAA;;IAAA;MAjPmGA,uDA+PzD,GAd1C;MAjPmGA,wDA+PzD,2BAd1C;MAjPmGA,uDAwQnF,GAvBhB;MAjPmGA,wDAwQnF,0FAxQmFA,6DAwQnF,iCAvBhB;MAjPmGA,uDA6QnF,GA5BhB;MAjPmGA,wDA6QnF,4BA5BhB;MAjPmGA,uDAkRrF,GAjCd;MAjPmGA,wDAkRrF,sBAjCd;MAjPmGA,uDAsRnE,GArChC;MAjPmGA,wDAsRnE,qBArChC;IAAA;EAAA;EAAA,eAsC4Cy5E,0BAtC5C,EAsCuJ13E,iDAtCvJ,EAsCwOA,6DAtCxO,EAsCgWA,oDAtChW;EAAA;AAAA;;AAuCA;EAAA,mDAxRmG/B,+DAwRnG,CAA4F+8R,uBAA5F,EAAiI,CAAC;IACtH10b,IAAI,EAAExE,oDADgH;IAEtH2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,eADX;MAECL,QAAQ,EAAG;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,KAlCmB;MAmCCW,SAAS,EAAE,CACP4uJ,6EADO,EAEP;QACI3uJ,OAAO,EAAE4uJ,qEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CAFO;IAnCZ,CAAD;EAFgH,CAAD,CAAjI,EA6C4B,YAAY;IAAE,OAAO,CAAC;MAAEvK,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAA1B,CAAP;EAAqE,CA7C/G,EA6CiI;IAAE+E,SAAS,EAAE,CAAC;MAC/Hh+J,IAAI,EAAEi4J,sDADyH;MAE/H93J,IAAI,EAAE,CAAC,UAAD;IAFyH,CAAD,CAAb;IAGjHme,KAAK,EAAE,CAAC;MACRte,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CAH0G;IAKjHqlF,UAAU,EAAE,CAAC;MACbr9O,IAAI,EAAEi4J,sDADO;MAEb93J,IAAI,EAAE,CAAC,OAAD;IAFO,CAAD,CALqG;IAQjHm/I,SAAS,EAAE,CAAC;MACZt/I,IAAI,EAAEi4J,sDADM;MAEZ93J,IAAI,EAAE,CAAC,0BAAD;IAFM,CAAD,CARsG;IAWjHg1b,WAAW,EAAE,CAAC;MACdn1b,IAAI,EAAEi4J,sDADQ;MAEd93J,IAAI,EAAE,CAAC,gBAAD;IAFQ,CAAD,CAXoG;IAcjHw0b,YAAY,EAAE,CAAC;MACf30b,IAAI,EAAEi4J,sDADS;MAEf93J,IAAI,EAAE,CAAC,gBAAD;IAFS,CAAD,EAGf;MACCH,IAAI,EAAE+3J,gDAAKA;IADZ,CAHe,CAdmG;IAmBjH68R,aAAa,EAAE,CAAC;MAChB50b,IAAI,EAAEi4J,sDADU;MAEhB93J,IAAI,EAAE,CAAC,iBAAD;IAFU,CAAD,EAGhB;MACCH,IAAI,EAAE+3J,gDAAKA;IADZ,CAHgB,CAnBkG;IAwBjHwnN,aAAa,EAAE,CAAC;MAChBv/W,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAxBkG;IA0BjH4X,MAAM,EAAE,CAAC;MACT3vK,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CA1ByG;IA4BjHiwN,QAAQ,EAAE,CAAC;MACXhoX,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CA5BuG;IA8BjHmP,WAAW,EAAE,CAAC;MACdlnK,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CA9BoG;IAgCjHs9O,cAAc,EAAE,CAAC;MACjBr1Y,IAAI,EAAE+3J,gDAAKA;IADM,CAAD;EAhCiG,CA7CjI;AAAA;AAiFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM29R,gBAAN,CAAuB;EACnBh4b,WAAW,CAACi4b,cAAD,EAAiBv4R,MAAjB,EAAyBH,QAAzB,EAAmCiQ,YAAnC,EAAiDY,QAAjD,EAA2D8nR,cAA3D,EAA2E;IAClF,KAAKD,cAAL,GAAsBA,cAAtB;IACA,KAAKv4R,MAAL,GAAcA,MAAd;IACA,KAAKH,QAAL,GAAgBA,QAAhB;IACA,KAAKiQ,YAAL,GAAoBA,YAApB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKz0J,MAAL,GAAc,SAAd;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK6hC,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;;IACQ,KAAKs1N,SAAL,GAAiB,GAAjB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKilL,OAAL,GAAe,IAAf;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK7sE,QAAL,GAAgB,KAAhB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAK3uS,MAAL,GAAc,CAAd;IACA,KAAKs2F,MAAL,GAAc,IAAd;IACA,KAAKkmR,cAAL,GAAsB,CAAC,KAAD,EAAQ,QAAR,EAAkB,OAAlB,EAA2B,MAA3B,CAAtB;IACA,KAAKC,gBAAL,GAAwB,CAAC,OAAD,EAAU,OAAV,EAAmB,MAAnB,CAAxB;IACAv8R,0EAAe,CAACW,eAAD,CAAf;IACAn3J,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB8qK,QAApB,EAA8B8nR,cAA9B;IACA,KAAKx4R,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;MAChC,MAAMgK,OAAO,GAAG,KAAK6qR,cAAL,CAAoBx3R,aAApC;MACA,KAAK43R,uBAAL,GAA+B18R,+CAAS,CAACyR,OAAD,EAAU,WAAV,CAAT,CAC1B3nK,IAD0B,CACrBsV,sDAAM,CAAC,MAAM,KAAKA,MAAL,KAAgB,EAAvB,CADe,EAE1B7W,SAF0B,CAEf6L,CAAD,IAAO;QAClB,MAAMuob,aAAa,GAAG1B,iBAAiB,CAAC7mb,CAAC,CAAC6hB,MAAH,EAAW,KAAK7W,MAAhB,CAAvC;;QACA,IAAIu9a,aAAJ,EAAmB;UACf,KAAKC,gBAAL,CAAsB;YAAE93R,aAAa,EAAE63R;UAAjB,CAAtB;QACH;MACJ,CAP8B,CAA/B;MAQA,KAAKE,qBAAL,GAA6B78R,+CAAS,CAACyR,OAAD,EAAU,WAAV,CAAT,CACxB3nK,IADwB,CACnBgpM,4DAAY,CAAC,GAAD,CADO,EACA1zL,sDAAM,CAAC,MAAM,KAAKA,MAAL,KAAgB,EAAvB,CADN,EAExB7W,SAFwB,CAEd6L,CAAC,IAAI,KAAK0ob,WAAL,CAAiB1ob,CAAjB,CAFS,CAA7B;MAGA,KAAK2ob,oBAAL,GAA4B/8R,+CAAS,CAACyR,OAAD,EAAU,UAAV,CAAT,CACvBlpK,SADuB,CACb6L,CAAC,IAAI,KAAK4ob,UAAL,CAAgB5ob,CAAhB,CADQ,CAA5B;IAEH,CAfD;EAgBH;EACD;AACJ;AACA;AACA;;;EACuB,IAAf6ob,eAAe,CAACl1b,KAAD,EAAQ;IACvB,KAAKsI,QAAL,GAAgBtI,KAAhB;EACH;;EACkB,IAAfk1b,eAAe,GAAG;IAClB,OAAO,KAAK5sb,QAAZ;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIs+K,IAAI,CAACrY,MAAD,EAAS;IACT,IAAI,KAAKd,QAAT,EAAmB;MACf;IACH;;IACD,IAAIc,MAAM,YAAY9U,OAAtB,EAA+B;MAC3B8U,MAAM,GAAG;QAAExR,aAAa,EAAEwR;MAAjB,CAAT;IACH;;IACD,KAAKA,MAAL,GAAcA,MAAd;;IACA,IAAI,KAAK+iO,MAAL,KAAgB,OAApB,EAA6B;MACzB,IAAI,KAAK7jO,QAAT,EAAmB;QACf;MACH;;MACDnwJ,YAAY,CAAC,KAAK63a,WAAN,CAAZ;MACA,KAAKA,WAAL,GAAmBh0b,MAAM,CAAC6b,UAAP,CAAkB,MAAM,KAAKo4a,WAAL,CAAiB,KAAK7mR,MAAtB,CAAxB,EAAuD,KAAKigG,SAA5D,CAAnB;IACH,CAND,MAOK;MACD,KAAKqmL,gBAAL,CAAsB,KAAKtmR,MAA3B;MACA,KAAK6mR,WAAL,CAAiB,KAAK7mR,MAAtB;IACH;EACJ;EACD;AACJ;AACA;;;EACIyY,IAAI,GAAG;IACH1pK,YAAY,CAAC,KAAK63a,WAAN,CAAZ;IACA,MAAM5mR,MAAM,GAAG,KAAKA,MAAL,IAAe,KAAKA,MAAL,CAAYxR,aAA1C;;IACA,IAAIwR,MAAM,IAAIA,MAAM,CAACuI,YAAP,CAAoB,YAApB,CAAd,EAAiD;MAC7C,IAAI,CAACvI,MAAM,CAACuI,YAAP,CAAoB,OAApB,CAAD,IAAiCvI,MAAM,CAAC/O,YAAP,CAAoB,OAApB,CAArC,EAAmE;QAC/D+O,MAAM,CAACn1H,YAAP,CAAoB,OAApB,EAA6Bm1H,MAAM,CAACuI,YAAP,CAAoB,YAApB,CAA7B;MACH;;MACDvI,MAAM,CAACn1H,YAAP,CAAoB,YAApB,EAAkC,EAAlC;IACH;;IACD,IAAI,KAAKi8Y,yBAAT,EAAoC;MAChC,KAAKA,yBAAL,CAA+B10R,WAA/B;IACH;;IACD,IAAI,KAAK4tO,sBAAT,EAAiC;MAC7B,KAAKA,sBAAL,CAA4B5tO,WAA5B;IACH;;IACD,KAAKkX,UAAL;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACIrL,MAAM,CAAC+B,MAAD,EAASqY,IAAT,EAAe;IACjB,MAAM0uQ,cAAc,GAAG,KAAK/mR,MAAL,IAAe,KAAKA,MAAL,CAAYxR,aAAlD;;IACA,IAAIwR,MAAM,YAAY9U,OAAtB,EAA+B;MAC3B8U,MAAM,GAAG;QAAExR,aAAa,EAAEwR;MAAjB,CAAT;IACH;;IACD,IAAI+mR,cAAc,KAAK/mR,MAAM,CAACxR,aAA9B,EAA6C;MACzC,KAAKiqB,IAAL;IACH;;IACD,IAAIsuQ,cAAc,KAAK/mR,MAAM,CAACxR,aAA1B,IAA2C,KAAKu0O,MAAL,KAAgB,OAA/D,EAAwE;MACpE,KAAKtqN,IAAL;IACH;;IACD,IAAI,OAAOJ,IAAP,KAAgB,WAApB,EAAiC;MAC7BA,IAAI,GAAG,CAAC,KAAKnZ,QAAb;IACH;;IACD,IAAImZ,IAAJ,EAAU;MACN,KAAKA,IAAL,CAAUrY,MAAV;IACH,CAFD,MAGK;MACD,KAAKyY,IAAL;IACH;EACJ;;EACDl/K,QAAQ,GAAG;IACP,IAAI,KAAKwpY,MAAL,KAAgBzyY,SAApB,EAA+B;MAC3B,KAAKyyY,MAAL,GAAc,OAAd;IACH;;IACD,KAAKxY,gBAAL;EACH;;EACD74N,WAAW,CAACnD,OAAD,EAAU;IACjB,IAAIA,OAAO,CAACw0O,MAAZ,EAAoB;MAChB,KAAKikD,cAAL;IACH;EACJ;;EACDl1R,kBAAkB,GAAG;IACjB,IAAI,CAAC,KAAKoN,QAAV,EAAoB;MAChB;IACH;;IACD,IAAI,KAAKc,MAAL,IACA,CAACqb,SAAS,CAAC,KAAKrb,MAAL,CAAYxR,aAAZ,IAA6B,KAAKwR,MAAnC,EAA2C,KAAKgmR,cAAL,CAAoBx3R,aAA/D,CADd,EAC6F;MACzF,KAAKwR,MAAL,GAAc,IAAd;MACA,KAAKyY,IAAL;IACH;EACJ;;EACDzmB,WAAW,GAAG;IACV,KAAKymB,IAAL;IACA,KAAK1+K,QAAL,GAAgB,IAAhB;IACA,KAAKqsb,uBAAL,CAA6Bh0R,WAA7B;IACA,KAAKm0R,qBAAL,CAA2Bn0R,WAA3B;IACA,KAAKq0R,oBAAL,CAA0Br0R,WAA1B;;IACA,IAAI,KAAK60R,sBAAT,EAAiC;MAC7B,KAAKA,sBAAL,CAA4B70R,WAA5B;IACH;;IACD,IAAI,KAAK80R,+BAAT,EAA0C;MACtC,KAAKA,+BAAL,CAAqC90R,WAArC;IACH;;IACD,IAAI,KAAK00R,yBAAT,EAAoC;MAChC,KAAKA,yBAAL,CAA+B10R,WAA/B;IACH;EACJ;;EACDy0R,WAAW,CAACM,SAAD,EAAY;IACnB,IAAI,CAACA,SAAS,CAAC34R,aAAV,CAAwB+Z,YAAxB,CAAqC,YAArC,CAAD,IAAuD,CAAC,KAAKxuK,QAAjE,EAA2E;MACvE;IACH;;IACD,KAAK0zJ,MAAL,CAAYt+C,GAAZ,CAAgB,MAAM;MAClB,KAAKvuE,SAAL,CAAeumZ,SAAf;MACA,KAAKC,WAAL,CAAiB,KAAKloR,QAAL,CAAc3+C,OAA/B,EAAwC4mU,SAAxC;IACH,CAHD;IAIA,KAAKjoR,QAAL,CAAcgB,wBAAd,CACK1sK,IADL,CACU02J,oDAAI,CAAC,CAAD,CADd,EAEKj4J,SAFL,CAEe,MAAM,KAAKwmL,IAAL,EAFrB;EAGH;;EACD2uQ,WAAW,CAACC,gBAAD,EAAmBF,SAAnB,EAA8B;IACrC,MAAM5mU,OAAO,GAAG8mU,gBAAgB,CAACr5b,QAAjC;IACA,KAAKgyY,sBAAL,GAA8Bz/Q,OAAO,CAAC5xG,KAAR,CACzB1c,SADyB,CACf,MAAM;MACjB,KAAKwmL,IAAL;IACH,CAH6B,CAA9B;;IAIA,IAAI,CAAC,KAAK1+K,QAAV,EAAoB;MAChBwmH,OAAO,CAACmlR,cAAR,GAAyB,KAAK1lO,MAAL,CAAYxR,aAAZ,CAA0B+Z,YAA1B,CAAuC,YAAvC,CAAzB;IACH,CAFD,MAGK;MACDhoD,OAAO,CAACg3C,WAAR,GAAsB,KAAKx9J,QAA3B;IACH;;IACD,IAAI,KAAK61W,aAAT,EAAwB;MACpBrvP,OAAO,CAACqvP,aAAR,GAAwB,KAAKA,aAA7B;IACH;;IACDrvP,OAAO,CAAC0tH,UAAR,GAAqB,KAAKA,UAA1B;IACA1tH,OAAO,CAACy/C,MAAR,GAAiBmnR,SAAjB;IACA5mU,OAAO,CAAC2kU,OAAR,GAAkB,KAAKA,OAAvB;IACA3kU,OAAO,CAAC83P,QAAR,GAAmB,KAAKA,QAAxB;IACA93P,OAAO,CAAC51E,QAAR,GAAmB,KAAKA,QAAxB;IACA41E,OAAO,CAACykU,YAAR,GAAuB,KAAKA,YAA5B;IACAzkU,OAAO,CAAC0kU,aAAR,GAAwB,KAAKA,aAA7B;IACA,KAAK/lR,QAAL,CAAc3+C,OAAd,CAAsB04D,iBAAtB,CAAwClT,aAAxC;EACH;;EACDugR,gBAAgB,CAACrvR,UAAD,EAAa;IACzB,MAAMhM,OAAO,GAAGgM,UAAU,CAACzI,aAA3B;;IACA,IAAIvD,OAAO,CAACsd,YAAR,CAAqB,OAArB,CAAJ,EAAmC;MAC/Btd,OAAO,CAACpgH,YAAR,CAAqB,YAArB,EAAmCogH,OAAO,CAACsd,YAAR,CAAqB,OAArB,CAAnC;MACAtd,OAAO,CAACpgH,YAAR,CAAqB,OAArB,EAA8B,EAA9B;IACH;EACJ;;EACDjK,SAAS,CAACumZ,SAAD,EAAY;IACjB,MAAMG,aAAa,GAAG9nR,KAAK,CAAC,KAAK70H,QAAN,EAAgB,KAAK++B,MAArB,CAA3B;IACA,MAAM61F,WAAW,GAAG+nR,aAAa,CAAC/nR,WAAlC;IACA,MAAMF,UAAU,GAAGioR,aAAa,CAACjoR,UAAjC;IACA,MAAMolR,WAAW,GAAG6C,aAAa,CAAC7C,WAAlC;IACA,KAAKvlR,QAAL,GAAgB,KAAK3B,YAAL,CAAkB/9I,IAAlB,CAAuB;MACnCwgJ,MAAM,EAAEmnR,SAD2B;MAEnC5nR,WAFmC;MAGnCjV,OAAO,EAAE,KAH0B;MAInC/pC,OAAO,EAAEwkU,uBAJ0B;MAKnCxsQ,SAAS,EAAEA,SAAS,CAAC,KAAKA,SAAN,EAAiB,KAAK5tI,QAAtB,CALe;MAMnC2qI,MAAM,EAAEmvQ,WAN2B;MAOnCplR,UAPmC;MAQnCrE,UAAU,EAAE;IARuB,CAAvB,CAAhB;IAUA,KAAK1N,QAAL,CAAc0F,QAAd,CAAuB,KAAKkM,QAAL,CAAcI,YAArC,EAAmD,mBAAnD;;IACA,IAAI,KAAKioR,YAAT,EAAuB;MACnB,KAAKj6R,QAAL,CAAc0F,QAAd,CAAuB,KAAKkM,QAAL,CAAcI,YAArC,EAAmD,KAAKioR,YAAxD;IACH;;IACD,MAAMn2C,aAAa,GAAG,KAAKlyO,QAAL,CAAc3+C,OAAd,CAAsBvyH,QAA5C;;IACA,IAAIojZ,aAAa,CAAC8zC,OAAlB,EAA2B;MACvB,KAAKgC,+BAAL,GAAuC,KAAKhoR,QAAL,CAAcoyO,mBAAd,CAClCr/Y,SADkC,CACxB,CAAC;QAAEu7Y;MAAF,CAAD,KAAc;QACzB,MAAM63C,MAAM,GAAG73C,IAAI,CAAC/tO,UAAL,KAAoB,IAApB,IAA4B+tO,IAAI,CAAC9tO,QAAL,KAAkB,IAA7D;QACA0xO,aAAa,CAACs0C,qBAAd,CAAoC,KAAK/6Y,QAAzC,EAAmD06Y,MAAnD;MACH,CAJsC,CAAvC;IAKH;;IACD,IAAI,KAAKtiD,MAAL,KAAgB,OAApB,EAA6B;MACzB,KAAKt1O,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;QAChC,MAAM7yH,KAAK,GAAG,KAAK4gI,QAAL,CAAcI,YAA5B;QACA,KAAKwnR,yBAAL,GAAiCp9R,+CAAS,CAACprH,KAAD,EAAQ,UAAR,CAAT,CAC5BrsC,SAD4B,CACjB6L,CAAD,IAAO,KAAK4ob,UAAL,CAAgB5ob,CAAhB,CADW,CAAjC;MAEH,CAJD;IAKH;EACJ;;EACDwrK,UAAU,GAAG;IACT,IAAI,KAAKpK,QAAT,EAAmB;MACf,KAAKA,QAAL,CAAcvwJ,KAAd;MACA,KAAKuwJ,QAAL,GAAgB,IAAhB;IACH;;IACD,IAAI,KAAKgoR,+BAAT,EAA0C;MACtC,KAAKA,+BAAL,CAAqC90R,WAArC;IACH;EACJ;;EACD40R,cAAc,GAAG;IACb,IAAI,KAAKC,sBAAT,EAAiC;MAC7B,KAAKA,sBAAL,CAA4B70R,WAA5B;IACH;;IACD,IAAI,KAAK2wO,MAAL,KAAgB,OAApB,EAA6B;MACzB,KAAKkkD,sBAAL,GAA8Bv9R,+CAAS,CAACp3J,QAAD,EAAW,OAAX,CAAT,CACzBkB,IADyB,CACpBsV,sDAAM,CAAC,MAAM,KAAKA,MAAL,KAAgB,EAAvB,CADc,EAEzB7W,SAFyB,CAEf6L,CAAC,IAAI,KAAK0pb,YAAL,CAAkB1pb,CAAlB,EAAqB,KAAKkob,cAAL,CAAoBx3R,aAAzC,CAFU,CAA9B;IAGH;EACJ;;EACDg5R,YAAY,CAAC1pb,CAAD,EAAIq9J,OAAJ,EAAa;IACrB,MAAMx7I,MAAM,GAAG7hB,CAAC,CAAC6hB,MAAjB;IACA,MAAM0ma,aAAa,GAAG1B,iBAAiB,CAAChla,MAAD,EAAS,KAAK7W,MAAd,CAAvC;IACA,MAAMw1B,KAAK,GAAG,KAAK4gI,QAAL,IAAiB,KAAKA,QAAL,CAAcI,YAA7C;;IACA,IAAIhhI,KAAJ,EAAW;MACP,IAAIA,KAAK,CAACm+H,QAAN,CAAe98I,MAAf,CAAJ,EAA4B;QACxB;MACH;;MACD,IAAI,KAAK04V,QAAT,EAAmB;QACf;MACH;IACJ;;IACD,IAAIl9M,OAAO,CAACsB,QAAR,CAAiB98I,MAAjB,KAA4B0ma,aAAhC,EAA+C;MAC3C,KAAKpoR,MAAL,CAAYooR,aAAZ,EAA2B,IAA3B;IACH,CAFD,MAGK,IAAI/nZ,KAAJ,EAAW;MACZ,KAAKm6I,IAAL;IACH;EACJ;;EACD+tQ,WAAW,CAAC1ob,CAAD,EAAI;IACX,MAAMuob,aAAa,GAAG1B,iBAAiB,CAAC7mb,CAAC,CAAC6hB,MAAH,EAAW,KAAK7W,MAAhB,CAAvC;;IACA,IAAI,KAAKi6X,MAAL,KAAgB,OAApB,EAA6B;MACzB;IACH;;IACD,IAAIsjD,aAAJ,EAAmB;MACf,KAAKpoR,MAAL,CAAYooR,aAAZ,EAA2B,IAA3B;IACH;EACJ;;EACDK,UAAU,CAAC5ob,CAAD,EAAI;IACV,IAAI,KAAKilY,MAAL,KAAgB,OAApB,EAA6B;MACzB;IACH;;IACD,IAAI,KAAK1qB,QAAT,EAAmB;MACf;IACH;;IACD,MAAM/5U,KAAK,GAAG,KAAK4gI,QAAL,IAAiB,KAAKA,QAAL,CAAcI,YAA7C;IACA,MAAM5J,aAAa,GAAG53J,CAAC,CAAC43J,aAAxB;;IACA,IAAIA,aAAa,IAAI,KAAKsK,MAAtB,IAAgCvD,QAAQ,CAAC,KAAKuD,MAAL,CAAYxR,aAAb,EAA4BkH,aAA5B,CAA5C,EAAwF;MACpF;IACH;;IACD,IAAIA,aAAa,IAAI+G,QAAQ,CAACn+H,KAAD,EAAQo3H,aAAR,CAA7B,EAAqD;MACjD;IACH;;IACD,KAAK+iB,IAAL;EACH;;EACD8xM,gBAAgB,GAAG;IACf,IAAI,CAAC/hO,wDAAS,EAAd,EAAkB;MACd;IACH;;IACD,IAAI,CAACs8R,YAAY,CAAC,KAAKoB,cAAN,EAAsB,KAAKv7Y,QAA3B,CAAjB,EAAuD;MACnD,MAAM,IAAI7e,KAAJ,CAAW,6GAAX,CAAN;IACH;;IACD,IAAI,CAACg5Z,YAAY,CAAC,KAAKqB,gBAAN,EAAwB,KAAKpjD,MAA7B,CAAjB,EAAuD;MACnD,MAAM,IAAIj3W,KAAJ,CAAW,yFAAX,CAAN;IACH;EACJ;;AAxVkB;;AA0VvBi6Z,gBAAgB,CAACn2b,IAAjB;EAAA,iBAA8Gm2b,gBAA9G,EA9sBmG/9R,+DA8sBnG,CAAgJA,qDAAhJ,GA9sBmGA,+DA8sBnG,CAA0KA,iDAA1K,GA9sBmGA,+DA8sBnG,CAAgMA,oDAAhM,GA9sBmGA,+DA8sBnG,CAAyNsyC,uEAAzN,GA9sBmGtyC,+DA8sBnG,CAAuPw8R,eAAvP,MA9sBmGx8R,+DA8sBnG,CAAmSu8R,gBAAnS;AAAA;;AACAwB,gBAAgB,CAAC/xR,IAAjB,kBA/sBmGhM,+DA+sBnG;EAAA,MAAkG+9R,gBAAlG;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;EAAA,WA/sBmG/9R,kEA+sBnG;AAAA;;AACA;EAAA,mDAhtBmGA,+DAgtBnG,CAA4F+9R,gBAA5F,EAA0H,CAAC;IAC/G11b,IAAI,EAAE63J,oDADyG;IAE/G13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,gBADX;MAEC65J,QAAQ,EAAE;IAFX,CAAD;EAFyG,CAAD,CAA1H,EAM4B,YAAY;IAAE,OAAO,CAAC;MAAE5jK,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA1B,EAA+C;MAAE1jK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA/C,EAAuE;MAAEzjK,IAAI,EAAEiqM,uEAAiBl6B;IAAzB,CAAvE,EAAoG;MAAE/vK,IAAI,EAAEm0b,eAAR;MAAyBj0b,UAAU,EAAE,CAAC;QACvKF,IAAI,EAAE83J,mDAAQA;MADyJ,CAAD;IAArC,CAApG,EAE3B;MAAE93J,IAAI,EAAEm0b,eAAR;MAAyBj0b,UAAU,EAAE,CAAC;QACxCF,IAAI,EAAE83J,mDAAQA;MAD0B,CAAD,EAExC;QACC93J,IAAI,EAAE1E,iDADP;QAEC6E,IAAI,EAAE,CAAC+zb,gBAAD;MAFP,CAFwC;IAArC,CAF2B,CAAP;EAOlB,CAbxB,EAa0C;IAAEz7a,MAAM,EAAE,CAAC;MACrCzY,IAAI,EAAE+3J,gDAAKA;IAD0B,CAAD,CAAV;IAE1Bz9G,QAAQ,EAAE,CAAC;MACXt6C,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAFgB;IAI1BwnN,aAAa,EAAE,CAAC;MAChBv/W,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAJW;IAM1B26O,MAAM,EAAE,CAAC;MACT1yY,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CANkB;IAQ1B63G,SAAS,EAAE,CAAC;MACZ5vQ,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CARe;IAU1B88R,OAAO,EAAE,CAAC;MACV70b,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CAViB;IAY1BiwN,QAAQ,EAAE,CAAC;MACXhoX,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAZgB;IAc1B1+E,MAAM,EAAE,CAAC;MACTr5E,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CAdkB;IAgB1B48R,YAAY,EAAE,CAAC;MACf30b,IAAI,EAAE+3J,gDAAKA;IADI,CAAD,CAhBY;IAkB1B68R,aAAa,EAAE,CAAC;MAChB50b,IAAI,EAAE+3J,gDAAKA;IADK,CAAD,CAlBW;IAoB1Bm/R,YAAY,EAAE,CAAC;MACfl3b,IAAI,EAAE+3J,gDAAKA;IADI,CAAD,CApBY;IAsB1BmwB,SAAS,EAAE,CAAC;MACZloL,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAtBe;IAwB1B6lF,UAAU,EAAE,CAAC;MACb59O,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAxBc;IA0B1Bu+R,eAAe,EAAE,CAAC;MAClBt2b,IAAI,EAAE+3J,gDAAKA;IADO,CAAD;EA1BS,CAb1C;AAAA;AA2CA;AACA;AACA;;;AACA,MAAMq/R,MAAM,GAAG;EACXC,OAAO,EAAG,mHADC;EAEXC,YAAY,EAAG,+CAFJ;EAGX5kD,MAAM,EAAG;AAHE,CAAf;AAMA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM6kD,6BAAN,CAAoC;EAChC75b,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAH+B;;AAKpCqwR,6BAA6B,CAACh4b,IAA9B;EAAA,iBAA2Hg4b,6BAA3H,EA/wBmG5/R,+DA+wBnG,CAA0KA,sDAA1K;AAAA;;AACA4/R,6BAA6B,CAAC5zR,IAA9B,kBAhxBmGhM,+DAgxBnG;EAAA,MAA+G4/R,6BAA/G;EAAA;AAAA;;AACA;EAAA,mDAjxBmG5/R,+DAixBnG,CAA4F4/R,6BAA5F,EAAuI,CAAC;IAC5Hv3b,IAAI,EAAE63J,oDADsH;IAE5H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFsH,CAAD,CAAvI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0/R,4BAAN,CAAmC;EAC/B95b,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAH8B;;AAKnCswR,4BAA4B,CAACj4b,IAA7B;EAAA,iBAA0Hi4b,4BAA1H,EAryBmG7/R,+DAqyBnG,CAAwKA,sDAAxK;AAAA;;AACA6/R,4BAA4B,CAAC7zR,IAA7B,kBAtyBmGhM,+DAsyBnG;EAAA,MAA8G6/R,4BAA9G;EAAA;AAAA;;AACA;EAAA,mDAvyBmG7/R,+DAuyBnG,CAA4F6/R,4BAA5F,EAAsI,CAAC;IAC3Hx3b,IAAI,EAAE63J,oDADqH;IAE3H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFqH,CAAD,CAAtI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM2/R,+BAAN,CAAsC;EAClC/5b,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHiC;;AAKtCuwR,+BAA+B,CAACl4b,IAAhC;EAAA,iBAA6Hk4b,+BAA7H,EA3zBmG9/R,+DA2zBnG,CAA8KA,sDAA9K;AAAA;;AACA8/R,+BAA+B,CAAC9zR,IAAhC,kBA5zBmGhM,+DA4zBnG;EAAA,MAAiH8/R,+BAAjH;EAAA;AAAA;;AACA;EAAA,mDA7zBmG9/R,+DA6zBnG,CAA4F8/R,+BAA5F,EAAyI,CAAC;IAC9Hz3b,IAAI,EAAE63J,oDADwH;IAE9H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFwH,CAAD,CAAzI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM4/R,gBAAN,CAAuB;EACnBh6b,WAAW,CAACy/J,YAAD,EAAe;IACtB,KAAKA,YAAL,GAAoBA,YAApB;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAK7iH,QAAL,GAAgB,OAAhB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKu6Y,OAAL,GAAe,IAAf;IACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACQ,KAAKz7Q,SAAL,GAAiB,KAAjB;IACA;AACR;AACA;AACA;;IACQ,KAAKoJ,OAAL,GAAe,KAAf;IACA;AACR;AACA;AACA;;IACQ,KAAKwF,IAAL,GAAY,IAAIpwB,uDAAJ,EAAZ;IACA;AACR;AACA;;IACQ,KAAK+/R,KAAL,GAAa,IAAI//R,uDAAJ,EAAb;IACA;AACR;AACA;AACA;;IACQ,KAAKwwB,IAAL,GAAY,IAAIxwB,uDAAJ,EAAZ;IACA;AACR;AACA;;IACQ,KAAK8xG,MAAL,GAAc,IAAI9xG,uDAAJ,EAAd;IACA;AACR;AACA;;IACQ,KAAKu8I,MAAL,GAAc,MAAd;IACA;AACR;AACA;;IACQ,KAAK87E,OAAL,GAAe,MAAf;IACA,KAAKj5M,OAAL,GAAe,CAAf;IACA,KAAKjZ,IAAL,GAAY,IAAI3E,8CAAJ,EAAZ;IACA;AACR;AACA;;IACQ,KAAKw+R,aAAL,GAAqB,MAAM,IAA3B;;IACAr+R,0EAAe,CAACW,eAAD,CAAf;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACc,IAAN7gF,MAAM,CAACj4E,KAAD,EAAQ;IACd,KAAK41K,OAAL,GAAe51K,KAAf;EACH;;EACS,IAANi4E,MAAM,GAAG;IACT,MAAMw+W,aAAa,GAAG,EAAtB;IACA,OAAO,KAAKhD,OAAL,GACDgD,aAAa,GAAG,KAAK7gR,OADpB,GAED,KAAKA,OAFX;EAGH;EACD;AACJ;AACA;AACA;;;EACa,IAALzkI,KAAK,CAACnxC,KAAD,EAAQ;IACb,KAAK+yS,MAAL,GAAc,OAAO/yS,KAAP,KAAiB,QAAjB,GAA6B,GAAEA,KAAM,IAArC,GAA2CA,KAAzD;EACH;;EACQ,IAALmxC,KAAK,GAAG;IACR,OAAO,KAAK4hQ,MAAZ;EACH;EACD;AACJ;AACA;AACA;;;EACc,IAAN1hQ,MAAM,CAACrxC,KAAD,EAAQ;IACd,KAAK6uX,OAAL,GAAe,OAAO7uX,KAAP,KAAiB,QAAjB,GAA6B,GAAEA,KAAM,IAArC,GAA2CA,KAA1D;EACH;;EACS,IAANqxC,MAAM,GAAG;IACT,OAAO,KAAKw9U,OAAZ;EACH;EACD;AACJ;AACA;AACA;;;EACoB,IAAZqnE,YAAY,CAACl1U,EAAD,EAAK;IACjB,IAAI+1C,oDAAS,IAAI,OAAO/1C,EAAP,KAAc,UAA/B,EAA2C;MACvC,MAAM,IAAI3mF,KAAJ,CAAW,GAAE27Z,MAAM,CAACE,YAAa,IAAG37a,IAAI,CAACC,SAAL,CAAewmG,EAAf,CAAmB,GAAvD,CAAN;IACH;;IACD,KAAKw1U,aAAL,GAAqBx1U,EAArB;EACH;;EACe,IAAZk1U,YAAY,GAAG;IACf,OAAO,KAAKM,aAAZ;EACH;EACD;AACJ;AACA;;;EACgB,IAARn3V,QAAQ,GAAG;IACX,OAAO,CAAC,KAAK+hF,OAAb;EACH;EACD;AACJ;AACA;;;EAC0B,IAAlBs1Q,kBAAkB,GAAG;IACrB,OAAO,CAAC,KAAKt1Q,OAAb;EACH;;EACDt5K,QAAQ,GAAG;IACP,KAAK60J,IAAL,CAAUrvF,GAAV,CAAc,KAAKyuF,YAAL,CAAkBe,OAAlB,CAA0Bt8J,SAA1B,CAAoC,CAAC;MAAEq8J;IAAF,CAAD,KAAa;MAC3D,KAAKD,SAAL,GAAiBC,GAAG,GAAG,KAAH,GAAW,KAA/B;IACH,CAFa,CAAd;EAGH;;EACD0D,WAAW,GAAG;IACV,KAAK5D,IAAL,CAAUgE,WAAV;EACH;EACD;AACJ;AACA;;;EACIg2R,kBAAkB,GAAG;IACjB,QAAQ,KAAKz9Y,QAAb;MACI,KAAK,KAAL;QAAY,OAAO;UAAE,eAAe;QAAjB,CAAP;;MACZ,KAAK,QAAL;QAAe,OAAO;UAAE,eAAe;QAAjB,CAAP;;MACf,KAAK,MAAL;QAAa,OAAO;UAAE,eAAe;QAAjB,CAAP;;MACb,KAAK,OAAL;QAAc,OAAO;UAAE,eAAe;QAAjB,CAAP;;MACd;QAAS,OAAO;UAAE,eAAe;QAAjB,CAAP;IALb;EAOH;;AAnJkB;;AAqJvBo9Y,gBAAgB,CAACn4b,IAAjB;EAAA,iBAA8Gm4b,gBAA9G,EAx+BmG//R,+DAw+BnG,CAAgJqB,6EAAhJ;AAAA;;AACA0+R,gBAAgB,CAACrub,IAAjB,kBAz+BmGsuJ,+DAy+BnG;EAAA,MAAkG+/R,gBAAlG;EAAA;EAAA;IAAA;MAz+BmG//R,4DAy+BnG,WAM0E4/R,6BAN1E;MAz+BmG5/R,4DAy+BnG,WAMsL6/R,4BANtL;MAz+BmG7/R,4DAy+BnG,WAMoS8/R,+BANpS;IAAA;;IAAA;MAAA;;MAz+BmG9/R,4DAy+BnG,MAz+BmGA,yDAy+BnG;MAz+BmGA,4DAy+BnG,MAz+BmGA,yDAy+BnG;MAz+BmGA,4DAy+BnG,MAz+BmGA,yDAy+BnG;IAAA;EAAA;EAAA;EAAA;IAAA;MAz+BmGA,yDAy+BnG;MAz+BmGA,yDAy+BnG;MAz+BmGA,yDAy+BnG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA,WAz+BmGA,gEAy+BnG,CAAioB,CACznBsB,6EADynB,EAEznB;IACI3uJ,OAAO,EAAE4uJ,qEADb;IAEI3uJ,QAAQ,EAAE;EAFd,CAFynB,CAAjoB;EAAA;EAAA;EAAA;EAAA;IAAA;MAz+BmGotJ,wDAg/B/F,oDAPJ;IAAA;;IAAA;MAz+BmGA,wDAg/BzF,qBAPV;IAAA;EAAA;EAAA,eAqC4C+B,iDArC5C,EAqC6HA,oDArC7H,EAqC+LA,oDArC/L,EAqC0QA,6DArC1Q;EAAA;AAAA;;AAsCA;EAAA,mDA/gCmG/B,+DA+gCnG,CAA4F+/R,gBAA5F,EAA0H,CAAC;IAC/G13b,IAAI,EAAExE,oDADyG;IAE/G2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,eADX;MAECM,SAAS,EAAE,CACP4uJ,6EADO,EAEP;QACI3uJ,OAAO,EAAE4uJ,qEADb;QAEI3uJ,QAAQ,EAAE;MAFd,CAFO,CAFZ;MASCb,QAAQ,EAAG;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;IAxCmB,CAAD;EAFyG,CAAD,CAA1H,EA4C4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CA5CtF,EA4CwG;IAAE3+G,QAAQ,EAAE,CAAC;MACrGt6C,IAAI,EAAE+3J,gDAAKA;IAD0F,CAAD,CAAZ;IAExF1+E,MAAM,EAAE,CAAC;MACTr5E,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CAFgF;IAIxFxlH,KAAK,EAAE,CAAC;MACRvyC,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAJiF;IAMxFtlH,MAAM,EAAE,CAAC;MACTzyC,IAAI,EAAE+3J,gDAAKA;IADF,CAAD,CANgF;IAQxFiG,SAAS,EAAE,CAAC;MACZh+J,IAAI,EAAEi4J,sDADM;MAEZ93J,IAAI,EAAE,CAAC,UAAD;IAFM,CAAD,CAR6E;IAWxF8sC,KAAK,EAAE,CAAC;MACRjtC,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAXiF;IAaxF2jO,QAAQ,EAAE,CAAC;MACX17X,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAb8E;IAexFjqJ,IAAI,EAAE,CAAC;MACP9N,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAfkF;IAiBxF88R,OAAO,EAAE,CAAC;MACV70b,IAAI,EAAE+3J,gDAAKA;IADD,CAAD,CAjB+E;IAmBxFqhB,SAAS,EAAE,CAAC;MACZp5K,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAnB6E;IAqBxFu/R,YAAY,EAAE,CAAC;MACft3b,IAAI,EAAE+3J,gDAAKA;IADI,CAAD,CArB0E;IAuBxFt3D,QAAQ,EAAE,CAAC;MACXzgG,IAAI,EAAEi4J,sDADK;MAEX93J,IAAI,EAAE,CAAC,gBAAD;IAFK,CAAD,CAvB8E;IA0BxF23b,kBAAkB,EAAE,CAAC;MACrB93b,IAAI,EAAEi4J,sDADe;MAErB93J,IAAI,EAAE,CAAC,kBAAD;IAFe,CAAD,CA1BoE;IA6BxF6nL,IAAI,EAAE,CAAC;MACPhoL,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CA7BkF;IA+BxF2/R,KAAK,EAAE,CAAC;MACR33b,IAAI,EAAEg4J,iDAAMA;IADJ,CAAD,CA/BiF;IAiCxFowB,IAAI,EAAE,CAAC;MACPpoL,IAAI,EAAEg4J,iDAAMA;IADL,CAAD,CAjCkF;IAmCxF0xG,MAAM,EAAE,CAAC;MACT1pQ,IAAI,EAAEg4J,iDAAMA;IADH,CAAD,CAnCgF;IAqCxFunN,aAAa,EAAE,CAAC;MAChBv/W,IAAI,EAAEw4J,uDADU;MAEhBr4J,IAAI,EAAE,CAACo3b,6BAAD,EAAgC;QAAErnR,MAAM,EAAE;MAAV,CAAhC;IAFU,CAAD,CArCyE;IAwCxF8nR,YAAY,EAAE,CAAC;MACfh4b,IAAI,EAAEw4J,uDADS;MAEfr4J,IAAI,EAAE,CAACq3b,4BAAD,EAA+B;QAAEtnR,MAAM,EAAE;MAAV,CAA/B;IAFS,CAAD,CAxC0E;IA2CxFitE,eAAe,EAAE,CAAC;MAClBn9O,IAAI,EAAEw4J,uDADY;MAElBr4J,IAAI,EAAE,CAACs3b,+BAAD,EAAkC;QAAEvnR,MAAM,EAAE;MAAV,CAAlC;IAFY,CAAD,CA3CuE;IA8CxFikI,MAAM,EAAE,CAAC;MACTn0S,IAAI,EAAEi4J,sDADG;MAET93J,IAAI,EAAE,CAAC,aAAD;IAFG,CAAD,CA9CgF;IAiDxF8vX,OAAO,EAAE,CAAC;MACVjwX,IAAI,EAAEi4J,sDADI;MAEV93J,IAAI,EAAE,CAAC,cAAD;IAFI,CAAD;EAjD+E,CA5CxG;AAAA;AAkGA;AACA;AACA;AACA;;;AACA,MAAM83b,gBAAN,SAA+Bp0R,6EAA/B,CAAgD;EAC5C;AACJ;AACA;AACA;AACA;EACInmK,WAAW,CAACiyK,MAAD,EAAS;IAChB;IACA,KAAKA,MAAL,GAAcA,MAAd;EACH;;AAT2C;AAWhD;AACA;AACA;AACA;;;AACA,MAAMuoR,gBAAN,SAA+Br0R,6EAA/B,CAAgD;EAC5C;AACJ;AACA;AACA;AACA;AACA;EACInmK,WAAW,CAACiyK,MAAD,EAAS0nR,OAAT,EAAkB;IACzB;IACA,KAAK1nR,MAAL,GAAcA,MAAd;IACA,KAAK0nR,OAAL,GAAeA,OAAf;EACH;;AAX2C;AAahD;AACA;AACA;;;AACA,MAAMc,iBAAN,CAAwB;EACpB;AACJ;AACA;AACA;AACA;AACA;EACIz6b,WAAW,CAACiyK,MAAD,EAAS0nR,OAAT,EAAkB;IACzB,KAAK1nR,MAAL,GAAcA,MAAd;IACA,KAAK0nR,OAAL,GAAeA,OAAf;EACH;;AAVmB;AAYxB;AACA;AACA;;;AACA,MAAMe,kBAAN,CAAyB;EACrB;AACJ;AACA;AACA;AACA;EACI16b,WAAW,CAACiyK,MAAD,EAAS;IAChB,KAAKA,MAAL,GAAcA,MAAd;EACH;;AARoB;;AAWzB,MAAMmmR,gBAAgB,GAAG,CAAC,OAAD,EAAU,OAAV,EAAmB,MAAnB,EAA2B,OAA3B,CAAzB;AACA;AACA;AACA;;AACA,MAAMuC,qBAAN,CAA4B;EACxB36b,WAAW,CAAC0/J,MAAD,EAAS8P,YAAT,EAAuBjQ,QAAvB,EAAiC;IACxC,KAAKG,MAAL,GAAcA,MAAd;IACA,KAAK8P,YAAL,GAAoBA,YAApB;IACA,KAAKjQ,QAAL,GAAgBA,QAAhB;IACA,KAAKc,IAAL,GAAY,IAAI3E,8CAAJ,EAAZ;IACA,KAAKk/R,OAAL,GAAe,OAAf;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACe,IAAPjB,OAAO,CAACj2b,KAAD,EAAQ;IACf,IAAIA,KAAK,YAAYs2b,gBAAjB,IAAqC,OAAOt2b,KAAP,KAAkB,UAA3D,EAAsE;MAClE,KAAKm3b,QAAL,GAAgBn3b,KAAhB;IACH,CAFD,MAGK;MACD,IAAI+2J,oDAAJ,EAAe;QACX,MAAM,IAAI18H,KAAJ,CAAU27Z,MAAM,CAACC,OAAjB,CAAN;MACH;IACJ;EACJ;;EACU,IAAPA,OAAO,GAAG;IACV,OAAO,KAAKkB,QAAZ;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACc,IAAN7lD,MAAM,CAACtxY,KAAD,EAAQ;IACd,IAAI+2J,oDAAS,IAAI,CAACs8R,YAAY,CAACqB,gBAAD,EAAmB10b,KAAnB,CAA9B,EAAyD;MACrD,MAAM,IAAIq6B,KAAJ,CAAU27Z,MAAM,CAAC1kD,MAAjB,CAAN;IACH;;IACD,KAAK4lD,OAAL,GAAel3b,KAAf;EACH;;EACS,IAANsxY,MAAM,GAAG;IACT,OAAO,KAAK4lD,OAAZ;EACH;;EACD/2R,eAAe,GAAG;IACd,IAAI,CAAC5I,oFAAmB,EAAxB,EAA4B;MACxB;IACH;;IACD,KAAKyE,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;MAChC,QAAQ,KAAK4xO,MAAb;QACI,KAAK,OAAL;UACI,KAAK8lD,iBAAL,CAAuB,CAAC;YAChBj7b,IAAI,EAAE,YADU;YACI20H,OAAO,EAAE,KAAKumU;UADlB,CAAD,EAEhB;YACCl7b,IAAI,EAAE,YADP;YACqB20H,OAAO,EAAE,KAAKwmU;UADnC,CAFgB,CAAvB;UAKA;;QACJ,KAAK,OAAL;UACI,KAAKF,iBAAL,CAAuB,CAAC;YAChBj7b,IAAI,EAAE,OADU;YACD20H,OAAO,EAAE,KAAKkmD;UADb,CAAD,EAEhB;YACC76K,IAAI,EAAE,MADP;YACe20H,OAAO,EAAE,KAAKmmD;UAD7B,CAFgB,CAAvB;UAKA;;QACJ,KAAK,OAAL;UACI,KAAKs+Q,cAAL;UACA;;QACJ;UACI;MAnBR;IAqBH,CAtBD;EAuBH;;EACDh1R,WAAW,GAAG;IACV,KAAKsX,UAAL;;IACA,IAAI,KAAK0/Q,wBAAT,EAAmC;MAC/B,KAAKA,wBAAL;IACH;;IACD,IAAI,KAAKC,uBAAT,EAAkC;MAC9B,KAAKA,uBAAL;IACH;;IACD,IAAI,KAAKC,oBAAT,EAA+B;MAC3B,KAAKA,oBAAL;IACH;;IACD,IAAI,KAAKC,eAAT,EAA0B;MACtB,KAAKA,eAAL,CAAqB/2R,WAArB;IACH;;IACD,IAAI,KAAKg3R,QAAT,EAAmB;MACf,KAAKA,QAAL,CAAch3R,WAAd;IACH;;IACD,IAAI,KAAKhE,IAAT,EAAe;MACX,KAAKA,IAAL,CAAUgE,WAAV;IACH;;IACD,IAAI,KAAKi3R,aAAT,EAAwB;MACpB,KAAKA,aAAL,CAAmBj3R,WAAnB;IACH;;IACD,IAAI,KAAKk3R,cAAT,EAAyB;MACrB,KAAKA,cAAL,CAAoBl3R,WAApB;IACH;EACJ;EACD;AACJ;AACA;;;EACIqmB,IAAI,GAAG;IACH,KAAKnP,UAAL;EACH;EACD;AACJ;AACA;;;EACIA,UAAU,GAAG;IACT,IAAI,KAAKpK,QAAT,EAAmB;MACf,KAAKA,QAAL,CAAcvwJ,KAAd;MACA,KAAKuwJ,QAAL,GAAgB,IAAhB;;MACA,IAAI,KAAKqqR,4BAAT,EAAuC;QACnC,KAAKA,4BAAL;MACH;;MACD,IAAI,KAAKC,2BAAT,EAAsC;QAClC,KAAKA,2BAAL;MACH;;MACD,IAAI,KAAKC,4BAAT,EAAuC;QACnC,KAAKA,4BAAL;MACH;IACJ;EACJ;EACD;AACJ;AACA;;;EACI7oZ,SAAS,CAACo/H,MAAD,EAAS;IACd,MAAM0pR,OAAO,GAAG1pR,MAAM,YAAYrX,qDAAlB,GAA+BqX,MAAM,CAACxR,aAAtC,GAAsDwR,MAAtE;;IACA,MAAM2pR,WAAW,GAAG,KAAKjC,OAAL,YAAwBK,gBAAxB,GAA2C,KAAKL,OAAhD,GAA0D,KAAKA,OAAL,CAAagC,OAAb,CAA9E;IACA,MAAMpC,aAAa,GAAG9nR,KAAK,CAACmqR,WAAW,CAACh/Y,QAAb,EAAuBg/Y,WAAW,CAACjgX,MAAnC,CAA3B;IACA,MAAM61F,WAAW,GAAG+nR,aAAa,CAAC/nR,WAAlC;IACA,MAAMF,UAAU,GAAGioR,aAAa,CAACjoR,UAAjC;IACA,MAAMolR,WAAW,GAAG6C,aAAa,CAAC7C,WAAlC;IACA,MAAMmF,UAAU,GAAGD,WAAW,CAAClgR,SAA/B;IACA,KAAKvK,QAAL,GAAgB,KAAK3B,YAAL,CAAkB/9I,IAAlB,CAAuB;MACnCwgJ,MAAM,EAAE;QAAExR,aAAa,EAAEk7R;MAAjB,CAD2B;MAEnCp/R,OAAO,EAAEs/R,UAF0B;MAGnCrpU,OAAO,EAAEwnU,gBAH0B;MAInC1oR,UAJmC;MAKnCE,WALmC;MAMnC+V,MAAM,EAAEmvQ,WAN2B;MAOnCzpR,UAAU,EAAE,qBAPuB;MAQnCud,SAAS,EAAE;QAAE9Y,UAAU,EAAE,KAAd;QAAqBC,QAAQ,EAAE;MAA/B;IARwB,CAAvB,CAAhB;IAUA,KAAKsmO,aAAL,CAAmB,KAAK9mO,QAAL,CAAc3+C,OAAjC,EAA0CopU,WAA1C,EAAuD3pR,MAAvD;IACA,KAAK6pR,YAAL;IACA,KAAKC,0BAAL,CAAgCH,WAAhC,EAA6CD,OAA7C;EACH;EACD;AACJ;AACA;;;EACIK,WAAW,CAACC,aAAD,EAAgB3xQ,IAAhB,EAAsB;IAC7B,MAAMsxQ,WAAW,GAAG,KAAKjC,OAAL,YAAwBK,gBAAxB,GAA2C,KAAKL,OAAhD,GAA0D,KAAKA,OAAL,CAAasC,aAAb,CAA9E;IACA,IAAI3zR,SAAJ;IACAA,SAAS,GAAG,KAAK4zR,gBAAL,CAAsBN,WAAtB,EAAmCtzR,SAAnC,EAA8CgiB,IAA9C,EAAoD2xQ,aAApD,CAAZ;IACA,OAAO3zR,SAAS,CAACjC,kBAAV,EAAP;EACH;EACD;AACJ;AACA;;;EACIy1R,YAAY,GAAG;IACX,IAAI,KAAK9mD,MAAL,KAAgB,OAApB,EAA6B;MACzB,KAAKt1O,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;QAChC,MAAM7yH,KAAK,GAAG,KAAK4gI,QAAL,CAAcI,YAA5B;QACA,KAAKkqR,2BAAL,GAAmC,KAAKl8R,QAAL,CAAc8D,MAAd,CAAqB9yH,KAArB,EAA4B,YAA5B,EAA0ClgC,CAAC,IAAI;UAC9E,KAAKqvJ,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAK8rb,eAAL,CAAqBC,gBAArB,CAAsC,IAAtC,CAArB;QACH,CAFkC,CAAnC;QAGA,KAAKZ,4BAAL,GAAoC,KAAKj8R,QAAL,CAAc8D,MAAd,CAAqB9yH,KAArB,EAA4B,YAA5B,EAA0ClgC,CAAC,IAAI;UAC/E,KAAKqvJ,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAK8rb,eAAL,CAAqBC,gBAArB,CAAsC,KAAtC,CAArB;QACH,CAFmC,CAApC;MAGH,CARD;IASH;;IACD,IAAI,KAAKpnD,MAAL,KAAgB,OAApB,EAA6B;MACzB,KAAKt1O,MAAL,CAAY0D,iBAAZ,CAA8B,MAAM;QAChC,MAAM7yH,KAAK,GAAG,KAAK4gI,QAAL,CAAcI,YAA5B;QACA,KAAKmqR,4BAAL,GAAoC,KAAKn8R,QAAL,CAAc8D,MAAd,CAAqB9yH,KAArB,EAA4B,UAA5B,EAAyCxgC,CAAD,IAAO;UAC/E,MAAMssb,eAAe,GAAGp/R,wEAAO,CAACltJ,CAAC,CAAC43J,aAAH,EAAmBpK,IAAD,IAAUA,IAAI,CAACo3C,SAAL,IAAkBp3C,IAAI,CAACo3C,SAAL,CAAejmC,QAAf,CAAwB,WAAxB,CAA9C,CAA/B;;UACA,IAAI,CAAC2tR,eAAL,EAAsB;YAClB,KAAK38R,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAK8rb,eAAL,CAAqBG,sBAArB,CAA4C,KAA5C,CAArB;UACH;QACJ,CALmC,CAApC;MAMH,CARD;IASH;EACJ;;EACDrkD,aAAa,CAACqhD,gBAAD,EAAmBK,OAAnB,EAA4B1nR,MAA5B,EAAoC;IAC7C,MAAMz/C,OAAO,GAAG8mU,gBAAgB,CAACr5b,QAAjC;;IACA,MAAM07b,OAAO,GAAG1pR,MAAM,YAAYrX,qDAAlB,GAA+BqX,MAAM,CAACxR,aAAtC,GAAsDwR,MAAtE;;IACAz/C,OAAO,CAACsyD,OAAR,GAAkB,IAAlB;IACAtyD,OAAO,CAACy/C,MAAR,GAAiB0pR,OAAjB;IACAnpU,OAAO,CAAC51E,QAAR,GAAmB+8Y,OAAO,CAAC/8Y,QAA3B;IACA41E,OAAO,CAAC72C,MAAR,GAAiBg+W,OAAO,CAACh+W,MAAzB;IACA62C,OAAO,CAAC39E,KAAR,GAAgB8kZ,OAAO,CAAC9kZ,KAAxB;IACA29E,OAAO,CAACz9E,MAAR,GAAiB4kZ,OAAO,CAAC5kZ,MAAzB;IACAy9E,OAAO,CAACjjF,KAAR,GAAgBoqZ,OAAO,CAACpqZ,KAAxB;IACAijF,OAAO,CAACpiH,IAAR,GAAeupb,OAAO,CAACvpb,IAAvB;IACAoiH,OAAO,CAAC2kU,OAAR,GAAkBwC,OAAO,CAACxC,OAA1B;IACA3kU,OAAO,CAACkpD,SAAR,GAAoBi+Q,OAAO,CAACj+Q,SAA5B;IACAlpD,OAAO,CAAC+pU,WAAR,GAAsB5C,OAAO,CAACC,YAAR,CAAqB+B,OAArB,CAAtB;IACAnpU,OAAO,CAACqvP,aAAR,GAAwB83E,OAAO,CAAC93E,aAAhC;IACArvP,OAAO,CAAC8nU,YAAR,GAAuBX,OAAO,CAACW,YAA/B;IACA9nU,OAAO,CAACitH,eAAR,GAA0Bk6M,OAAO,CAACl6M,eAAlC;IACA,KAAKtuE,QAAL,CAAc3+C,OAAd,CAAsB04D,iBAAtB,CAAwClT,aAAxC;EACH;EACD;AACJ;AACA;;;EACIkkR,gBAAgB,CAACN,WAAD,EAActzR,SAAd,EAAyBgiB,IAAzB,EAA+B2xQ,aAA/B,EAA8C;IAC1D,IAAI3xQ,IAAJ,EAAU;MACNhiB,SAAS,GAAG,IAAIiyR,gBAAJ,CAAqB0B,aAArB,CAAZ;;MACA,IAAI,KAAKO,eAAL,CAAqB,CAAC,CAAC,KAAKrrR,QAA5B,EAAsC,MAAtC,EAA8CyqR,WAA9C,CAAJ,EAAgE;QAC5D,KAAKl8R,MAAL,CAAYt+C,GAAZ,CAAgB,MAAMw6U,WAAW,CAACtxQ,IAAZ,CAAiBrjC,IAAjB,CAAsBqhB,SAAtB,CAAtB;MACH;IACJ,CALD,MAMK;MACDA,SAAS,GAAG,IAAIkyR,gBAAJ,CAAqByB,aAArB,EAAoC,KAAK9qR,QAAzC,CAAZ;;MACA,IAAI,KAAKqrR,eAAL,CAAqB,CAAC,CAAC,KAAKrrR,QAA5B,EAAsC,MAAtC,EAA8CyqR,WAA9C,CAAJ,EAAgE;QAC5D,KAAKl8R,MAAL,CAAYt+C,GAAZ,CAAgB,MAAMw6U,WAAW,CAAClxQ,IAAZ,CAAiBzjC,IAAjB,CAAsBqhB,SAAtB,CAAtB;MACH;IACJ;;IACD,OAAOA,SAAP;EACH;;EACDyzR,0BAA0B,CAACH,WAAD,EAAcD,OAAd,EAAuB;IAC7C,IAAI,KAAKc,0BAAL,CAAgC,OAAhC,EAAyCb,WAAzC,CAAJ,EAA2D;MACvD,KAAKzqR,QAAL,CAAciB,SAAd,CAAwBluK,SAAxB,CAAkC,MAAM;QACpC,MAAMokK,SAAS,GAAG,IAAImyR,iBAAJ,CAAsBkB,OAAtB,EAA+B,KAAKxqR,QAApC,CAAlB;QACAyqR,WAAW,CAAC3B,KAAZ,CAAkBhzS,IAAlB,CAAuBqhB,SAAvB;MACH,CAHD;IAIH;;IACD,IAAI,KAAKm0R,0BAAL,CAAgC,QAAhC,EAA0Cb,WAA1C,CAAJ,EAA4D;MACxD,KAAKzqR,QAAL,CAAcusF,UAAd,CAAyBx5P,SAAzB,CAAmC,MAAM;QACrC,KAAKw7J,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI;UACjB,MAAMi4J,SAAS,GAAG,IAAIoyR,kBAAJ,CAAuBiB,OAAvB,CAAlB;UACAC,WAAW,CAAC5vL,MAAZ,CAAmB/kH,IAAnB,CAAwBqhB,SAAxB;QACH,CAHD;MAIH,CALD;IAMH;EACJ;;EACDk0R,eAAe,CAACt6N,QAAD,EAAW5hN,KAAX,EAAkBs7a,WAAlB,EAA+B;IAC1C,IAAKt7a,KAAK,KAAK,MAAV,IAAoB,CAAC4hN,QAArB,IAAiC9mE,6EAAY,CAACwgS,WAAW,CAACt7a,KAAD,CAAZ,CAA9C,IACIA,KAAK,KAAK,MAAV,IAAoB4hN,QAApB,IAAgC9mE,6EAAY,CAACwgS,WAAW,CAACt7a,KAAD,CAAZ,CADpD,EAC2E;MACvE,OAAO,IAAP;IACH;;IACD,OAAO,KAAP;EACH;;EACDm8a,0BAA0B,CAACn8a,KAAD,EAAQs7a,WAAR,EAAqB;IAC3C,IAAKxgS,6EAAY,CAACwgS,WAAW,CAACt7a,KAAD,CAAZ,CAAZ,IAAoC,CAAC,KAAKg7a,aAA3C,IACIlgS,6EAAY,CAACwgS,WAAW,CAACt7a,KAAD,CAAZ,CAAZ,IAAoC,CAAC,KAAKi7a,cADlD,EACmE;MAC/D,OAAO,IAAP;IACH;;IACD,OAAO,KAAP;EACH;;AA7PuB;;AA+P5BZ,qBAAqB,CAAC94b,IAAtB;EAAA,iBAAmH84b,qBAAnH,EAj7CmG1gS,+DAi7CnG,CAA0JA,iDAA1J,GAj7CmGA,+DAi7CnG,CAAgLsyC,uEAAhL,GAj7CmGtyC,+DAi7CnG,CAA8MA,oDAA9M;AAAA;;AACA0gS,qBAAqB,CAAC10R,IAAtB,kBAl7CmGhM,+DAk7CnG;EAAA,MAAuG0gS,qBAAvG;EAAA;IAAA;IAAA;EAAA;AAAA;;AACA;EAAA,mDAn7CmG1gS,+DAm7CnG,CAA4F0gS,qBAA5F,EAA+H,CAAC;IACpHr4b,IAAI,EAAE63J,oDAD8G;IAEpH13J,IAAI,EAAE,CAAC,EAAD;EAF8G,CAAD,CAA/H,EAG4B,YAAY;IAAE,OAAO,CAAC;MAAEH,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAD,EAAsB;MAAE1jK,IAAI,EAAEiqM,uEAAiBl6B;IAAzB,CAAtB,EAAmD;MAAE/vK,IAAI,EAAE23J,oDAAY8L;IAApB,CAAnD,CAAP;EAAoF,CAH9H,EAGgJ;IAAE4zR,OAAO,EAAE,CAAC;MAC5Ir3b,IAAI,EAAE+3J,gDAAKA;IADiI,CAAD,CAAX;IAEhI26O,MAAM,EAAE,CAAC;MACT1yY,IAAI,EAAE+3J,gDAAKA;IADF,CAAD;EAFwH,CAHhJ;AAAA;AASA;AACA;AACA;;;AACA,MAAMqiS,cAAN,CAAqB;EACjB18b,WAAW,CAAC0/J,MAAD,EAAS;IAChB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAKi9R,iBAAL,GAAyB,IAAI79b,kDAAJ,CAAoB,IAApB,CAAzB;IACA,KAAK89b,kBAAL,GAA0B,IAAI99b,kDAAJ,CAAoB,IAApB,CAA1B;IACA,KAAK+9b,mBAAL,GAA2B,IAAI/9b,kDAAJ,CAAoB,IAApB,CAA3B;IACA,KAAKg+b,YAAL,GAAoB,IAAIj+b,0CAAJ,EAApB;IACA,KAAKwhK,IAAL,GAAY,IAAI3E,8CAAJ,EAAZ;IACA,KAAKqhS,OAAL;EACH;;EACD94R,WAAW,GAAG;IACV,KAAK5D,IAAL,CAAUgE,WAAV;EACH;;EACmB,IAAhB24R,gBAAgB,GAAG;IACnB,OAAO,KAAKL,iBAAL,CAAuB15b,YAAvB,EAAP;EACH;;EACDm5b,gBAAgB,CAAC10O,SAAD,EAAY;IACxB,KAAKhoD,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAKssb,iBAAL,CAAuBp5b,IAAvB,CAA4BmkN,SAA5B,CAArB;EACH;;EACkB,IAAfu1O,eAAe,GAAG;IAClB,OAAO,KAAKL,kBAAL,CAAwB35b,YAAxB,EAAP;EACH;;EACDi6b,eAAe,CAACx1O,SAAD,EAAYz1C,MAAZ,EAAoB;IAC/B,KAAKkrR,SAAL,GAAiB,KAAKC,YAAL,KAAsBnrR,MAAvC;IACA,KAAKorR,aAAL,GAAqBprR,MAArB;;IACA,IAAIy1C,SAAJ,EAAe;MACX,KAAK01O,YAAL,GAAoBnrR,MAApB;IACH;;IACD,KAAKvS,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAKusb,kBAAL,CAAwBr5b,IAAxB,CAA6BmkN,SAA7B,CAArB;EACH;;EACuB,IAApB41O,oBAAoB,GAAG;IACvB,OAAO,KAAKT,mBAAL,CAAyB55b,YAAzB,EAAP;EACH;;EACDq5b,sBAAsB,CAACn6R,SAAD,EAAY;IAC9B,KAAKzC,MAAL,CAAYt+C,GAAZ,CAAgB/wG,CAAC,IAAI,KAAKwsb,mBAAL,CAAyBt5b,IAAzB,CAA8B4+J,SAA9B,CAArB;;IACA,KAAK06R,mBAAL,CAAyBt5b,IAAzB,CAA8B,IAA9B;EACH;;EACc,IAAXg6b,WAAW,GAAG;IACd,OAAO,KAAKT,YAAL,CAAkB75b,YAAlB,EAAP;EACH;;EACD85b,OAAO,GAAG;IACN,KAAK18R,IAAL,CAAUrvF,GAAV,CAAcguG,oDAAa,CAAC,KAAKg+Q,gBAAN,EAAwB,KAAKC,eAA7B,CAAb,CAA2Dx3b,IAA3D,EACd;IACA;IACA;IACAw5K,0DAAS,CAAC,EAAD,CAJK,EAIC/6K,SAJD,CAIWmuE,GAAG,IAAI;MAC5B,MAAM,CAAC2qX,gBAAD,EAAmBC,eAAnB,IAAsC5qX,GAA5C;;MACA,KAAKyqX,YAAL,CAAkBv5b,IAAlB,CAAuB,CAACy5b,gBAAD,EAAmBC,eAAnB,EAAoC,KAAKE,SAAzC,EAAoD,KAAKE,aAAzD,CAAvB;IACH,CAPa,CAAd;EAQH;;AAjDgB;;AAmDrBX,cAAc,CAAC76b,IAAf;EAAA,iBAA4G66b,cAA5G,EAl/CmGziS,sDAk/CnG,CAA4IA,iDAA5I;AAAA;;AACAyiS,cAAc,CAACz6b,KAAf,kBAn/CmGg4J,gEAm/CnG;EAAA,OAAgHyiS,cAAhH;EAAA,SAAgHA,cAAhH;AAAA;;AACA;EAAA,mDAp/CmGziS,+DAo/CnG,CAA4FyiS,cAA5F,EAAwH,CAAC;IAC7Gp6b,IAAI,EAAE3E,qDAAUA;EAD6F,CAAD,CAAxH,EAE4B,YAAY;IAAE,OAAO,CAAC;MAAE2E,IAAI,EAAE23J,iDAAS+L;IAAjB,CAAD,CAAP;EAA+B,CAFzE;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMw3R,yBAAN,SAAwC7C,qBAAxC,CAA8D;EAC1D36b,WAAW,CAACy9b,SAAD,EAAY/9R,MAAZ,EAAoB8P,YAApB,EAAkCjQ,QAAlC,EAA4Cm+R,cAA5C,EAA4D;IACnE,MAAMh+R,MAAN,EAAc8P,YAAd,EAA4BjQ,QAA5B;IACA,KAAKk+R,SAAL,GAAiBA,SAAjB;IACA,KAAK/9R,MAAL,GAAcA,MAAd;IACA,KAAK8P,YAAL,GAAoBA,YAApB;IACA,KAAKjQ,QAAL,GAAgBA,QAAhB;IACA,KAAKm+R,cAAL,GAAsBA,cAAtB;;IACA,KAAK3C,iBAAL,GAA0B9oR,MAAD,IAAY;MACjC,KAAK0rR,iBAAL,CAAuB1rR,MAAvB,EAA+B,IAA/B;IACH,CAFD;;IAGA,KAAK+oR,iBAAL,GAA0Bv4b,IAAD,IAAU;MAC/B,MAAMwvK,MAAM,GAAGxvK,IAAI,CAACwvK,MAApB;;MACA,IAAI,KAAK+pR,WAAL,CAAiB/pR,MAAjB,EAAyB,KAAzB,CAAJ,EAAqC;QACjC;MACH;;MACD,IAAI,CAAC,KAAKopR,QAAV,EAAoB;QAChB,KAAKA,QAAL,GAAgB,KAAKqC,cAAL,CAAoBH,WAApB,CAAgCr5b,SAAhC,CAA2CmuE,GAAD,IAAS;UAC/D,MAAM,CAAC2qX,gBAAD,GAAqBY,cAArB,EAAqCP,aAArC,IAAsDhrX,GAA5D;;UACA,IAAI,CAAC2qX,gBAAD,IAAqB,CAACY,cAA1B,EAA0C;YACtC,KAAKlzQ,IAAL;;YACA,IAAI,CAACkzQ,cAAD,IAAmBP,aAAvB,EAAsC;cAClC,KAAK/yQ,IAAL,CAAU+yQ,aAAV;YACH;UACJ;QACJ,CARe,CAAhB;MASH;IACJ,CAhBD;;IAiBA,KAAK3iR,YAAL,GAAqBzI,MAAD,IAAY;MAC5B,KAAK0rR,iBAAL,CAAuB1rR,MAAvB,EAA+B,IAA/B;IACH,CAFD;;IAGA,KAAK0I,WAAL,GAAoBl4K,IAAD,IAAU;MACzB,MAAMwvK,MAAM,GAAGxvK,IAAI,CAACwvK,MAApB;MACA,MAAM3xJ,KAAK,GAAG7d,IAAI,CAAC68K,QAAnB;;MACA,IAAI,KAAK08Q,WAAL,CAAiB/pR,MAAjB,EAAyB,KAAzB,CAAJ,EAAqC;QACjC;MACH,CALwB,CAMzB;;;MACA,MAAM4rR,aAAa,GAAG,CAAC,CAAC5gS,wEAAO,CAAC38I,KAAK,CAACqnJ,aAAP,EAAuBpK,IAAD,IAAUA,IAAI,CAACo3C,SAAL,IAAkBp3C,IAAI,CAACo3C,SAAL,CAAejmC,QAAf,CAAwB,WAAxB,CAAlD,CAA/B;;MACA,IAAI,CAACmvR,aAAL,EAAoB;QAChB,KAAKnzQ,IAAL;MACH;;MACD,IAAI,CAAC,KAAK0wQ,eAAV,EAA2B;QACvB;QACA,KAAKA,eAAL,GAAuB,KAAKsC,cAAL,CAAoBJ,oBAApB,CAAyC73b,IAAzC,CAA8CsV,sDAAM,CAAC/J,CAAC,IAAIA,CAAC,KAAK,IAAZ,CAApD,EAAuE9M,SAAvE,CAAkFmuE,GAAD,IAAS;UAC7G,IAAI,CAACA,GAAD,IAAQ,CAACwrX,aAAb,EAA4B;YACxB,KAAKnzQ,IAAL;UACH;QACJ,CAJsB,CAAvB;MAKH;IACJ,CAnBD;;IAoBA,KAAKyxQ,eAAL,GAAuB,KAAKuB,cAA5B;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIpzQ,IAAI,CAACrY,MAAD,EAAS;IACT,IAAI,KAAKd,QAAT,EAAmB;MACf;IACH;;IACD,KAAKzR,MAAL,CAAYt+C,GAAZ,CAAgB,MAAM;MAClB,KAAKvuE,SAAL,CAAeo/H,MAAf;IACH,CAFD;IAGA,KAAKd,QAAL,CAAcgB,wBAAd,CACK1sK,IADL,CACU02J,oDAAI,CAAC,CAAD,CADd,EAEKj4J,SAFL,CAEe,MAAM,KAAKwmL,IAAL,EAFrB;EAGH;EACD;AACJ;AACA;AACA;AACA;;;EACIxa,MAAM,CAAC+B,MAAD,EAAS;IACX,MAAM+mR,cAAc,GAAG,KAAK7nR,QAAL,IAAiB,KAAKA,QAAL,CAAc3+C,OAAd,CAAsBvyH,QAAtB,CAA+BgyK,MAAvE;;IACA,IAAI,KAAKd,QAAT,EAAmB;MACf,KAAKuZ,IAAL;;MACA,IAAIsuQ,cAAc,KAAK/mR,MAAvB,EAA+B;QAC3B,KAAKqY,IAAL,CAAUrY,MAAV;MACH;IACJ,CALD,MAMK;MACD,KAAKqY,IAAL,CAAUrY,MAAV;IACH;EACJ;;EACDgnR,cAAc,GAAG;IACb,IAAI,KAAKkC,oBAAT,EAA+B;MAC3B,KAAKA,oBAAL;IACH;;IACD,KAAKA,oBAAL,GAA4B,KAAK57R,QAAL,CAAc8D,MAAd,CAAqB9+J,QAArB,EAA+B,OAA/B,EAAyCwL,CAAD,IAAO;MACvE,MAAMuob,aAAa,GAAG1B,iBAAiB,CAAC7mb,CAAC,CAAC6hB,MAAH,EAAW,KAAK7W,MAAhB,CAAvC;MACA,KAAKu/J,YAAL,CAAkBg+Q,aAAlB,EAAiCvob,CAAjC;IACH,CAH2B,CAA5B;EAIH;;EACD+qb,iBAAiB,CAACv/W,GAAD,EAAM;IACnB,MAAMuiX,gBAAgB,GAAG90b,KAAK,CAACpK,IAAN,CAAW2F,QAAQ,CAACguH,gBAAT,CAA0B,KAAKx3G,MAA/B,CAAX,CAAzB;IACA+ib,gBAAgB,CAACp0b,OAAjB,CAA0B0zJ,EAAD,IAAQ;MAC7B,KAAKiD,IAAL,CAAUrvF,GAAV,CAAc,KAAKuuF,QAAL,CAAc8D,MAAd,CAAqBjG,EAArB,EAAyB7hF,GAAG,CAAC,CAAD,CAAH,CAAO17E,IAAhC,EAAsC,MAAM;QACtD,KAAK69b,cAAL,CAAoBR,eAApB,CAAoC,IAApC,EAA0C9/R,EAA1C;QACA7hF,GAAG,CAAC,CAAD,CAAH,CAAOi5C,OAAP,CAAe4oC,EAAf;MACH,CAHa,CAAd;MAIA,KAAKiD,IAAL,CAAUrvF,GAAV,CAAc,KAAKuuF,QAAL,CAAc8D,MAAd,CAAqBjG,EAArB,EAAyB7hF,GAAG,CAAC,CAAD,CAAH,CAAO17E,IAAhC,EAAuCkQ,CAAD,IAAO;QACvD,KAAK2tb,cAAL,CAAoBR,eAApB,CAAoC,KAApC,EAA2C,IAA3C;QACA3hX,GAAG,CAAC,CAAD,CAAH,CAAOi5C,OAAP,CAAe;UAAEy9C,MAAM,EAAE7U,EAAV;UAAckiB,QAAQ,EAAEvvK;QAAxB,CAAf;MACH,CAHa,CAAd;IAIH,CATD;EAUH;;EACDuqK,YAAY,CAACrI,MAAD,EAAS3xJ,KAAT,EAAgB;IACxB,MAAMy9a,aAAa,GAAG,CAAC,CAAC9gS,wEAAO,CAAC38I,KAAK,CAACsR,MAAP,EAAgB2rI,IAAD,IAAUA,IAAI,CAACo3C,SAAL,IAAkBp3C,IAAI,CAACo3C,SAAL,CAAejmC,QAAf,CAAwB,SAAxB,CAA3C,CAA/B;IACA,MAAMsvR,cAAc,GAAG,KAAK7sR,QAAL,IAAiB,KAAKA,QAAL,CAAc3+C,OAAd,CAAsBvyH,QAAtB,CAA+BgyK,MAAvE;IACA,IAAI2rR,cAAc,GAAG,CAAC,CAAC3gS,wEAAO,CAAC38I,KAAK,CAACsR,MAAP,EAAgB2rI,IAAD,IAAUA,IAAI,MAAMygS,cAAc,GAAGA,cAAH,GAAoB/rR,MAAxC,CAA7B,CAA9B;;IACA,IAAI,KAAK+iO,MAAL,KAAgB,OAAhB,IAA2B+oD,aAA3B,IAA6C,KAAK5sR,QAAL,IAAiBysR,cAAlE,EAAmF;MAC/E;IACH;;IACD,IAAI,CAAC3rR,MAAD,IAAW,KAAKd,QAApB,EAA8B;MAC1B,KAAKwsR,iBAAL,CAAuB1rR,MAAvB,EAA+B,KAA/B;MACA;IACH;;IACD,IAAI2rR,cAAJ,EAAoB;MAChB,KAAKD,iBAAL,CAAuB1rR,MAAvB,EAA+B,IAA/B;IACH,CAFD,MAGK,IAAI,KAAKd,QAAT,EAAmB;MACpB,KAAKwsR,iBAAL,CAAuB1rR,MAAvB,EAA+B,KAA/B;MACA,KAAK0rR,iBAAL,CAAuB1rR,MAAvB,EAA+B,IAA/B;IACH;EACJ;;EACD0rR,iBAAiB,CAAC1rR,MAAD,EAASqY,IAAT,EAAe;IAC5B,IAAI,KAAK0xQ,WAAL,CAAiB/pR,MAAjB,EAAyBqY,IAAzB,CAAJ,EAAoC;MAChC;IACH;;IACD,IAAIA,IAAJ,EAAU;MACN,KAAKA,IAAL,CAAUrY,MAAV;IACH,CAFD,MAGK;MACD,KAAKyY,IAAL;IACH;EACJ;;AAzIyD;;AA2I9D8yQ,yBAAyB,CAAC37b,IAA1B;EAAA,iBAAuH27b,yBAAvH,EAhpDmGvjS,+DAgpDnG,CAAkKA,qDAAlK,GAhpDmGA,+DAgpDnG,CAA4LA,iDAA5L,GAhpDmGA,+DAgpDnG,CAAkNsyC,uEAAlN,GAhpDmGtyC,+DAgpDnG,CAAgPA,oDAAhP,GAhpDmGA,+DAgpDnG,CAAyQyiS,cAAzQ;AAAA;;AACAc,yBAAyB,CAACv3R,IAA1B,kBAjpDmGhM,+DAipDnG;EAAA,MAA2GujS,yBAA3G;EAAA;EAAA;IAAA;EAAA;EAAA;EAAA,WAjpDmGvjS,gEAipDnG,CAAoN,CAACyiS,cAAD,CAApN,GAjpDmGziS,wEAipDnG;AAAA;;AACA;EAAA,mDAlpDmGA,+DAkpDnG,CAA4FujS,yBAA5F,EAAmI,CAAC;IACxHl7b,IAAI,EAAE63J,oDADkH;IAExH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,yBADX;MAEC65J,QAAQ,EAAE,uBAFX;MAGCv5J,SAAS,EAAE,CAAC+vb,cAAD;IAHZ,CAAD;EAFkH,CAAD,CAAnI,EAO4B,YAAY;IAAE,OAAO,CAAC;MAAEp6b,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA1B,EAA+C;MAAE1jK,IAAI,EAAEiqM,uEAAiBl6B;IAAzB,CAA/C,EAA4E;MAAE/vK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA5E,EAAoG;MAAEzjK,IAAI,EAAEo6b;IAAR,CAApG,CAAP;EAAuI,CAPjL,EAOmM;IAAE3hb,MAAM,EAAE,CAAC;MAC9LzY,IAAI,EAAE+3J,gDAAKA;IADmL,CAAD;EAAV,CAPnM;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM4jS,sBAAN,SAAqCtD,qBAArC,CAA2D;EACvD36b,WAAW,CAACqmR,MAAD,EAAS3mH,MAAT,EAAiB8P,YAAjB,EAA+BjQ,QAA/B,EAAyCm+R,cAAzC,EAAyD;IAChE,MAAMh+R,MAAN,EAAc8P,YAAd,EAA4BjQ,QAA5B;IACA,KAAK8mH,MAAL,GAAcA,MAAd;IACA,KAAK3mH,MAAL,GAAcA,MAAd;IACA,KAAK8P,YAAL,GAAoBA,YAApB;IACA,KAAKjQ,QAAL,GAAgBA,QAAhB;IACA,KAAKm+R,cAAL,GAAsBA,cAAtB;;IACA,KAAK3C,iBAAL,GAAyB,MAAM;MAC3B,KAAK4C,iBAAL,CAAuB,KAAKt3K,MAAL,CAAY5lH,aAAnC,EAAkD,IAAlD;IACH,CAFD;;IAGA,KAAKu6R,iBAAL,GAAyB,MAAM;MAC3B,IAAI,KAAKgB,WAAL,CAAiB,KAAK31K,MAAL,CAAY5lH,aAA7B,EAA4C,KAA5C,CAAJ,EAAwD;QACpD;MACH;;MACD,IAAI,CAAC,KAAK46R,QAAV,EAAoB;QAChB,KAAKA,QAAL,GAAgB,KAAKqC,cAAL,CAAoBH,WAApB,CAAgCr5b,SAAhC,CAA2CmuE,GAAD,IAAS;UAC/D,MAAM,CAAC2qX,gBAAD,EAAmBC,eAAnB,IAAsC5qX,GAA5C;;UACA,IAAI,CAAC2qX,gBAAD,IAAqB,CAACC,eAA1B,EAA2C;YACvC,KAAKvyQ,IAAL;UACH;QACJ,CALe,CAAhB;MAMH;IACJ,CAZD;;IAaA,KAAKhQ,YAAL,GAAoB,MAAM;MACtB,KAAKijR,iBAAL,CAAuB,KAAKt3K,MAAL,CAAY5lH,aAAnC,EAAkD,IAAlD;IACH,CAFD;;IAGA,KAAKka,WAAL,GAAoBl4K,IAAD,IAAU;MACzB,MAAM6d,KAAK,GAAG7d,IAAI,CAAC68K,QAAnB;;MACA,IAAI,KAAK08Q,WAAL,CAAiB,KAAK31K,MAAL,CAAY5lH,aAA7B,EAA4C,KAA5C,CAAJ,EAAwD;QACpD;MACH,CAJwB,CAKzB;;;MACA,MAAMo9R,aAAa,GAAG,CAAC,CAAC5gS,wEAAO,CAAC38I,KAAK,CAACqnJ,aAAP,EAAuBpK,IAAD,IAAUA,IAAI,CAACo3C,SAAL,IAAkBp3C,IAAI,CAACo3C,SAAL,CAAejmC,QAAf,CAAwB,WAAxB,CAAlD,CAA/B;;MACA,IAAI,CAACmvR,aAAL,EAAoB;QAChB,KAAKnzQ,IAAL;MACH;;MACD,IAAI,CAAC,KAAK0wQ,eAAV,EAA2B;QACvB;QACA,KAAKA,eAAL,GAAuB,KAAKsC,cAAL,CAAoBJ,oBAApB,CAAyC73b,IAAzC,CAA8CsV,sDAAM,CAAC/J,CAAC,IAAIA,CAAC,KAAK,IAAZ,CAApD,EAAuE9M,SAAvE,CAAkFmuE,GAAD,IAAS;UAC7G,IAAI,CAACA,GAAL,EAAU;YACN,KAAKq4G,IAAL;UACH;QACJ,CAJsB,CAAvB;MAKH;IACJ,CAlBD;;IAmBA,KAAKyxQ,eAAL,GAAuB,KAAKuB,cAA5B;EACH;EACD;AACJ;AACA;;;EACIpzQ,IAAI,GAAG;IACH,IAAI,KAAKnZ,QAAT,EAAmB;MACf;IACH;;IACD,KAAKzR,MAAL,CAAYt+C,GAAZ,CAAgB,MAAM;MAClB,KAAKvuE,SAAL,CAAe,KAAKwzO,MAApB;IACH,CAFD;IAGA,KAAKl1G,QAAL,CAAcgB,wBAAd,CACK1sK,IADL,CACU02J,oDAAI,CAAC,CAAD,CADd,EAEKj4J,SAFL,CAEe,MAAM,KAAKwmL,IAAL,EAFrB;EAGH;EACD;AACJ;AACA;;;EACIxa,MAAM,GAAG;IACL,IAAI,KAAKiB,QAAT,EAAmB;MACf,KAAKuZ,IAAL;IACH,CAFD,MAGK;MACD,KAAKJ,IAAL;IACH;EACJ;;EACDwwQ,iBAAiB,CAACv/W,GAAD,EAAM;IACnB,KAAK8kF,IAAL,CAAUrvF,GAAV,CAAc,KAAKuuF,QAAL,CAAc8D,MAAd,CAAqB,KAAKgjH,MAAL,CAAY5lH,aAAjC,EAAgDllF,GAAG,CAAC,CAAD,CAAH,CAAO17E,IAAvD,EAA6D,MAAM;MAC7E,KAAK69b,cAAL,CAAoBR,eAApB,CAAoC,IAApC,EAA0C,KAAK72K,MAAL,CAAY5lH,aAAtD;MACAllF,GAAG,CAAC,CAAD,CAAH,CAAOi5C,OAAP;IACH,CAHa,CAAd;IAIA,KAAK6rC,IAAL,CAAUrvF,GAAV,CAAc,KAAKuuF,QAAL,CAAc8D,MAAd,CAAqB,KAAKgjH,MAAL,CAAY5lH,aAAjC,EAAgDllF,GAAG,CAAC,CAAD,CAAH,CAAO17E,IAAvD,EAA8DkQ,CAAD,IAAO;MAC9E,KAAK2tb,cAAL,CAAoBR,eAApB,CAAoC,KAApC,EAA2C,IAA3C;MACA3hX,GAAG,CAAC,CAAD,CAAH,CAAOi5C,OAAP,CAAe;QAAE8qD,QAAQ,EAAEvvK;MAAZ,CAAf;IACH,CAHa,CAAd;EAIH;;EACDkpb,cAAc,GAAG;IACb,IAAI,KAAKkC,oBAAT,EAA+B;MAC3B,KAAKA,oBAAL;IACH;;IACD,KAAKA,oBAAL,GAA4B,KAAK57R,QAAL,CAAc8D,MAAd,CAAqB9+J,QAArB,EAA+B,OAA/B,EAAyCwL,CAAD,IAAO;MACvE,KAAKm6J,OAAL,CAAan6J,CAAb;IACH,CAF2B,CAA5B;EAGH;EACD;AACJ;AACA;;;EACIm6J,OAAO,CAAC5pJ,KAAD,EAAQ;IACX,MAAMy9a,aAAa,GAAG,CAAC,CAAC9gS,wEAAO,CAAC38I,KAAK,CAACsR,MAAP,EAAgB2rI,IAAD,IAAUA,IAAI,CAACo3C,SAAL,IAAkBp3C,IAAI,CAACo3C,SAAL,CAAejmC,QAAf,CAAwB,SAAxB,CAA3C,CAA/B;IACA,IAAIwvR,QAAQ,GAAG,CAAC,CAACjhS,wEAAO,CAAC38I,KAAK,CAACsR,MAAP,EAAgB2rI,IAAD,IAAUA,IAAI,KAAK,KAAK8oH,MAAL,CAAY5lH,aAA9C,CAAxB;;IACA,IAAIs9R,aAAa,IAAK,KAAK5sR,QAAL,IAAiB+sR,QAAvC,EAAkD;MAC9C;IACH;;IACD,IAAIA,QAAJ,EAAc;MACV;MACA,KAAKP,iBAAL,CAAuB,KAAKt3K,MAAL,CAAY5lH,aAAnC,EAAkD,IAAlD;IACH,CAHD,MAIK;MACD;MACA,KAAKk9R,iBAAL,CAAuB,KAAKt3K,MAAL,CAAY5lH,aAAnC,EAAkD,KAAlD;IACH;EACJ;;EACDk9R,iBAAiB,CAAC1rR,MAAD,EAASqY,IAAT,EAAe;IAC5B,IAAI,KAAK0xQ,WAAL,CAAiB/pR,MAAjB,EAAyBqY,IAAzB,CAAJ,EAAoC;MAChC;IACH;;IACD,IAAIA,IAAJ,EAAU;MACN,KAAKA,IAAL;IACH,CAFD,MAGK;MACD,KAAKI,IAAL;IACH;EACJ;;AAvHsD;;AAyH3DuzQ,sBAAsB,CAACp8b,IAAvB;EAAA,iBAAoHo8b,sBAApH,EA/xDmGhkS,+DA+xDnG,CAA4JA,qDAA5J,GA/xDmGA,+DA+xDnG,CAAsLA,iDAAtL,GA/xDmGA,+DA+xDnG,CAA4MsyC,uEAA5M,GA/xDmGtyC,+DA+xDnG,CAA0OA,oDAA1O,GA/xDmGA,+DA+xDnG,CAAmQyiS,cAAnQ;AAAA;;AACAuB,sBAAsB,CAACh4R,IAAvB,kBAhyDmGhM,+DAgyDnG;EAAA,MAAwGgkS,sBAAxG;EAAA;EAAA;EAAA,WAhyDmGhkS,gEAgyDnG,CAA6K,CAACyiS,cAAD,CAA7K,GAhyDmGziS,wEAgyDnG;AAAA;;AACA;EAAA,mDAjyDmGA,+DAiyDnG,CAA4FgkS,sBAA5F,EAAgI,CAAC;IACrH37b,IAAI,EAAE63J,oDAD+G;IAErH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,sBADX;MAEC65J,QAAQ,EAAE,oBAFX;MAGCv5J,SAAS,EAAE,CAAC+vb,cAAD;IAHZ,CAAD;EAF+G,CAAD,CAAhI,EAO4B,YAAY;IAAE,OAAO,CAAC;MAAEp6b,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,iDAAS+L;IAAjB,CAA1B,EAA+C;MAAE1jK,IAAI,EAAEiqM,uEAAiBl6B;IAAzB,CAA/C,EAA4E;MAAE/vK,IAAI,EAAE23J,oDAAY8L;IAApB,CAA5E,EAAoG;MAAEzjK,IAAI,EAAEo6b;IAAR,CAApG,CAAP;EAAuI,CAPjL;AAAA;;AASA,MAAM5wP,oBAAoB,GAAG,CAACksP,gBAAD,EAAmBhB,uBAAnB,EAA4CtjN,0BAA5C,CAA7B;AACA,MAAM2J,iBAAiB,GAAG,CAACnhF,sEAAD,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,MAAMiiS,aAAN,CAAoB;;AAEpBA,aAAa,CAACt8b,IAAd;EAAA,iBAA2Gs8b,aAA3G;AAAA;;AACAA,aAAa,CAACpxb,IAAd,kBA70DmGktJ,8DA60DnG;EAAA,MAA4GkkS;AAA5G;AACAA,aAAa,CAAClxb,IAAd,kBA90DmGgtJ,8DA80DnG;EAAA,UAAqI,CAAC/7J,yDAAD,EAAe,GAAGm/O,iBAAlB,CAArI;AAAA;;AACA;EAAA,mDA/0DmGpjF,+DA+0DnG,CAA4FkkS,aAA5F,EAAuH,CAAC;IAC5G77b,IAAI,EAAEvE,mDADsG;IAE5G0E,IAAI,EAAE,CAAC;MACC2K,YAAY,EAAE,CAAC0+L,oBAAD,CADf;MAECgiD,eAAe,EAAE,CAACkpM,uBAAD,CAFlB;MAGC7pb,OAAO,EAAE,CAACjP,yDAAD,EAAe,GAAGm/O,iBAAlB,CAHV;MAIC10E,OAAO,EAAE,CAACmjC,oBAAD;IAJV,CAAD;EAFsG,CAAD,CAAvH;AAAA;;AAUA,MAAMyxF,UAAU,GAAG,CACfw8J,+BADe,EAEfD,4BAFe,EAGfD,6BAHe,EAIfoE,sBAJe,EAKfT,yBALe,CAAnB;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMY,aAAN,CAAoB;;AAEpBA,aAAa,CAACv8b,IAAd;EAAA,iBAA2Gu8b,aAA3G;AAAA;;AACAA,aAAa,CAACrxb,IAAd,kBA53DmGktJ,8DA43DnG;EAAA,MAA4GmkS;AAA5G;AAUAA,aAAa,CAACnxb,IAAd,kBAt4DmGgtJ,8DAs4DnG;EAAA,UAAqI,CACzH/7J,yDADyH,EAEzHg+J,sEAFyH,CAArI;AAAA;;AAIA;EAAA,mDA14DmGjC,+DA04DnG,CAA4FmkS,aAA5F,EAAuH,CAAC;IAC5G97b,IAAI,EAAEvE,mDADsG;IAE5G0E,IAAI,EAAE,CAAC;MACC2K,YAAY,EAAE,CACV,GAAGmwR,UADO,EAEVy8J,gBAFU,CADf;MAKClsM,eAAe,EAAE,CAACksM,gBAAD,CALlB;MAMCrxR,OAAO,EAAE,CAAC,GAAG40H,UAAJ,EAAgBy8J,gBAAhB,CANV;MAOC7sb,OAAO,EAAE,CACLjP,yDADK,EAELg+J,sEAFK;IAPV,CAAD;EAFsG,CAAD,CAAvH;AAAA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMmiS,cAAN,CAAqB;;AAErBA,cAAc,CAACx8b,IAAf;EAAA,iBAA4Gw8b,cAA5G;AAAA;;AACAA,cAAc,CAACtxb,IAAf,kBAv7DmGktJ,8DAu7DnG;EAAA,MAA6GokS;AAA7G;AACAA,cAAc,CAACpxb,IAAf,kBAx7DmGgtJ,8DAw7DnG;EAAA,UAAuIkkS,aAAvI,EAAsJC,aAAtJ;AAAA;;AACA;EAAA,mDAz7DmGnkS,+DAy7DnG,CAA4FokS,cAA5F,EAAwH,CAAC;IAC7G/7b,IAAI,EAAEvE,mDADuG;IAE7G0E,IAAI,EAAE,CAAC;MACCkmK,OAAO,EAAE,CAACw1R,aAAD,EAAgBC,aAAhB;IADV,CAAD;EAFuG,CAAD,CAAxH;AAAA,MAOA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtgEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;iBAiEsGnkS;;IAAAA,4DA6nDtF;IA7nDsFA,wDAgoDlF;MAhoDkFA,2DAgoDlF;MAAA,gBAhoDkFA,2DAgoDlF;MAAA;MAAA;MAAA,eAhoDkFA,2DAgoDlF;MAAA,OAhoDkFA,yDAgoDzE,mBAAW,0BAAX,YAAoC,2BAAiB,0BAAjB,CAApC,EAAT;IAAA;IAhoDkFA,uDAmoDlF;IAnoDkFA,0DAyoDtF;;;;oBAzoDsFA;;;mBAAAA;IAAAA,wDA+nDlF;IA/nDkFA,uDAqoD9E;IAroD8EA,yDAqoD9E;;;;;;iBAroD8EA;;IAAAA,4DA0oDtF;IA1oDsFA,wDAgpDlF;MAhpDkFA,2DAgpDlF;MAAA,iBAhpDkFA,2DAgpDlF;MAAA,gBAhpDkFA,2DAgpDlF;MAAA,OAhpDkFA,yDAgpD9D,mBAAU,2BAAV,EAApB;IAAA;IAhpDkFA,0DAkpDrF;;;;oBAlpDqFA;;;mBAAAA;IAAAA,wDA4oDlF;;;;;;;;;;;;;;;IA5oDkFA,qEA8pD1E;IA9pD0EA,wDA+pDtE;IA/pDsEA,mEAuqD1E;;;;oBAvqD0EA;;;mBAAAA;IAAAA,uDAgqDlE;IAhqDkEA,wDAgqDlE,wEAhqDkEA,6DAgqDlE;;;;;;IAhqDkEA,qEAwqD1E;IAxqD0EA,oDAyqDtE;IAzqDsEA,mEA0qD1E;;;;oBA1qD0EA;mBAAAA;IAAAA,uDAyqDtE;IAzqDsEA,gEAyqDtE;;;;;;IAzqDsEA,uDA+qD1F;;;;oBA/qD0FA;;;mBAAAA;IAAAA,wDAmrDtF;;;;;;IAnrDsFA,4DAumD9F;IAvmD8FA,wDA6nDtF;IA7nDsFA,wDA0oDtF;IA1oDsFA,4DAmpDtF;IAnpDsFA,qEA6pD9E;IA7pD8EA,wDA8pD1E;IA9pD0EA,wDAwqD1E;IAxqD0EA,mEA2qD9E;IA3qD8EA,0DA4qDlF;IA5qDkFA,wDA+qD1F;IA/qD0FA,0DA2sD9F;;;;;;mBA3sD8FA;IAAAA,yDA0mD1F;IA1mD0FA,wDA6mD1F;IA7mD0FA,yDA4mD1F;IA5mD0FA,uDA4nDrF;IA5nDqFA,wDA4nDrF;IA5nDqFA,uDAioDjF;IAjoDiFA,wDAioDjF;IAjoDiFA,uDA2oDjF;IA3oDiFA,wDA2oDjF;IA3oDiFA,uDA0pDlF;IA1pDkFA,yDA0pDlF;IA1pDkFA,wDAqpDlF;IArpDkFA,yDAopDlF;IAppDkFA,uDA6pDhE;IA7pDgEA,wDA6pDhE;IA7pDgEA,uDA8pD3D;IA9pD2DA,wDA8pD3D;IA9pD2DA,uDAgrDrF;IAhrDqFA,wDAgrDrF;;;;;;IAhrDqFA,uDA2tDtF;;;;;;;;;;;;;;IA3tDsFA,wDAuuD9E;;;;oBAvuD8EA;IAAAA,wDAyuD1E,mFAzuD0EA,6DAyuD1E;;;;;;IAzuD0EA,qEA+uD9E;IA/uD8EA,oDAgvD1E;IAhvD0EA,mEAivD9E;;;;;;IAjvD8EA,4DA4sD9F;IA5sD8FA,wDA2tDtF;IA3tDsFA,4DAguDtF;IAhuDsFA,wDAuuD9E;IAvuD8EA,wDA+uD9E;IA/uD8EA,0DAkvDlF;;;;mBAlvDkFA;IAAAA,yDA+sD1F;IA/sD0FA,wDAktD1F;IAltD0FA,yDAwtD1F;IAxtD0FA,uDA4tDjF;IA5tDiFA,wDA4tDjF;IA5tDiFA,uDAouDlF;IApuDkFA,wDAouDlF;IApuDkFA,yDAkuDlF;IAluDkFA,uDAwuDzE;IAxuDyEA,wDAwuDzE;IAxuDyEA,uDA+uD/D;IA/uD+DA,wDA+uD/D;;;;;;;;IA/uD+DA,uDAgiFlF;;;;;;gBAhiFkFA;;IAAAA,4DAohF9F;IAphF8FA,wDA4hFtF;MA5hFsFA,2DA4hFtF;MAAA,eA5hFsFA,2DA4hFtF;MAAA,OA5hFsFA,yDA4hFvE,kCAAf;IAAA;IA5hFsFA,wDA+hFtF;IA/hFsFA,0DAkiF1F;;;;mBAliF0FA;IAAAA,uDAyhFtF;IAzhFsFA,wDAyhFtF;;;;;;IAzhFsFA,qEAg3H9F;IAh3H8FA,uDAi3H1F;IAj3H0FA,4DAk3H1F;IAl3H0FA,oDAk3HpF;IAl3HoFA,0DAk3H5E;IAl3H4EA,mEAm3H9F;;;;mBAn3H8FA;IAAAA,uDAi3HpF;IAj3HoFA,oEAi3HpF;IAj3HoFA,uDAk3HpF;IAl3HoFA,+DAk3HpF;;;;;;;;;;;;;;;;;IAl3HoFA,wDAq3H9F;;;;mBAr3H8FA;IAAAA,wDAu3H1F,iEAv3H0FA,6DAu3H1F;;;;;;IAv3H0FA,4DA+kI9F;IA/kI8FA,uDAmlI1F;IAnlI0FA,0DAqlI9F;;;;;;;;IArlI8FA,wDAgmI9F;;;;;;;;;;;;;;IAhmI8FA,wDAulI9F;;;;mBAvlI8FA;IAAAA,wDAylI1F,iEAzlI0FA,6DAylI1F;;;;AAzpIZ,MAAMuC,eAAe,GAAG;EACpB38J,IAAI,EAAE,kCADc;EAEpB48J,WAAW,EAAE,sBAFO;EAGpBC,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;EAIpBC,WAAW,EAAE,UAJO;EAKpB78J,OAAO,EAAE,EALW;EAMpB88J,gBAAgB,EAAE;AANE,CAAxB;AASA;AACA;AACA;;AACA,MAAM2hS,6BAAN,CAAoC;EAChCv+b,WAAW,GAAG;IACV,KAAKwgK,OAAL,GAAe,IAAItG,uDAAJ,EAAf;EACH;;EACD0pB,MAAM,GAAG;IACL,KAAKpjB,OAAL,CAAavZ,IAAb;EACH;;AAN+B;AASpC;AACA;AACA;;;AACA,MAAM+mH,WAAW,GAAG,MAAM,KAA1B;AACA;AACA;AACA;;;AACA,MAAMxW,SAAS,GAAG,MAAM,MAAxB;AACA;AACA;AACA;;;AACA,MAAM3pH,UAAU,GAAG,MAAM,KAAzB;AACA;AACA;AACA;;;AACA,MAAM8gI,UAAU,GAAG,MAAM,IAAzB;AACA;AACA;AACA;;;AACA,MAAM13D,UAAU,GAAG,MAAM,KAAzB;AACA;AACA;AACA;;;AACA,MAAM5O,SAAS,GAAG,MAAM,IAAxB;AACA;AACA;AACA;;;AACA,MAAM0lH,OAAO,GAAG,CAAC19S,CAAD,EAAIkS,IAAJ,KAAaA,IAA7B;AAEA;AACA;AACA;;;AACA,MAAMi8a,kBAAN,CAAyB;EACrBx+b,WAAW,GAAG;IACV,KAAKwgK,OAAL,GAAe,IAAI3hK,yCAAJ,EAAf;EACH;;EACDisM,MAAM,CAAC9kL,KAAD,EAAQ+jJ,QAAR,EAAkB;IACpB,KAAKvJ,OAAL,CAAaj9J,IAAb,CAAkB;MAAEwmK,QAAF;MAAY/jJ,KAAZ;MAAmB8kL,MAAM,EAAE;IAA3B,CAAlB;EACH;;EACD+jE,QAAQ,CAAC7oP,KAAD,EAAQ+jJ,QAAR,EAAkB;IACtB,KAAKvJ,OAAL,CAAaj9J,IAAb,CAAkB;MAAEwmK,QAAF;MAAY/jJ,KAAZ;MAAmB8kL,MAAM,EAAE;IAA3B,CAAlB;EACH;;AAToB;;AAWzB0zP,kBAAkB,CAAC38b,IAAnB;EAAA,iBAAgH28b,kBAAhH;AAAA;;AACAA,kBAAkB,CAACv8b,KAAnB,kBADsGg4J,gEACtG;EAAA,OAAoHukS,kBAApH;EAAA,SAAoHA,kBAApH;AAAA;;AACA;EAAA,mDAFsGvkS,+DAEtG,CAA4FukS,kBAA5F,EAA4H,CAAC;IACjHl8b,IAAI,EAAE3E,qDAAUA;EADiG,CAAD,CAA5H;AAAA;AAIA;AACA;AACA;;;AACA,MAAM8gc,mBAAN,CAA0B;EACtBz+b,WAAW,GAAG;IACV,KAAKk0Q,eAAL,GAAuB,GAAvB;EACH;;EACDC,SAAS,CAACnuP,KAAK,GAAG,EAAT,EAAaouP,WAAW,GAAG,EAA3B,EAA+B;IACpC,OAAQ,GAAEA,WAAY,GAAEA,WAAW,GAAG,KAAKF,eAAR,GAA0B,EAAG,GAAEluP,KAAM,EAAxE;EACH;;EACD04a,aAAa,CAAC14a,KAAD,EAAQyjD,KAAR,EAAe;IACxB,OAAOzjD,KAAK,CAAC3lB,KAAN,CAAY,KAAK6zQ,eAAjB,EAAkCj9L,KAAlC,CAAwC,CAAxC,EAA2CxN,KAA3C,EAAkDvuC,IAAlD,CAAuD,KAAKg5O,eAA5D,CAAP;EACH;;EACDyqL,cAAc,CAAC34a,KAAK,GAAG,EAAT,EAAa;IACvB,MAAMq5B,KAAK,GAAGr5B,KAAK,CAAC3lB,KAAN,CAAY,KAAK6zQ,eAAjB,CAAd;;IACA,IAAI,CAAC70N,KAAK,CAAC16C,MAAX,EAAmB;MACf,OAAOioV,GAAP;IACH;;IACD,OAAOzlV,QAAQ,CAACk4C,KAAK,CAACA,KAAK,CAAC16C,MAAN,GAAe,CAAhB,CAAN,EAA0B,EAA1B,CAAf;EACH;;EACD8kE,KAAK,CAACzjD,KAAD,EAAQ;IACT,OAAOA,KAAK,CAAC3lB,KAAN,CAAY,KAAK6zQ,eAAjB,EAAkCvvQ,MAAzC;EACH;;AAnBqB;;AAqB1B85b,mBAAmB,CAAC58b,IAApB;EAAA,iBAAiH48b,mBAAjH;AAAA;;AACAA,mBAAmB,CAACx8b,KAApB,kBA/BsGg4J,gEA+BtG;EAAA,OAAqHwkS,mBAArH;EAAA,SAAqHA,mBAArH;AAAA;;AACA;EAAA,mDAhCsGxkS,+DAgCtG,CAA4FwkS,mBAA5F,EAA6H,CAAC;IAClHn8b,IAAI,EAAE3E,qDAAUA;EADkG,CAAD,CAA7H;AAAA;AAIA;AACA;AACA;;;AACA,MAAMihc,0BAAN,CAAiC;EAC7B5+b,WAAW,GAAG;IACV,KAAKwgK,OAAL,GAAe,IAAI3hK,yCAAJ,EAAf;EACH;;EACDggc,YAAY,CAAC74a,KAAD,EAAQ;IAChB,KAAKw6I,OAAL,CAAaj9J,IAAb,CAAkByiB,KAAlB;EACH;;AAN4B;;AAQjC44a,0BAA0B,CAAC/8b,IAA3B;EAAA,iBAAwH+8b,0BAAxH;AAAA;;AACAA,0BAA0B,CAAC38b,KAA3B,kBAhDsGg4J,gEAgDtG;EAAA,OAA4H2kS,0BAA5H;EAAA,SAA4HA,0BAA5H;AAAA;;AACA;EAAA,mDAjDsG3kS,+DAiDtG,CAA4F2kS,0BAA5F,EAAoI,CAAC;IACzHt8b,IAAI,EAAE3E,qDAAUA;EADyG,CAAD,CAApI;AAAA;;AAIA,MAAMsqM,cAAc,GAAG,qDAAvB;AACA;AACA;AACA;;AACA,MAAM59I,KAAK,GAAG,CAAC6yG,OAAD,EAAU7wJ,QAAV,KAAuB;EACjC,MAAMukP,OAAO,GAAG1zF,OAAO,CAAC3yG,OAAR,IAAmB2yG,OAAO,CAACI,iBAA3B,IAAgDJ,OAAO,CAAC2zF,qBAAxE;;EACA,IAAI,CAACD,OAAL,EAAc;IACV,OAAO,KAAP;EACH;;EACD,OAAOA,OAAO,CAAC7iP,IAAR,CAAamvJ,OAAb,EAAsB7wJ,QAAtB,CAAP;AACH,CAND;AAOA;AACA;AACA;;;AACA,MAAMyyb,gBAAgB,GAAG,CAAC5hS,OAAD,EAAU7wJ,QAAV,KAAuB;EAC5C,IAAI,CAAC9H,QAAQ,CAACiwC,eAAT,CAAyBk6H,QAAzB,CAAkCxR,OAAlC,CAAL,EAAiD;IAC7C,OAAO,IAAP;EACH;;EACD,IAAI36G,MAAM,GAAG26G,OAAb;;EACA,OAAO36G,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACgqE,QAAP,KAAoB,CAA9C,EAAiD;IAC7C,IAAIliE,KAAK,CAAC9H,MAAD,EAASl2C,QAAT,CAAT,EAA6B;MACzB,OAAOk2C,MAAP;IACH;;IACDA,MAAM,GAAGA,MAAM,CAACwoI,aAAP,IAAwBxoI,MAAM,CAACvF,UAAxC;EACH;;EACD,OAAO,IAAP;AACH,CAZD;AAaA;AACA;AACA;;;AACA,MAAMkpK,IAAI,GAAG,MAAM,CAAG,CAAtB;AACA;AACA;AACA;;;AACA,MAAMljH,SAAS,GAAIt/F,KAAD,IAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKnB,SAAzD;AACA;AACA;AACA;;;AACA,MAAM28R,OAAO,GAAIx7R,KAAD,IAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKnB,SAAvD;AACA;AACA;AACA;;;AACA,MAAMi0F,OAAO,GAAI9yF,KAAD,IAAWsF,KAAK,CAACwtF,OAAN,CAAc9yF,KAAd,CAA3B;AACA;AACA;AACA;;;AACA,MAAMy7R,mBAAmB,GAAIz7R,KAAD,IAAWw7R,OAAO,CAACx7R,KAAD,CAAP,IAAkBA,KAAK,CAAC07C,IAAN,GAAaz6C,MAAb,KAAwB,CAAjF;AACA;AACA;AACA;;;AACA,MAAMwlH,SAAS,GAAIzmH,KAAD,IAAW,OAAOA,KAAP,KAAiB,SAA9C;AACA;AACA;AACA;;;AACA,MAAMq7b,WAAW,GAAI7hS,OAAD,IAAa;EAC7B,MAAM7wJ,QAAQ,GAAG,oBAAjB;;EACA,IAAI,CAAC4uJ,mFAAmB,EAAxB,EAA4B;IACxB,OAAO,IAAP;EACH;;EACD,IAAIiC,OAAO,CAACD,OAAZ,EAAqB;IACjB,OAAOC,OAAO,CAACD,OAAR,CAAgB5wJ,QAAhB,CAAP;EACH,CAFD,MAGK;IACD,OAAOyyb,gBAAgB,CAAC5hS,OAAD,EAAU7wJ,QAAV,CAAvB;EACH;AACJ,CAXD;AAYA;AACA;AACA;;;AACA,MAAM67L,WAAW,GAAIhrC,OAAD,IAAa;EAC7B,IAAIA,OAAO,CAAC8F,OAAZ,EAAqB;IACjB,MAAMA,OAAO,GAAG9F,OAAO,CAAC8F,OAAR,CAAgB73J,WAAhB,EAAhB;IACA,MAAM01J,QAAQ,GAAG3D,OAAO,CAACsd,YAAR,CAAqB,UAArB,CAAjB;IACA,MAAMulM,OAAO,GAAGl/M,QAAQ,KAAK,IAA7B;IACA,IAAIunC,SAAS,GAAGvnC,QAAQ,KAAK,IAAb,IAAqB,CAACk/M,OAAtC;;IACA,IAAI93K,cAAc,CAAChoK,IAAf,CAAoB+iI,OAApB,CAAJ,EAAkC;MAC9BolC,SAAS,GAAG,CAAClrC,OAAO,CAACsE,QAAT,IAAqB,CAACu+M,OAAlC;IACH;;IACD,OAAO33K,SAAP;EACH;;EACD,OAAO,KAAP;AACH,CAZD;AAaA;AACA;AACA;;;AACA,MAAMgpM,SAAS,GAAIl0O,OAAD,IAAa;EAC3B,MAAM8hS,aAAa,GAAG,iFAAtB;;EACA,IAAI,CAAC/jS,mFAAmB,EAAxB,EAA4B;IACxB,OAAO,IAAP;EACH;;EACD,IAAIsC,IAAI,GAAGL,OAAX;;EACA,OAAOK,IAAI,IAAI,CAAClzG,KAAK,CAACkzG,IAAD,EAAOyhS,aAAP,CAArB,EAA4C;IACxCzhS,IAAI,GAAGA,IAAI,CAACvgH,UAAZ;EACH;;EACD,IAAIugH,IAAJ,EAAU;IACN,OAAOlzG,KAAK,CAACkzG,IAAD,EAAO,oDAAP,CAAZ;EACH;AACJ,CAZD;AAaA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0hS,iBAAiB,GAAI18Y,MAAD,IAAY;EAClC,IAAI,CAACygD,SAAS,CAACzgD,MAAD,CAAd,EAAwB;IACpB,OAAO,IAAP;EACH;;EACD,MAAMl2C,QAAQ,GAAG,oDAAjB;;EACA,IAAIg+C,KAAK,CAAC9H,MAAD,EAASl2C,QAAT,CAAT,EAA6B;IACzB,OAAOk2C,MAAP;EACH;;EACD,OAAOA,MAAM,CAACw5H,aAAP,CAAqB1vK,QAArB,CAAP;AACH,CATD;AAUA;AACA;AACA;;;AACA,MAAM6yb,gBAAgB,GAAIhiS,OAAD,IAAa;EAClC,OAAOl6D,SAAS,CAAC87V,gBAAgB,CAAC5hS,OAAD,EAAU,8CAAV,CAAjB,CAAhB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,MAAMD,OAAO,GAAG,CAACM,IAAD,EAAOoqC,SAAP,KAAqB;EACjC,OAAOpqC,IAAI,IAAI,CAACoqC,SAAS,CAACpqC,IAAD,CAAzB,EAAiC;IAC7BA,IAAI,GAAGA,IAAI,CAACvgH,UAAZ;EACH;;EACD,OAAOugH,IAAP;AACH,CALD;AAMA;AACA;AACA;;;AACA,MAAM+vB,SAAS,GAAG,CAACpwB,OAAD,EAAUF,SAAV,KAAwB;EACtC,OAAOhsC,OAAO,CAACisC,OAAO,CAACC,OAAD,EAAWK,IAAD,IAAUA,IAAI,KAAKP,SAA7B,CAAR,CAAd;AACH,CAFD;AAGA;AACA;AACA;;;AACA,MAAMmiS,aAAa,GAAIjiS,OAAD,IAAaA,OAAO,CAACuD,aAAR,CAAsBsb,aAAtB,CAAoC,kBAApC,CAAnC;AACA;AACA;AACA;;;AACA,MAAMqjR,aAAa,GAAG,CAACxta,MAAD,EAAS2rI,IAAT,KAAkB;EACpC,MAAM2iN,WAAW,GAAG3iN,IAAI,IAAIwhS,WAAW,CAACnta,MAAD,CAAvC;EACA,OAAOsuV,WAAW,KAAKA,WAAW,KAAKtuV,MAAhB,IAA0BA,MAAM,CAACivI,QAAP,GAAkB,CAAjD,CAAlB;AACH,CAHD;AAIA;AACA;AACA;;;AACA,MAAMw+R,MAAM,GAAI9hS,IAAD,IAAUA,IAAI,GAAGA,IAAI,CAACid,YAAL,CAAkB,gBAAlB,CAAH,GAAyC,EAAtE;AACA;AACA;AACA;;;AACA,MAAM25F,SAAS,GAAI5xP,IAAD,IAAU,CAACA,IAAI,IAAI,EAAT,EAAayD,KAAzC;AACA;AACA;AACA;;;AACA,MAAMs5a,cAAc,GAAG,CAACt3R,KAAD,EAAQyrC,MAAR,KAAmB;EACtC,IAAI,CAACzwG,SAAS,CAACglE,KAAD,CAAV,IAAqB,CAAChlE,SAAS,CAACywG,MAAD,CAAnC,EAA6C;IACzC,OAAO,IAAP;EACH;;EACD,OAAOzwG,SAAS,CAACglE,KAAD,CAAT,IAAoBhlE,SAAS,CAACywG,MAAD,CAA7B,IAAyCzrC,KAAK,CAACzlJ,IAAN,CAAWwnJ,QAAX,KAAwB0pC,MAAM,CAAClxL,IAAP,CAAYwnJ,QAApF;AACH,CALD;AAMA;AACA;AACA;;;AACA,MAAMw1R,WAAW,GAAIpuM,MAAD,IAAY;EAC5B,IAAI,CAACnuJ,SAAS,CAACmuJ,MAAD,CAAd,EAAwB;IACpB,OAAOA,MAAP;EACH;;EACD,OAAOA,MAAM,CAAC5uO,IAAP,CAAYwnJ,QAAnB;AACH,CALD;AAMA;AACA;AACA;;;AACA,MAAMsqG,yBAAyB,GAAGrjQ,CAAC,IAAIA,CAAC,IAAIhI,KAAK,CAACwtF,OAAN,CAAcxlF,CAAd,CAAL,IAAyBA,CAAC,CAACrM,MAAF,KAAa,CAA7E;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM66b,UAAU,GAAG,CAACxvV,KAAD,EAAQgkK,IAAR,EAAc;EAAEgB,QAAF;EAAY1kB,UAAZ;EAAwB06C;AAAxB,CAAd,EAA8ChhI,SAA9C,EAAyDq+F,KAAK,GAAG,CAAjE,KAAuE;EACtF,MAAM7gL,KAAK,GAAG,OAAOwiF,SAAP,KAAqB,QAArB,GAAgCA,SAAhC,GAA4CA,SAAS,CAACq+F,KAAD,CAAnE;EACAr4J,KAAK,CAACtmG,OAAN,CAAe0jK,OAAD,IAAa;IACvB,MAAMwjF,OAAO,GAAG,OAAOokB,QAAP,KAAoB,QAApB,GAA+ByqL,mBAAmB,CAACj4W,KAAD,EAAQwtL,QAAR,EAAkB1kB,UAAlB,CAAlD,GAAkF0kB,QAAlG;IACA,MAAM0qL,OAAO,GAAG9uM,OAAO,CAACxjF,OAAO,CAACrD,QAAT,EAAmBiqG,IAAnB,CAAvB;IACA5mG,OAAO,CAACsyR,OAAR,GAAkBA,OAAlB;IACAtyR,OAAO,CAAC0X,OAAR,GAAkB46Q,OAAlB;IACAtyR,OAAO,CAACuyR,eAAR,GAA0B,KAA1B;;IACA,IAAID,OAAJ,EAAa;MACTE,cAAc,CAACxyR,OAAO,CAAC7qH,MAAT,CAAd;IACH;;IACD,IAAI6qH,OAAO,CAAC/rC,QAAR,IAAoB+rC,OAAO,CAAC/rC,QAAR,CAAiB18H,MAAjB,GAA0B,CAAlD,EAAqD;MACjD,IAAIqmS,IAAI,KAAK,QAAT,IAAqB,CAAC00J,OAA1B,EAAmC;QAC/BF,UAAU,CAACpyR,OAAO,CAAC/rC,QAAT,EAAmB2yI,IAAnB,EAAyB;UAAEgB,QAAF;UAAY1kB,UAAZ;UAAwB06C;QAAxB,CAAzB,EAAyDhhI,SAAzD,EAAoEq+F,KAAK,GAAG,CAA5E,CAAV;MACH,CAFD,MAGK;QACDw3L,cAAc,CAACzyR,OAAO,CAAC/rC,QAAT,CAAd;MACH;IACJ;EACJ,CAjBD;AAkBH,CApBD;;AAqBA,MAAMu+T,cAAc,GAAIriS,IAAD,IAAU;EAC7B,IAAI,CAACv6D,SAAS,CAACu6D,IAAD,CAAd,EAAsB;IAClB;EACH;;EACDA,IAAI,CAACoiS,eAAL,GAAuB,IAAvB;EACApiS,IAAI,CAACunB,OAAL,GAAe,IAAf;;EACA,IAAI9hF,SAAS,CAACu6D,IAAI,CAACh7G,MAAN,CAAT,IAA0B,CAACg7G,IAAI,CAACh7G,MAAL,CAAYo9Y,eAA3C,EAA4D;IACxDC,cAAc,CAACriS,IAAI,CAACh7G,MAAN,CAAd;EACH;AACJ,CATD;;AAUA,MAAMs9Y,cAAc,GAAIr6M,KAAD,IAAW;EAC9BA,KAAK,CAAC97O,OAAN,CAAc6zJ,IAAI,IAAI;IAClBA,IAAI,CAACunB,OAAL,GAAe,IAAf;;IACA,IAAIvnB,IAAI,CAACl8B,QAAT,EAAmB;MACfw+T,cAAc,CAACtiS,IAAI,CAACl8B,QAAN,CAAd;IACH;EACJ,CALD;AAMH,CAPD;;AAQA,MAAMsqK,SAAS,GAAG;EACdj9H,QAAQ,EAAE,CAAClrH,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACx8C,OAAF,CAAUyH,CAAV,KAAgB,CADtB;EAEdqxb,cAAc,EAAE,CAACt8Y,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACx8C,OAAF,CAAUyH,CAAV,MAAiB,CAAC,CAF9B;EAGdsxb,UAAU,EAAE,CAACv8Y,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACn8C,WAAF,CAAcoH,CAAd,EAAiB,CAAjB,MAAwB,CAHhC;EAIduxb,gBAAgB,EAAE,CAACx8Y,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACn8C,WAAF,CAAcoH,CAAd,EAAiB,CAAjB,MAAwB,CAAC,CAJvC;EAKdwxb,QAAQ,EAAE,CAACz8Y,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACx8C,OAAF,CAAUyH,CAAV,EAAa+0C,CAAC,CAAC7+C,MAAF,GAAW8J,CAAC,CAAC9J,MAA1B,KAAqC,CAL3C;EAMdu7b,cAAc,EAAE,CAAC18Y,CAAD,EAAI/0C,CAAJ,KAAU+0C,CAAC,CAACx8C,OAAF,CAAUyH,CAAV,EAAa+0C,CAAC,CAAC7+C,MAAF,GAAW8J,CAAC,CAAC9J,MAA1B,IAAoC;AANhD,CAAlB;;AAQA,MAAMw7b,WAAW,GAAG,CAACvvM,OAAD,EAAUN,UAAV,KAAyB,CAAC9sM,CAAD,EAAI/0C,CAAJ,KAAU;EACnD,IAAI6hP,UAAJ,EAAgB;IACZ,OAAOM,OAAO,CAACptM,CAAC,CAACr4C,WAAF,EAAD,EAAkBsD,CAAC,CAACtD,WAAF,EAAlB,CAAd;EACH;;EACD,OAAOylP,OAAO,CAACptM,CAAD,EAAI/0C,CAAJ,CAAd;AACH,CALD;;AAMA,MAAMgxb,mBAAmB,GAAG,CAACj4W,KAAD,EAAQwtL,QAAR,EAAkB1kB,UAAlB,KAAiC,CAACvmF,QAAD,EAAWiqG,IAAX,KAAoBmsL,WAAW,CAACx0J,SAAS,CAAC32B,QAAD,CAAV,EAAsB1kB,UAAtB,CAAX,CAA6C7gB,8DAAM,CAACjoJ,KAAD,CAAN,CAAcuiF,QAAd,CAA7C,EAAsEiqG,IAAtE,CAAjF;AACA;AACA;AACA;;;AACA,MAAMosL,cAAc,GAAG,CAAChsL,WAAD,EAAcxjD,SAAd,KAA4B;EAC/C,OAAO,CAACwjD,WAAD,EAAcxjD,SAAd,EAAyB71M,MAAzB,CAAgCspI,IAAI,IAAIrhD,SAAS,CAACqhD,IAAD,CAAjD,EAAyDnpH,IAAzD,CAA8D,GAA9D,CAAP;AACH,CAFD;AAGA;AACA;AACA;;;AACA,MAAMmla,aAAa,GAAG,CAACt2R,QAAD,EAAWu2R,iBAAX,EAA8BlsL,WAA9B,KAA8C;EAChE,IAAI,CAACpxK,SAAS,CAAC+mE,QAAD,CAAd,EAA0B;IACtB,OAAO,IAAP;EACH;;EACD,OAAO;IACHA,QADG;IAEH/jJ,KAAK,EAAEo6a,cAAc,CAAChsL,WAAD,EAAcksL,iBAAd;EAFlB,CAAP;AAIH,CARD;AASA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,sBAAsB,GAAG,CAACpvM,MAAD,EAASC,gBAAT,KAA8B;EACzD,IAAI,CAACpuJ,SAAS,CAACmuJ,MAAD,CAAV,IAAsBA,MAAM,CAAC9vH,QAAP,CAAgB18H,MAAhB,KAA2B,CAArD,EAAwD;IACpD,OAAO,EAAP;EACH;;EACD,IAAI62L,WAAW,GAAG21D,MAAM,CAAC9vH,QAAzB;;EACA,IAAIr+B,SAAS,CAACouJ,gBAAD,CAAb,EAAiC;IAC7B51D,WAAW,GAAGA,WAAW,CAACzgL,MAAZ,CAAmBq2O,gBAAnB,CAAd;EACH;;EACD51D,WAAW,CAAC9xL,OAAZ,CAAoBo+L,KAAK,IAAItM,WAAW,GAAGA,WAAW,CAAC/pL,MAAZ,CAAmB8ub,sBAAsB,CAACz4P,KAAD,EAAQspD,gBAAR,CAAzC,CAA3C;EACA,OAAO51D,WAAP;AACH,CAVD;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMglQ,UAAU,GAAG,CAACC,EAAD,EAAKC,EAAL,KAAY;EAC3B,IAAID,EAAE,CAACnvX,IAAH,KAAYovX,EAAE,CAACpvX,IAAnB,EAAyB;IACrB,OAAO,KAAP;EACH;;EACD,OAAOtoE,KAAK,CAACpK,IAAN,CAAW6hc,EAAX,EAAelvX,KAAf,CAAqBvgE,CAAC,IAAI0vb,EAAE,CAACvta,GAAH,CAAOniB,CAAP,CAA1B,CAAP;AACH,CALD;AAMA;AACA;AACA;AACA;;;AACA,MAAM4jM,YAAY,GAAG,CAACruE,SAAD,EAAYj1D,IAAZ,KAAqB;EACtC,MAAMinG,YAAY,GAAG;IACjB,SAAU,KAAIhyC,SAAU,KADP;IAEjB,UAAW,KAAIA,SAAU,KAFR;IAGjB,SAAU,KAAIA,SAAU;EAHP,CAArB;EAKA,OAAOgyC,YAAY,CAACjnG,IAAD,CAAnB;AACH,CAPD;;AASA,MAAMo2R,IAAI,GAAGnqM,IAAI,IAAKA,IAAI,IAAI,EAA9B;;AACA,MAAMojS,YAAY,GAAGpjS,IAAI,IAAKmqM,IAAI,CAACnqM,IAAD,CAAJ,CAAWl8B,QAAX,IAAuB,EAArD;;AACA,MAAMu/T,eAAe,GAAIp7M,KAAD,IAAW;EAC/B,IAAI,CAACx8O,KAAK,CAACwtF,OAAN,CAAcgvJ,KAAd,CAAD,IAAyBA,KAAK,CAAC7gP,MAAN,KAAiB,CAA9C,EAAiD;IAC7C,OAAO,IAAP;EACH;;EACD,MAAMk8b,UAAU,GAAGr7M,KAAK,CAAC7gP,MAAzB;EACA,MAAM0jK,SAAS,GAAGw4R,UAAU,GAAG,CAA/B;;EACA,KAAK,IAAI76a,KAAK,GAAGqiJ,SAAjB,EAA4BriJ,KAAK,IAAI,CAArC,EAAwCA,KAAK,IAAI,CAAjD,EAAoD;IAChD,MAAMu3I,IAAI,GAAGioF,KAAK,CAACx/N,KAAD,CAAlB;;IACA,IAAIu3I,IAAI,CAACunB,OAAT,EAAkB;MACd,OAAOvnB,IAAP;IACH;EACJ;;EACD,OAAO,IAAP;AACH,CAbD;AAcA;AACA;AACA;;;AACA,MAAMkmI,eAAN,CAAsB;EAClBzjS,WAAW,GAAG;IACV,KAAK8gc,EAAL,GAAU,IAAIrC,mBAAJ,EAAV;IACA,KAAKj5M,KAAL,GAAa,EAAb;EACH;;EACDu7M,gBAAgB,GAAG;IACf,OAAO,CAAC,KAAKv7M,KAAL,IAAc,EAAf,EAAmBvyN,IAAnB,CAAwBsqI,IAAI,IAAIA,IAAI,CAACunB,OAArC,CAAP;EACH;;EACD87Q,eAAe,GAAG;IACd,IAAIrjS,IAAI,GAAGqjS,eAAe,CAAC,KAAKp7M,KAAN,CAA1B;;IACA,OAAOxiJ,SAAS,CAACu6D,IAAD,CAAT,IAAmBojS,YAAY,CAACpjS,IAAD,CAAZ,CAAmB54J,MAAnB,GAA4B,CAAtD,EAAyD;MACrD,MAAM08H,QAAQ,GAAGs/T,YAAY,CAACpjS,IAAD,CAA7B;MACA,MAAMyjS,gBAAgB,GAAGJ,eAAe,CAACv/T,QAAD,CAAxC;;MACA,IAAI,CAACr+B,SAAS,CAACg+V,gBAAD,CAAd,EAAkC;QAC9B,OAAOzjS,IAAP;MACH;;MACDA,IAAI,GAAGyjS,gBAAP;IACH;;IACD,OAAOzjS,IAAP;EACH;;EACDwhS,WAAW,CAAC/4a,KAAD,EAAQ;IACf,MAAM;MAAE4mM;IAAF,IAAW86I,IAAI,CAAC,KAAKu5F,QAAL,CAAcj7a,KAAd,CAAD,CAArB;IACA,MAAMmoX,OAAO,GAAGvhL,IAAI,IAAI,KAAKm0O,gBAAL,EAAxB;IACA,OAAOr5F,IAAI,CAACymC,OAAD,CAAJ,CAAcnoX,KAAd,KAAwBA,KAAxB,GAAgC,KAAKk7a,cAAL,CAAoB/yD,OAApB,EAA6B,CAA7B,CAAhC,GAAkEA,OAAzE;EACH;;EACDgzD,kBAAkB,GAAG;IACjB,OAAO,KAAK37M,KAAL,CAAWvyN,IAAX,CAAiBsqI,IAAD,IAAU;MAC7B,OAAO,CAACA,IAAI,CAACiE,QAAN,IAAkBjE,IAAI,CAACunB,OAA9B;IACH,CAFM,CAAP;EAGH;;EACDm8Q,QAAQ,CAACj7a,KAAD,EAAQ;IACZ,OAAO,KAAKiN,IAAL,CAAUjN,KAAV,EAAiB,KAAKw/N,KAAtB,CAAP;EACH;;EACD2vE,UAAU,CAACnvS,KAAD,EAAQ;IACd,MAAMo7a,WAAW,GAAG,KAAKN,EAAL,CAAQr3X,KAAR,CAAczjD,KAAd,IAAuB,CAA3C;IACA,OAAO,KAAKi7a,QAAL,CAAc,KAAKH,EAAL,CAAQpC,aAAR,CAAsB14a,KAAtB,EAA6Bo7a,WAA7B,CAAd,CAAP;EACH;;EACDC,gBAAgB,CAACr7a,KAAD,EAAQ;IACpB,MAAMu3I,IAAI,GAAG,KAAK0jS,QAAL,CAAcj7a,KAAd,CAAb;IACA,MAAMq7G,QAAQ,GAAGs/T,YAAY,CAACpjS,IAAD,CAA7B;IACA,OAAOl8B,QAAQ,CAACpuG,IAAT,CAAe60K,KAAD,IAAWA,KAAK,CAAChjB,OAA/B,CAAP;EACH;;EACDw8Q,eAAe,CAAC/+a,IAAD,EAAO;IAClB,MAAMyD,KAAK,GAAGzD,IAAI,CAACyD,KAAnB;IACA,MAAMu8B,MAAM,GAAG,KAAK4yQ,UAAL,CAAgBnvS,KAAhB,CAAf;IACA,MAAMu7a,UAAU,GAAG,KAAKT,EAAL,CAAQnC,cAAR,CAAuB34a,KAAvB,CAAnB;IACA,MAAMw7a,SAAS,GAAG,KAAKxkS,SAAL,CAAez6G,MAAf,EAAuB00B,KAAvB,CAA6B,CAA7B,EAAgCsqX,UAAhC,CAAlB;IACA,MAAME,eAAe,GAAGD,SAAS,CAACjwX,KAAV,CAAgBgsF,IAAI,IAAI,CAACA,IAAI,CAACunB,OAA9B,CAAxB;;IACA,IAAIy8Q,UAAU,KAAK,CAAf,IAAoBE,eAAxB,EAAyC;MACrC,OAAOl/Y,MAAP;IACH;;IACD,MAAMm/Y,WAAW,GAAG,KAAKT,QAAL,CAAcj7a,KAAd,CAApB;IACA,IAAI4mM,IAAI,GAAG,KAAKs0O,cAAL,CAAoBQ,WAApB,EAAiC,CAAC,CAAlC,CAAX;;IACA,IAAI90O,IAAJ,EAAU;MACN,IAAIvrF,QAAQ,GAAG,KAAK27B,SAAL,CAAe4vD,IAAf,CAAf;;MACA,OAAOvrF,QAAQ,CAAC18H,MAAT,GAAkB,CAAlB,IAAuB08H,QAAQ,CAACn4D,IAAT,CAAcq0F,IAAI,IAAIA,IAAI,CAACunB,OAA3B,CAA9B,EAAmE;QAC/D8nC,IAAI,GAAGg0O,eAAe,CAACv/T,QAAD,CAAtB;QACAA,QAAQ,GAAG,KAAK27B,SAAL,CAAe4vD,IAAf,CAAX;MACH;IACJ;;IACD,OAAOA,IAAP;EACH;;EACD+0O,eAAe,CAACp/a,IAAD,EAAO;IAClB,MAAM8+G,QAAQ,GAAG,KAAK27B,SAAL,CAAez6I,IAAf,CAAjB;IACA,MAAMq/a,kBAAkB,GAAGvgU,QAAQ,CAACn4D,IAAT,CAAc4+H,KAAK,IAAIA,KAAK,CAAChjB,OAA7B,CAA3B;;IACA,IAAIzjD,QAAQ,CAAC18H,MAAT,KAAoB,CAApB,IAAyB,CAACi9b,kBAA9B,EAAkD;MAC9C,OAAO,KAAKV,cAAL,CAAoB3+a,IAApB,EAA0B,CAA1B,CAAP;IACH;;IACD,OAAO8+G,QAAQ,CAACpuG,IAAT,CAAc60K,KAAK,IAAIA,KAAK,CAAChjB,OAA7B,CAAP;EACH;;EACDytP,YAAY,CAACtlZ,EAAD,EAAKjH,KAAL,EAAYw7I,QAAZ,EAAsBqgS,cAAc,GAAG,KAAvC,EAA8C/8Q,OAAO,GAAG,IAAxD,EAA8D;IACtE,MAAMzjD,QAAQ,GAAG,EAAjB;IACA,MAAM53D,KAAK,GAAG,KAAKq3X,EAAL,CAAQr3X,KAAR,CAAczjD,KAAd,CAAd;IACA,MAAMu8B,MAAM,GAAG,KAAK4yQ,UAAL,CAAgBnvS,KAAhB,CAAf;;IACA,IAAIu8B,MAAM,IAAIknB,KAAK,KAAK,CAAxB,EAA2B;MACvB,MAAM8zF,IAAI,GAAG;QAAEtwI,EAAF;QAAMo0G,QAAN;QAAgBr7G,KAAhB;QAAuBu8B,MAAvB;QAA+Bi/G,QAA/B;QAAyCqgS,cAAzC;QAAyD/8Q;MAAzD,CAAb;MACA,KAAKyoI,MAAL,CAAYhwJ,IAAZ,EAAkBh7G,MAAlB;IACH;EACJ;;EACDiwX,cAAc,CAACvlZ,EAAD,EAAKjH,KAAL,EAAY;IACtB,MAAMu3I,IAAI,GAAG,KAAKtqI,IAAL,CAAUjN,KAAV,EAAiB,KAAKw/N,KAAtB,CAAb;;IACA,IAAI,CAACjoF,IAAD,IAASA,IAAI,CAACtwI,EAAL,KAAYA,EAAzB,EAA6B;MACzB;IACH;;IACD,MAAMo0G,QAAQ,GAAG,KAAK27B,SAAL,CAAeO,IAAI,CAACh7G,MAApB,CAAjB;IACA8+E,QAAQ,CAAChuC,MAAT,CAAgBguC,QAAQ,CAACr6H,OAAT,CAAiBu2J,IAAjB,CAAhB,EAAwC,CAAxC;EACH;;EACDukS,UAAU,CAACt8M,KAAD,EAAQ;IACd,MAAMnkH,QAAQ,GAAGmkH,KAAK,CAACzqO,MAAN,CAAawiJ,IAAI,IAAIv6D,SAAS,CAACu6D,IAAD,CAA9B,CAAjB;;IACA,IAAI,CAACl8B,QAAD,IAAa,CAACA,QAAQ,CAAC18H,MAA3B,EAAmC;MAC/B,OAAO,CAAP;IACH;;IACD,OAAO,KAAKm8b,EAAL,CAAQr3X,KAAR,CAAc43D,QAAQ,CAAC,CAAD,CAAR,CAAYr7G,KAA1B,CAAP;EACH;;EACDg3I,SAAS,CAACO,IAAD,EAAO;IACZ,OAAOA,IAAI,GAAGA,IAAI,CAACl8B,QAAR,GAAmB,KAAKmkH,KAAnC;EACH;;EACDvyN,IAAI,CAACjN,KAAD,EAAQw/N,KAAR,EAAe;IACf,MAAMs8M,UAAU,GAAG,KAAKA,UAAL,CAAgBt8M,KAAhB,CAAnB;IACA,MAAMu8M,YAAY,GAAG,KAAKjB,EAAL,CAAQpC,aAAR,CAAsB14a,KAAtB,EAA6B87a,UAA7B,CAArB;IACA,MAAME,MAAM,GAAGF,UAAU,KAAK,KAAKhB,EAAL,CAAQr3X,KAAR,CAAczjD,KAAd,CAA9B;IACA,MAAMu3I,IAAI,GAAGioF,KAAK,CAACvyN,IAAN,CAAW7jB,CAAC,IAAIA,CAAC,IAAIA,CAAC,CAAC4W,KAAF,KAAY+7a,YAAjC,CAAb;;IACA,IAAI,CAACxkS,IAAL,EAAW;MACP,OAAO,IAAP;IACH;;IACD,OAAOykS,MAAM,GAAGzkS,IAAH,GAAU,KAAKtqI,IAAL,CAAUjN,KAAV,EAAiBu3I,IAAI,CAACl8B,QAAtB,CAAvB;EACH;;EACDksL,MAAM,CAAChwJ,IAAD,EAAOh7G,MAAP,EAAe;IACjB,MAAMijM,KAAK,GAAG,KAAKxoF,SAAL,CAAez6G,MAAf,CAAd;IACAijM,KAAK,CAACnyJ,MAAN,CAAa,KAAKytW,EAAL,CAAQnC,cAAR,CAAuBphS,IAAI,CAACv3I,KAA5B,CAAb,EAAiD,CAAjD,EAAoDu3I,IAApD;EACH;;EACD2jS,cAAc,CAAC3jS,IAAD,EAAO5hF,MAAP,EAAe;IACzB,IAAI,CAAC4hF,IAAL,EAAW;MACP,OAAO,IAAP;IACH;;IACD,MAAMh7G,MAAM,GAAG,KAAK4yQ,UAAL,CAAgB53J,IAAI,CAACv3I,KAArB,CAAf;IACA,MAAMg3I,SAAS,GAAG,KAAKA,SAAL,CAAez6G,MAAf,CAAlB;IACA,IAAIgsP,aAAa,GAAGvxI,SAAS,CAACh2J,OAAV,CAAkBu2J,IAAlB,IAA0B5hF,MAA9C;IACA,IAAIgqS,QAAQ,GAAG3oN,SAAS,CAACuxI,aAAD,CAAxB;;IACA,OAAOvrM,SAAS,CAAC2iR,QAAD,CAAhB,EAA4B;MACxB,IAAIA,QAAQ,CAAC7gM,OAAb,EAAsB;QAClB,OAAO6gM,QAAP;MACH;;MACDp3E,aAAa,IAAI5yN,MAAjB;MACAgqS,QAAQ,GAAG3oN,SAAS,CAACuxI,aAAD,CAApB;IACH;;IACD,OAAO,KAAK2yJ,cAAL,CAAoB3+Y,MAApB,EAA4Bo5B,MAA5B,CAAP;EACH;;AA/HiB;AAkItB;AACA;AACA;;;AACA,MAAMmvF,iBAAN,CAAwB;EACpB9qK,WAAW,CAACy/J,YAAD,EAAe;IACtB,KAAKA,YAAL,GAAoBA,YAApB;IACA,KAAKwiS,OAAL,GAAe,IAAIpjc,yCAAJ,EAAf;IACA,KAAKqjc,KAAL,GAAa,IAAIrjc,yCAAJ,EAAb;IACA,KAAKsjc,MAAL,GAAc,IAAItjc,yCAAJ,EAAd;IACA,KAAKujc,OAAL,GAAe,IAAIvjc,yCAAJ,EAAf;IACA,KAAKwjc,QAAL,GAAgB,IAAIxjc,yCAAJ,EAAhB;IACA,KAAK05U,SAAL,GAAiB,IAAjB;IACA,KAAK/4F,OAAL,GAAe;MACX,CAACtkF,wEAAD,GAAgB,MAAM,KAAKuN,QAAL,CAAc,KAAK52E,KAAL,CAAWyvW,eAAX,CAA2B,KAAKgB,aAAhC,CAAd,EAA8D,IAA9D,CADX;MAEX,CAACpnS,0EAAD,GAAkB,MAAM,KAAKuN,QAAL,CAAc,KAAK52E,KAAL,CAAW8vW,eAAX,CAA2B,KAAKW,aAAhC,CAAd,EAA8D,IAA9D,CAFb;MAGX,CAACpnS,0EAAD,GAAkB,MAAM,CAAC,KAAKgkS,gBAAN,IAA2B,KAAKp0P,MAAL,CAAY;QAC3DA,MAAM,EAAE,KAAKrrC,YAAL,CAAkBc,GADiC;QAE3Dz4J,SAAS,EAAE,KAAK23J,YAAL,CAAkBc,GAAlB,GAAwB,KAAKgiS,uBAA7B,GAAuD,KAAKC;MAFZ,CAAZ,CAHxC;MAOX,CAACtnS,2EAAD,GAAmB,MAAM,CAAC,KAAKgkS,gBAAN,IAA2B,KAAKp0P,MAAL,CAAY;QAC5DA,MAAM,EAAE,CAAC,KAAKrrC,YAAL,CAAkBc,GADiC;QAE5Dz4J,SAAS,EAAE,KAAK23J,YAAL,CAAkBc,GAAlB,GAAwB,KAAKiiS,YAA7B,GAA4C,KAAKD;MAFA,CAAZ,CAPzC;MAWX,CAACrnS,qEAAD,GAAa,MAAM,KAAKuN,QAAL,CAAc,KAAK52E,KAAL,CAAWkvW,gBAAX,EAAd,EAA6C,IAA7C,CAXR;MAYX,CAAC7lS,oEAAD,GAAY,MAAM,KAAKuN,QAAL,CAAc,KAAK52E,KAAL,CAAW+uW,eAAX,EAAd,EAA4C,IAA5C,CAZP;MAaX,CAAC1lS,sEAAD,GAAc,MAAM,KAAKshG,WAAL,EAbT;MAcX,CAACthG,sEAAD,GAAc,MAAM,KAAKunS,WAAL;IAdT,CAAf;IAgBA,KAAKtgS,SAAL,GAAiB,KAAjB;IACA,KAAK0sK,YAAL,GAAoB,KAApB;IACA,KAAK6zH,MAAL,GAAc,IAAIj/J,eAAJ,EAAd;IACA,KAAK8+J,uBAAL,GAA+B,KAAKA,uBAAL,CAA6B/ib,IAA7B,CAAkC,IAAlC,CAA/B;IACA,KAAKgjb,YAAL,GAAoB,KAAKA,YAAL,CAAkBhjb,IAAlB,CAAuB,IAAvB,CAApB;EACH;;EACQ,IAALqyE,KAAK,GAAG;IACR,OAAO,KAAK6wW,MAAZ;EACH;;EACQ,IAAL7wW,KAAK,CAACA,KAAD,EAAQ;IACb,KAAK6wW,MAAL,GAAc7wW,KAAd;EACH;;EACc,IAAX8+H,WAAW,GAAG;IACd,OAAOwjD,SAAS,CAAC,KAAKu5H,UAAN,CAAT,IAA8B,IAArC;EACH;;EACmB,IAAhBi1D,gBAAgB,GAAG;IACnB,OAAO,KAAKj1D,UAAL,IAAmB,KAAKA,UAAL,CAAgBrsQ,QAAhB,CAAyB18H,MAAzB,GAAkC,CAA5D;EACH;;EACmB,IAAhBu6b,gBAAgB,GAAG;IACnB,OAAO,KAAKxxD,UAAL,IAAmB,KAAKA,UAAL,CAAgBm0D,cAA1C;EACH;;EACgB,IAAbS,aAAa,GAAG;IAChB,OAAO,KAAK50D,UAAL,IAAmB,KAAK77S,KAAL,CAAWsvW,kBAAX,EAA1B;EACH;;EACD14R,QAAQ,CAAClmJ,IAAD,EAAOssT,YAAY,GAAG,KAAtB,EAA6B;IACjC,IAAI,CAAC,KAAK0J,SAAN,IAAmB,CAACh2T,IAApB,IAA4B,KAAK+7L,QAAL,CAAc61D,SAAS,CAAC5xP,IAAD,CAAvB,CAAhC,EAAgE;MAC5D;IACH;;IACD,KAAK4/I,SAAL,GAAiB,IAAjB;IACA,KAAKurO,UAAL,GAAkBnrX,IAAI,IAAI,KAAKmrX,UAA/B;IACA,KAAK7+D,YAAL,GAAoBA,YAApB;IACA,KAAK+zH,UAAL;EACH;;EACDC,cAAc,CAAC78a,KAAD,EAAQ;IAClB,KAAKyiJ,QAAL,CAAc,KAAK52E,KAAL,CAAWsjO,UAAX,CAAsBnvS,KAAtB,CAAd;EACH;;EACD88a,aAAa,CAAC98a,KAAD,EAAQ;IACjB,IAAI,CAACA,KAAL,EAAY;MACR;IACH;;IACD,KAAKyiJ,QAAL,CAAc,KAAK52E,KAAL,CAAWovW,QAAX,CAAoBj7a,KAApB,CAAd;EACH;;EACD+8a,eAAe,CAAC/8a,KAAD,EAAQ;IACnB,IAAI,CAACA,KAAD,IAAUmuP,SAAS,CAAC,KAAKmuL,aAAN,CAAT,KAAkCt8a,KAAhD,EAAuD;MACnD;IACH;;IACD,KAAK0nX,UAAL,GAAkB,KAAK77S,KAAL,CAAWktW,WAAX,CAAuB/4a,KAAvB,CAAlB;IACA,KAAK48a,UAAL;EACH;;EACDI,iBAAiB,GAAG;IAChB,IAAI,KAAKt1D,UAAT,EAAqB;MACjB;IACH;;IACD,KAAKA,UAAL,GAAkB,KAAK77S,KAAL,CAAWkvW,gBAAX,EAAlB;IACA,KAAK6B,UAAL;EACH;;EACD96R,UAAU,GAAG;IACT,IAAI,CAAC,KAAKywK,SAAN,IAAmB,CAAC,KAAKp2K,SAA7B,EAAwC;MACpC;IACH;;IACD,KAAKA,SAAL,GAAiB,KAAjB;IACA,KAAKygS,UAAL;EACH;;EACD3wS,UAAU,CAACjsI,KAAD,EAAQ;IACd,IAAI,CAAC,KAAK6nH,UAAL,CAAgB7nH,KAAhB,CAAL,EAA6B;MACzB,KAAKm8a,MAAL,CAAY5+b,IAAZ,CAAiByiB,KAAjB;IACH;EACJ;;EACDi9a,WAAW,CAACj9a,KAAD,EAAQ;IACf,IAAI,CAAC,KAAK6nH,UAAL,CAAgB7nH,KAAhB,CAAL,EAA6B;MACzB,KAAKo8a,OAAL,CAAa7+b,IAAb,CAAkByiB,KAAlB;IACH;EACJ;;EACDk9a,cAAc,CAACl9a,KAAD,EAAQ;IAClB,IAAI,CAACg9E,SAAS,CAACh9E,KAAD,CAAd,EAAuB;MACnB;IACH;;IACD,KAAKq8a,QAAL,CAAc9+b,IAAd,CAAmByiB,KAAnB;EACH;;EACDs4L,QAAQ,CAACt4L,KAAD,EAAQ;IACZ,IAAI,CAACA,KAAL,EAAY;MACR,OAAO,KAAP;IACH;;IACD,OAAO,KAAKm8I,SAAL,IAAkB,KAAKwuD,WAAL,KAAqB3qM,KAA9C;EACH;;EACDkiL,WAAW,CAACliL,KAAD,EAAQ;IACf,OAAOmuP,SAAS,CAAC,KAAKmuL,aAAN,CAAT,KAAkCt8a,KAAzC;EACH;;EACD6nH,UAAU,CAAC7nH,KAAD,EAAQ;IACd,OAAO,KAAK6rE,KAAL,CAAWovW,QAAX,CAAoBj7a,KAApB,EAA2Bw7I,QAAlC;EACH;;EACD+wQ,YAAY,CAACtlZ,EAAD,EAAKjH,KAAL,EAAYw7I,QAAZ,EAAsBqgS,cAAc,GAAG,KAAvC,EAA8C/8Q,OAAO,GAAG,IAAxD,EAA8D;IACtE,MAAMq+Q,WAAW,GAAG,KAAKtxW,KAAL,CAAWovW,QAAX,CAAoBj7a,KAApB,CAApB;;IACA,IAAIg9E,SAAS,CAACmgW,WAAD,CAAb,EAA4B;MACxB,KAAKtxW,KAAL,CAAW2gV,cAAX,CAA0B2wB,WAAW,CAACl2a,EAAtC,EAA0Ck2a,WAAW,CAACn9a,KAAtD;;MACA,IAAI,KAAKs4L,QAAL,CAAct4L,KAAd,CAAJ,EAA0B;QACtB,KAAK8hJ,UAAL;MACH;IACJ;;IACD,KAAKj2E,KAAL,CAAW0gV,YAAX,CAAwBtlZ,EAAxB,EAA4BjH,KAA5B,EAAmCw7I,QAAnC,EAA6CqgS,cAA7C,EAA6D/8Q,OAA7D;EACH;;EACD0tP,cAAc,CAACvlZ,EAAD,EAAKjH,KAAL,EAAY;IACtB,IAAI,KAAKs4L,QAAL,CAAct4L,KAAd,CAAJ,EAA0B;MACtB,KAAK68a,cAAL,CAAoB78a,KAApB;IACH;;IACD,KAAK6rE,KAAL,CAAW2gV,cAAX,CAA0BvlZ,EAA1B,EAA8BjH,KAA9B;EACH;;EACD46J,IAAI,CAAC7wK,CAAD,EAAI;IACJ,IAAI,CAAC,KAAKwoU,SAAV,EAAqB;MACjB;IACH;;IACD,MAAM6qH,UAAU,GAAG,KAAK5jN,OAAL,CAAazvO,CAAC,CAACyzJ,OAAf,CAAnB;;IACA,IAAI,CAAC4/R,UAAL,EAAiB;MACb;IACH;;IACDA,UAAU;IACVrzb,CAAC,CAACulC,cAAF;EACH;;EACDw1J,MAAM,CAAC;IAAEA,MAAF;IAAUhjM;EAAV,CAAD,EAAwB;IAC1B,MAAMke,KAAK,GAAGmuP,SAAS,CAAC,KAAKu5H,UAAN,CAAvB;;IACA,IAAI,CAAC1nX,KAAD,IAAUle,SAAS,CAACke,KAAD,CAAvB,EAAgC;MAC5B;IACH;;IACD,KAAKq9a,YAAL,CAAkBv4P,MAAlB;EACH;;EACD03P,YAAY,GAAG;IACX,IAAI,KAAKG,gBAAT,EAA2B;MACvB,OAAO,KAAP;IACH;;IACD,KAAKl6R,QAAL,CAAc,KAAK52E,KAAL,CAAWsjO,UAAX,CAAsBhhD,SAAS,CAAC,KAAKu5H,UAAN,CAA/B,CAAd;IACA,OAAO,IAAP;EACH;;EACD60D,uBAAuB,GAAG;IACtB,IAAI,CAAC,KAAKI,gBAAV,EAA4B;MACxB,OAAO,KAAP;IACH;;IACD,KAAKl6R,QAAL,CAAc,KAAK52E,KAAL,CAAWwvW,gBAAX,CAA4BltL,SAAS,CAAC,KAAKu5H,UAAN,CAArC,CAAd;IACA,OAAO,IAAP;EACH;;EACD21D,YAAY,CAACv4P,MAAD,EAAS;IACjB,KAAKm3P,OAAL,CAAa1+b,IAAb,CAAkB,KAAK+/b,eAAL,CAAqBx4P,MAArB,CAAlB;EACH;;EACD83P,UAAU,GAAG;IACT,KAAKV,KAAL,CAAW3+b,IAAX,CAAgB,KAAK+/b,eAAL,EAAhB;EACH;;EACDA,eAAe,CAACx4P,MAAM,GAAG,KAAV,EAAiB;IAC5B,OAAQ;MAAEA,MAAF;MAAU9kL,KAAK,EAAE,KAAK2qM,WAAtB;MAAmCxuD,SAAS,EAAE,KAAKA,SAAnD;MAA8D0sK,YAAY,EAAE,KAAKA;IAAjF,CAAR;EACH;;EACDryE,WAAW,GAAG;IACV,IAAI,CAAC,KAAK+7E,SAAV,EAAqB;MACjB;IACH;;IACD,IAAI,KAAK2mH,gBAAT,EAA2B;MACvB,KAAKgE,cAAL,CAAoB,KAAKvyO,WAAzB;IACH,CAFD,MAGK;MACD,KAAKsyO,WAAL,CAAiB,KAAKtyO,WAAtB;IACH;EACJ;;EACD8xO,WAAW,GAAG;IACV,IAAI,CAAC,KAAKlqH,SAAV,EAAqB;MACjB;IACH;;IACD,IAAI,KAAK2mH,gBAAT,EAA2B;MACvB,KAAKgE,cAAL,CAAoB,KAAKvyO,WAAzB;IACH,CAFD,MAGK;MACD,KAAK1+D,UAAL,CAAgB,KAAK0+D,WAArB;IACH;EACJ;;AAlMmB;;AAoMxB7lD,iBAAiB,CAACjpK,IAAlB;EAAA,iBAA+GipK,iBAA/G,EAzrBsG7Q,sDAyrBtG,CAAkJqB,6EAAlJ;AAAA;;AACAwP,iBAAiB,CAAC7oK,KAAlB,kBA1rBsGg4J,gEA0rBtG;EAAA,OAAmH6Q,iBAAnH;EAAA,SAAmHA,iBAAnH;AAAA;;AACA;EAAA,mDA3rBsG7Q,+DA2rBtG,CAA4F6Q,iBAA5F,EAA2H,CAAC;IAChHxoK,IAAI,EAAE3E,qDAAUA;EADgG,CAAD,CAA3H,EAE4B,YAAY;IAAE,OAAO,CAAC;MAAE2E,IAAI,EAAEg5J,6EAAsBC;IAA9B,CAAD,CAAP;EAA4C,CAFtF;AAAA;AAIA;AACA;AACA;;;AACA,MAAMgoS,mBAAN,CAA0B;EACtBvjc,WAAW,GAAG;IACV,KAAKwgK,OAAL,GAAe,IAAI3hK,yCAAJ,EAAf;EACH;;EACD2kc,cAAc,CAACjhb,IAAD,EAAO8+G,QAAP,EAAiB;IAC3B,KAAKm/B,OAAL,CAAaj9J,IAAb,CAAkB;MAAEgf,IAAF;MAAQ8+G;IAAR,CAAlB;EACH;;AANqB;;AAQ1BkiU,mBAAmB,CAAC1hc,IAApB;EAAA,iBAAiH0hc,mBAAjH;AAAA;;AACAA,mBAAmB,CAACthc,KAApB,kBA3sBsGg4J,gEA2sBtG;EAAA,OAAqHspS,mBAArH;EAAA,SAAqHA,mBAArH;AAAA;;AACA;EAAA,mDA5sBsGtpS,+DA4sBtG,CAA4FspS,mBAA5F,EAA6H,CAAC;IAClHjhc,IAAI,EAAE3E,qDAAUA;EADkG,CAAD,CAA7H;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM4vQ,qBAAN,CAA4B;EACxBvtQ,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHuB;;AAK5B+jG,qBAAqB,CAAC1rQ,IAAtB;EAAA,iBAAmH0rQ,qBAAnH,EA3wBsGtzG,+DA2wBtG,CAA0JA,sDAA1J;AAAA;;AACAszG,qBAAqB,CAACtnG,IAAtB,kBA5wBsGhM,+DA4wBtG;EAAA,MAAuGszG,qBAAvG;EAAA;AAAA;;AACA;EAAA,mDA7wBsGtzG,+DA6wBtG,CAA4FszG,qBAA5F,EAA+H,CAAC;IACpHjrQ,IAAI,EAAE63J,oDAD8G;IAEpH13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAF8G,CAAD,CAA/H,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMqpS,+BAAN,CAAsC;EAClCzjc,WAAW,CAACwpK,WAAD,EAAc;IACrB,KAAKA,WAAL,GAAmBA,WAAnB;EACH;;AAHiC;;AAKtCi6R,+BAA+B,CAAC5hc,IAAhC;EAAA,iBAA6H4hc,+BAA7H,EAryBsGxpS,+DAqyBtG,CAA8KA,sDAA9K;AAAA;;AACAwpS,+BAA+B,CAACx9R,IAAhC,kBAtyBsGhM,+DAsyBtG;EAAA,MAAiHwpS,+BAAjH;EAAA;AAAA;;AACA;EAAA,mDAvyBsGxpS,+DAuyBtG,CAA4FwpS,+BAA5F,EAAyI,CAAC;IAC9Hnhc,IAAI,EAAE63J,oDADwH;IAE9H13J,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE;IADX,CAAD;EAFwH,CAAD,CAAzI,EAK4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,sDAAR;MAAwBz3J,UAAU,EAAE,CAAC;QACnEF,IAAI,EAAE83J,mDAAQA;MADqD,CAAD;IAApC,CAAD,CAAP;EAElB,CAPxB;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMw0F,kBAAN,CAAyB;;AAEzBA,kBAAkB,CAAC/sP,IAAnB;EAAA,iBAAgH+sP,kBAAhH;AAAA;;AACAA,kBAAkB,CAAC3sP,KAAnB,kBAzzBsGg4J,gEAyzBtG;EAAA,OAAoH20F,kBAApH;EAAA,SAAoHA,kBAApH;AAAA;;AACA;EAAA,mDA1zBsG30F,+DA0zBtG,CAA4F20F,kBAA5F,EAA4H,CAAC;IACjHtsP,IAAI,EAAE3E,qDAAUA;EADiG,CAAD,CAA5H;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMkxP,mBAAN,CAA0B;;AAE1BA,mBAAmB,CAAChtP,IAApB;EAAA,iBAAiHgtP,mBAAjH;AAAA;;AACAA,mBAAmB,CAAC5sP,KAApB,kBAv0BsGg4J,gEAu0BtG;EAAA,OAAqH40F,mBAArH;EAAA,SAAqHA,mBAArH;AAAA;;AACA;EAAA,mDAx0BsG50F,+DAw0BtG,CAA4F40F,mBAA5F,EAA6H,CAAC;IAClHvsP,IAAI,EAAE3E,qDAAUA;EADkG,CAAD,CAA7H;AAAA;AAIA;AACA;AACA;;;AACA,MAAMsnN,gBAAN,CAAuB;EACnBjlN,WAAW,GAAG;IACV,KAAKwgK,OAAL,GAAe,IAAI3hK,yCAAJ,EAAf;EACH;;EACD6kc,eAAe,CAAC19a,KAAD,EAAQ;IACnB,OAAO,KAAKoiJ,UAAL,KAAoBpiJ,KAA3B;EACH;;EACD29a,gBAAgB,CAAC39a,KAAD,EAAQ26I,QAAR,EAAkB;IAC9B,IAAI,KAAKyH,UAAL,KAAoBpiJ,KAApB,IAA6B26I,QAAQ,KAAK,KAA9C,EAAqD;MACjD,KAAKyH,UAAL,GAAkB,IAAlB;IACH,CAFD,MAGK,IAAI,CAAC,KAAKA,UAAN,IAAoBzH,QAAxB,EAAkC;MACnC,KAAKyH,UAAL,GAAkBpiJ,KAAlB;IACH;EACJ;;EACDwsK,MAAM,CAACxsK,KAAD,EAAQ+jJ,QAAR,EAAkB;IACpB,KAAKvJ,OAAL,CAAaj9J,IAAb,CAAkB;MAAEwmK,QAAF;MAAY/jJ;IAAZ,CAAlB;EACH;;AAjBkB;;AAmBvBi/L,gBAAgB,CAACpjN,IAAjB;EAAA,iBAA8GojN,gBAA9G;AAAA;;AACAA,gBAAgB,CAAChjN,KAAjB,kBAn2BsGg4J,gEAm2BtG;EAAA,OAAkHgrD,gBAAlH;EAAA,SAAkHA,gBAAlH;AAAA;;AACA;EAAA,mDAp2BsGhrD,+DAo2BtG,CAA4FgrD,gBAA5F,EAA0H,CAAC;IAC/G3iN,IAAI,EAAE3E,qDAAUA;EAD+F,CAAD,CAA1H;AAAA;;AAIA,MAAMimc,WAAW,GAAG,MAApB;AACA;AACA;AACA;;AACA,MAAMC,qBAAN,CAA4B;EACxB7jc,WAAW,GAAG;IACV,KAAKd,GAAL,GAAW,IAAI+U,GAAJ,EAAX;EACH;;EACDw3F,KAAK,GAAG;IACJ,KAAKvsG,GAAL,CAAS+jB,KAAT;EACH;;EACDsvZ,YAAY,CAAChwZ,IAAD,EAAOggC,MAAP,EAAe;IACvB,MAAMuhZ,aAAa,GAAG;MAClBziU,QAAQ,EAAE,EADQ;MAElB9+G,IAFkB;MAGlBggC,MAAM,EAAE,KAAKhgC,IAAL,CAAU4xP,SAAS,CAAC5xN,MAAD,CAAnB;IAHU,CAAtB;IAKA,KAAKrjD,GAAL,CAASwJ,GAAT,CAAa6Z,IAAI,CAACyD,KAAlB,EAAyB89a,aAAzB;EACH;;EACDC,gBAAgB,CAAC/9a,KAAD,EAAQq7G,QAAR,EAAkB;IAC9B,MAAM9+G,IAAI,GAAG,KAAKA,IAAL,CAAUyD,KAAV,CAAb;;IACA,IAAI,CAACzD,IAAL,EAAW;MACP;IACH;;IACDA,IAAI,CAAC8+G,QAAL,GAAgBA,QAAhB;EACH;;EACDmxS,cAAc,CAACxsZ,KAAD,EAAQ+jJ,QAAR,EAAkB;IAC5B,MAAMl0F,OAAO,GAAG,KAAKtzD,IAAL,CAAUyD,KAAV,CAAhB;;IACA,IAAI6vD,OAAO,IAAIA,OAAO,CAACtzD,IAAR,CAAawnJ,QAAb,KAA0BA,QAAzC,EAAmD;MAC/C,KAAK7qK,GAAL,CAASma,MAAT,CAAgB2M,KAAhB;;MACA,IAAI6vD,OAAO,CAACtzB,MAAR,IAAkBszB,OAAO,CAACtzB,MAAR,CAAe8+E,QAArC,EAA+C;QAC3CxrD,OAAO,CAACtzB,MAAR,CAAe8+E,QAAf,GAA0BxrD,OAAO,CAACtzB,MAAR,CAAe8+E,QAAf,CAAwBtmH,MAAxB,CAA+BwH,IAAI,IAAIA,IAAI,CAACwnJ,QAAL,KAAkBA,QAAzD,CAA1B;MACH;IACJ;EACJ;;EACDi6R,WAAW,CAACh+a,KAAD,EAAQzD,IAAR,EAAcggC,MAAd,EAAsB;IAC7B,IAAI,CAAChgC,IAAL,EAAW;MACP;IACH;;IACD,KAAKiwZ,cAAL,CAAoBxsZ,KAApB,EAA2BzD,IAAI,CAACwnJ,QAAhC;IACA,KAAKwoQ,YAAL,CAAkBhwZ,IAAlB,EAAwBggC,MAAxB;IACA,KAAK0hZ,WAAL,CAAiB1hb,IAAjB,EAAuBggC,MAAvB;EACH;;EACDwsN,UAAU,CAAC/oP,KAAD,EAAQ;IACd,MAAMzD,IAAI,GAAG,KAAKA,IAAL,CAAUyD,KAAV,CAAb;;IACA,IAAI,CAACzD,IAAL,EAAW;MACP,OAAO,IAAP;IACH;;IACD,OAAO;MACH8+G,QAAQ,EAAE,KAAK6iU,WAAL,CAAiB3hb,IAAI,CAAC8+G,QAAtB,CADP;MAEH9+G,IAAI,EAAEA,IAAI,CAACA,IAFR;MAGHggC,MAAM,EAAEhgC,IAAI,CAACggC;IAHV,CAAP;EAKH;;EACD4hZ,OAAO,CAACn+a,KAAD,EAAQ;IACX,OAAO,KAAK9mB,GAAL,CAASi0B,GAAT,CAAanN,KAAb,CAAP;EACH;;EACDzD,IAAI,CAACyD,KAAD,EAAQ;IACR,OAAO,KAAK9mB,GAAL,CAAS8L,GAAT,CAAagb,KAAb,KAAuB,IAA9B;EACH;;EACDi+a,WAAW,CAAC1hb,IAAD,EAAOggC,MAAP,EAAe;IACtB,IAAIA,MAAJ,EAAY;MACR,MAAM6hZ,UAAU,GAAG,KAAK7hb,IAAL,CAAUggC,MAAM,CAACv8B,KAAjB,CAAnB;MACA,MAAMA,KAAK,GAAG7e,QAAQ,CAACy8b,WAAW,CAAC7oX,IAAZ,CAAiBx4D,IAAI,CAACyD,KAAtB,EAA6B,CAA7B,CAAD,EAAkC,EAAlC,CAAtB;MACAo+a,UAAU,CAAC/iU,QAAX,GAAsB+iU,UAAU,CAAC/iU,QAAX,IAAuB,EAA7C;MACA+iU,UAAU,CAAC/iU,QAAX,CAAoBhuC,MAApB,CAA2BrtE,KAA3B,EAAkC,CAAlC,EAAqCzD,IAArC;IACH;EACJ;;EACD2hb,WAAW,CAAC7iU,QAAQ,GAAG,EAAZ,EAAgB;IACvB,OAAOA,QAAQ,CAACniI,GAAT,CAAa6rH,CAAC,IAAI;MACrB,MAAM;QAAExoG,IAAF;QAAQggC,MAAR;QAAgB8+E;MAAhB,IAA6B,KAAK9+G,IAAL,CAAUwoG,CAAC,CAAC/kG,KAAZ,CAAnC;MACA,OAAO;QACHq7G,QAAQ,EAAE,KAAK6iU,WAAL,CAAiB7iU,QAAjB,CADP;QAEH9+G,IAFG;QAGHggC;MAHG,CAAP;IAKH,CAPM,CAAP;EAQH;;AAzEuB;;AA2E5BshZ,qBAAqB,CAAChic,IAAtB;EAAA,iBAAmHgic,qBAAnH;AAAA;;AACAA,qBAAqB,CAAC5hc,KAAtB,kBAx7BsGg4J,gEAw7BtG;EAAA,OAAuH4pS,qBAAvH;EAAA,SAAuHA,qBAAvH;AAAA;;AACA;EAAA,mDAz7BsG5pS,+DAy7BtG,CAA4F4pS,qBAA5F,EAA+H,CAAC;IACpHvhc,IAAI,EAAE3E,qDAAUA;EADoG,CAAD,CAA/H;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0mc,iBAAN,CAAwB;EACpBrkc,WAAW,CAACk9J,OAAD,EAAUqC,QAAV,EAAoBw3B,cAApB,EAAoC;IAC3C,KAAK75B,OAAL,GAAeA,OAAf;IACA,KAAKqC,QAAL,GAAgBA,QAAhB;IACA,KAAKw3B,cAAL,GAAsBA,cAAtB;IACA;AACR;AACA;;IACQ,KAAK9pK,EAAL,GAAW,IAAG8S,oEAAI,EAAG,EAArB;IACA;AACR;AACA;;IACQ,KAAKumI,QAAL,GAAgB,CAAhB;IACA;AACR;AACA;;IACQ,KAAKh1F,IAAL,GAAY,QAAZ;IACA;AACR;AACA;;IACQ,KAAKgzX,gBAAL,GAAwB,IAAIpqS,uDAAJ,EAAxB;IACA,KAAKqqS,UAAL,GAAkB,MAAlB;EACH,CAtBmB,CAuBpB;EACA;;;EACgB,IAAZC,YAAY,GAAG;IAAE,OAAO,IAAP;EAAc;;EAClB,IAAb3/C,aAAa,GAAG;IAChB,OAAO,KAAK0/C,UAAL,KAAoB,eAA3B;EACH;;EACU,IAAPn0L,OAAO,GAAG;IACV,OAAO,KAAKm0L,UAAL,KAAoB,SAA3B;EACH;;EACkB,IAAfE,eAAe,GAAG;IAClB,OAAQ,cAAa,KAAKnzX,IAAL,GAAYsjI,YAAY,CAAC,UAAD,EAAa,KAAKtjI,IAAlB,CAAxB,GAAkD,EAAG,eAA1E;EACH;;EACD9lE,QAAQ,GAAG;IACP,KAAK+zJ,QAAL,CAAciF,eAAd,CAA8B,KAAKtH,OAAL,CAAauD,aAA3C,EAA0D,UAA1D;EACH;;EACDm9C,SAAS,GAAG;IACR,KAAK2mP,UAAL,GAAkB,KAAK/sM,SAAL,CAAe,KAAKj6F,IAApB,EAA0B,KAAKv3I,KAA/B,CAAlB;EACH;;EACDgiN,YAAY,CAACj4N,CAAD,EAAI;IACZ,MAAM5K,KAAK,GAAG4K,CAAC,CAAC6hB,MAAF,CAASw+O,OAAT,GAAmB,SAAnB,GAA+B,MAA7C,CADY,CAEZ;;IACA,KAAKm0L,UAAL,GAAkBp/b,KAAlB;IACA,KAAK4xL,cAAL,CAAoB/e,aAApB;IACA,KAAKssR,gBAAL,CAAsBr9S,IAAtB,CAA2B9hJ,KAA3B;EACH;;AA/CmB;;AAiDxBk/b,iBAAiB,CAACxic,IAAlB;EAAA,iBAA+Gwic,iBAA/G,EAp/BsGpqS,+DAo/BtG,CAAkJA,qDAAlJ,GAp/BsGA,+DAo/BtG,CAA4KA,oDAA5K,GAp/BsGA,+DAo/BtG,CAAqMA,4DAArM;AAAA;;AACAoqS,iBAAiB,CAAC14b,IAAlB,kBAr/BsGsuJ,+DAq/BtG;EAAA,MAAmGoqS,iBAAnG;EAAA;EAAA;EAAA;IAAA;MAr/BsGpqS,yDAq/BtG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;EAAA;EAAA;EAAA;EAAA;IAAA;MAr/BsGA,4DAs/B9F,eADR;MAr/BsGA,wDA6/B1F;QAAA,OAAU,wBAAV;MAAA,EARZ;MAr/BsGA,0DAs/B9F,EADR;MAr/BsGA,4DA+/B9F,eAVR;MAr/BsGA,oDAmgC7F,GAdT;MAr/BsGA,0DAmgChF,EAdtB;IAAA;;IAAA;MAr/BsGA,wDAw/B1F,qBAHZ;MAr/BsGA,wDAy/B1F,oGAJZ;MAr/BsGA,uDAkgC1F,GAbZ;MAr/BsGA,wDAkgC1F,eAbZ;MAr/BsGA,uDAmgC7F,GAdT;MAr/BsGA,+DAmgC7F,eAdT;IAAA;EAAA;EAAA;AAAA;;AAgBA;EAAA,mDArgCsGA,+DAqgCtG,CAA4FoqS,iBAA5F,EAA2H,CAAC;IAChH/hc,IAAI,EAAExE,oDAD0G;IAEhH2E,IAAI,EAAE,CAAC;MACC4J,QAAQ,EAAE,gBADX;MAECL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAjBmB,CAAD;EAF0G,CAAD,CAA3H,EAqB4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAE23J,oDAAY8L;IAApB,CAA1B,EAAkD;MAAEzjK,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAAlD,CAAP;EAA2F,CArBrI,EAqBuJ;IAAE21R,YAAY,EAAE,CAAC;MACxJlic,IAAI,EAAEi4J,sDADkJ;MAExJ93J,IAAI,EAAE,CAAC,0BAAD;IAFkJ,CAAD,CAAhB;IAGvIwqB,EAAE,EAAE,CAAC;MACL3qB,IAAI,EAAE+3J,gDAAKA;IADN,CAAD,CAHmI;IAKvIm9F,SAAS,EAAE,CAAC;MACZl1P,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAL4H;IAOvIkD,IAAI,EAAE,CAAC;MACPj7J,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAPiI;IASvIr0I,KAAK,EAAE,CAAC;MACR1jB,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CATgI;IAWvIqqS,SAAS,EAAE,CAAC;MACZpic,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAX4H;IAavIiM,QAAQ,EAAE,CAAC;MACXhkK,IAAI,EAAE+3J,gDAAKA;IADA,CAAD,CAb6H;IAevI/oF,IAAI,EAAE,CAAC;MACPhvE,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CAfiI;IAiBvIiqS,gBAAgB,EAAE,CAAC;MACnBhic,IAAI,EAAEg4J,iDAAMA;IADO,CAAD;EAjBqH,CArBvJ;AAAA;;AA0CA,MAAMqqS,SAAS,GAAG,CAAC3+a,KAAD,EAAQ+jJ,QAAR,MAAsB;EAAEA,QAAF;EAAY/jJ;AAAZ,CAAtB,CAAlB;;AACA,IAAIiH,EAAE,GAAG,CAAT;AACA,MAAM23a,cAAc,GAAG,UAAvB;AACA,MAAMC,WAAW,GAAG,QAApB;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,qBAAN,CAA4B;EACxB9kc,WAAW,CAACk9J,OAAD,EAAU6nS,aAAV,EAAyBt4R,iBAAzB,EAA4Cw6C,gBAA5C,EAA8D+9O,aAA9D,EAA6EzlS,QAA7E,EAAuFuhS,EAAvF,EAA2F;IAClG,KAAK5jS,OAAL,GAAeA,OAAf;IACA,KAAK6nS,aAAL,GAAqBA,aAArB;IACA,KAAKt4R,iBAAL,GAAyBA,iBAAzB;IACA,KAAKw6C,gBAAL,GAAwBA,gBAAxB;IACA,KAAK+9O,aAAL,GAAqBA,aAArB;IACA,KAAKzlS,QAAL,GAAgBA,QAAhB;IACA,KAAKuhS,EAAL,GAAUA,EAAV;IACA,KAAKlhS,IAAL,GAAYglS,cAAZ;IACA,KAAKz2L,YAAL,GAAoB,IAApB;IACA,KAAKtgI,UAAL,GAAkB,KAAlB;IACA,KAAKw6D,SAAL,GAAiB,IAAjB;IACA,KAAKr0B,WAAL,GAAmB,OAAnB;IACA,KAAK/mJ,EAAL,GAAUA,EAAE,EAAZ;IACA,KAAKm5D,aAAL,GAAqB,KAArB;IACA,KAAK2xF,aAAL,GAAqB,EAArB;IACA,KAAK7zK,SAAL;EACH;;EACY,IAATszP,SAAS,CAAC4Y,OAAD,EAAU;IACnB,IAAIA,OAAO,KAAK,SAAhB,EAA2B;MACvB,KAAKp8F,WAAL,GAAmB,MAAnB;IACH,CAFD,MAGK,IAAIo8F,OAAO,KAAK,eAAhB,EAAiC;MAClC,KAAKp8F,WAAL,GAAmB,OAAnB;IACH,CAFI,MAGA;MACD,KAAKA,WAAL,GAAmB,OAAnB;IACH;EACJ;;EACa,IAAV26F,UAAU,GAAG;IACb,OAAO,KAAKs2L,WAAL,IAAoB,KAA3B;EACH;;EACa,IAAVt2L,UAAU,CAACA,UAAD,EAAa;IACvB,KAAKs2L,WAAL,GAAmBt2L,UAAnB;EACH;;EACa,IAAV13D,UAAU,GAAG;IACb,OAAO,KAAKiuP,WAAL,IAAoB,KAA3B;EACH;;EACa,IAAVjuP,UAAU,CAACA,UAAD,EAAa;IACvB,KAAKiuP,WAAL,GAAmBjuP,UAAnB;EACH;;EACW,IAARwxF,QAAQ,GAAG;IACX,OAAO,KAAK7oI,IAAL,KAAcilS,WAArB;EACH;;EACW,IAARM,QAAQ,GAAG;IACX,OAAOR,SAAS,CAAC,KAAK3+a,KAAN,EAAa,KAAK+jJ,QAAlB,CAAhB;EACH;;EACiB,IAAdq7R,cAAc,GAAG;IACjB,OAAO,KAAKC,cAAL,GAAsBV,SAAS,CAAC,KAAKvwL,WAAN,EAAmB,KAAKixL,cAAxB,CAA/B,GAAyE,IAAhF;EACH;;EACD75b,QAAQ,GAAG;IACP,IAAI,KAAK2iQ,YAAL,IAAqB,CAAC,KAAKs6B,QAA/B,EAAyC;MACrC,KAAKu8J,aAAL,CAAmBzyB,YAAnB,CAAgC,KAAK4yB,QAArC,EAA+C,KAAKC,cAApD;IACH;;IACD,KAAKE,sBAAL;IACA,KAAKl/W,aAAL,GAAqB,IAArB;IACA,KAAKtpC,YAAL,CAAkB,MAAlB,EAA0B,KAAK8iH,IAA/B;IACA,KAAK2lS,iBAAL;IACA,KAAKC,gBAAL;IACA,KAAKC,cAAL;EACH;;EACD9hS,WAAW,CAACnD,OAAD,EAAU;IACjB,MAAM;MAAEx6I,KAAF;MAAS6nH;IAAT,IAAwB2yB,OAA9B;;IACA,IAAIqmC,0EAAU,CAAC,CAAC,OAAD,EAAU,WAAV,EAAuB,WAAvB,EAAoC,YAApC,EAAkD,YAAlD,EAAgE,YAAhE,EAA8E,YAA9E,CAAD,EAA8FrmC,OAA9F,CAAd,EAAsH;MAClH,KAAK+kS,iBAAL;IACH;;IACD,IAAI13T,UAAJ,EAAgB;MACZ,KAAK23T,gBAAL;IACH;;IACD,IAAI,KAAKr3L,YAAL,IAAqB,CAAC,KAAKs6B,QAA/B,EAAyC;MACrC,KAAKi9J,cAAL,CAAoBllS,OAApB;IACH;;IACD,KAAKmlS,kBAAL,CAAwB3/a,KAAxB;;IACA,IAAI6gL,0EAAU,CAAC,CAAC,YAAD,EAAe,WAAf,CAAD,EAA8BrmC,OAA9B,CAAd,EAAsD;MAClD,KAAKolS,sBAAL;IACH;EACJ;;EACD3hS,WAAW,GAAG;IACV,KAAKwI,iBAAL,CAAuB+lQ,cAAvB,CAAsC,KAAKvlZ,EAA3C,EAA+C,KAAKjH,KAApD;;IACA,IAAI,KAAKmoP,YAAL,IAAqB,CAAC,KAAKs6B,QAA/B,EAAyC;MACrC,KAAKu8J,aAAL,CAAmBxyB,cAAnB,CAAkC,KAAKxsZ,KAAvC,EAA8C,KAAK+jJ,QAAnD;IACH;;IACD,KAAKgO,aAAL,GAAqB,KAAKA,aAAL,CAAmBpiG,MAAnB,CAA0B,CAACg9H,IAAD,EAAOr2L,QAAP,MAAqBA,QAAQ,CAAC+nJ,WAAT,IAAwBsuC,IAA7C,CAA1B,EAA8E,EAA9E,CAArB;EACH;;EACDzuM,SAAS,GAAG;IACR,KAAK6zK,aAAL,GAAqB,CACjB,KAAKtL,iBAAL,CAAuBy1R,KAAvB,CACKh+b,SADL,CACgB2hc,QAAD,IAAc;MACzB,KAAKJ,cAAL;MACA,KAAK//E,SAAL,CAAemgF,QAAQ,CAACh3H,YAAxB;IACH,CAJD,CADiB,EAMjB,KAAKpiK,iBAAL,CAAuBw1R,OAAvB,CACKx8b,IADL,CACUsV,sDAAM,CAAC,CAAC;MAAEiL;IAAF,CAAD,KAAeA,KAAK,KAAK,KAAKA,KAAf,IAAwB,CAAC,KAAK6nH,UAA9C,CADhB,EAEK3pI,SAFL,CAEe,CAAC;MAAE4mM;IAAF,CAAD,KAAgB,KAAKA,MAAL,CAAYA,MAAZ,CAF/B,CANiB,CAArB;EAUH;;EACDw6P,sBAAsB,GAAG;IACrB,KAAK74R,iBAAL,CAAuB8lQ,YAAvB,CAAoC,KAAKtlZ,EAAzC,EAA6C,KAAKjH,KAAlD,EAAyD,KAAK6nH,UAA9D,EAA0E,KAAK46J,QAA/E,EAAyF,KAAKpgG,SAA9F;IACA,KAAKy9P,YAAL;EACH;;EACDA,YAAY,GAAG;IACX,IAAI,KAAKj4T,UAAT,EAAqB;MACjB;IACH;;IACD,MAAM4+B,iBAAiB,GAAG,KAAKA,iBAA/B;IACA,MAAMw6C,gBAAgB,GAAG,KAAKA,gBAA9B;IACA,MAAMjhM,KAAK,GAAG,KAAKA,KAAnB;IACAihM,gBAAgB,CAAC08O,gBAAjB,CAAkC39a,KAAlC,EAAyC,KAAKixL,UAA9C;;IACA,IAAI,CAACxqC,iBAAiB,CAAC6xC,QAAlB,CAA2Bt4L,KAA3B,CAAD,IAAsCihM,gBAAgB,CAACy8O,eAAjB,CAAiC19a,KAAjC,CAA1C,EAAmF;MAC/EymJ,iBAAiB,CAACq2R,aAAlB,CAAgC98a,KAAhC;IACH;EACJ;;EACD8kL,MAAM,CAACi7P,YAAD,EAAe;IACjB,KAAKhB,aAAL,CAAmBgB,YAAY,GAAG,QAAH,GAAc,UAA7C,EAAyD,KAAK//a,KAA9D,EAAqE,KAAK+jJ,QAA1E;EACH;;EACDm+B,WAAW,GAAG;IACV,OAAO,CAAC,KAAKr6D,UAAN,IAAoB,KAAK4+B,iBAAL,CAAuBy7B,WAAvB,CAAmC,KAAKliL,KAAxC,CAA3B;EACH;;EACD0/V,SAAS,CAACsgF,cAAc,GAAG,KAAlB,EAAyB;IAC9B,IAAI,KAAK5/W,aAAL,IAAsB,KAAKqmF,iBAAL,CAAuB6xC,QAAvB,CAAgC,KAAKt4L,KAArC,CAA1B,EAAuE;MACnE,KAAKk3I,OAAL,CAAauD,aAAb,CAA2B7sH,KAA3B,CAAiC;QAAEslU,aAAa,EAAE,CAAC8sF;MAAlB,CAAjC;IACH;EACJ;;EACDN,cAAc,CAACllS,OAAO,GAAG,EAAX,EAAe;IACzB,MAAM;MAAEuJ,QAAF;MAAY/jJ,KAAZ;MAAmBq/a,cAAnB;MAAmCjxL;IAAnC,IAAmD5zG,OAAzD;;IACA,IAAKx6I,KAAK,IAAIA,KAAK,CAACmnT,WAAhB,IAAgC;IAC/B,CAACpjK,QAAD,IAAa,CAAC/jJ,KAAd,IAAuB,CAACq/a,cAAxB,IAA0C,CAACjxL,WADhD,EAC8D;MAC1D;IACH;;IACD,MAAMpiE,QAAQ,GAAG,CAAChsL,KAAK,IAAI,EAAV,EAAck4I,aAAd,IAA+B,KAAKl4I,KAArD;IACA,KAAKg/a,aAAL,CAAmBhB,WAAnB,CAA+BhyP,QAA/B,EAAyC,KAAKmzP,QAA9C,EAAwD,KAAKC,cAA7D;EACH;;EACDO,kBAAkB,CAAC/oI,WAAW,GAAG,EAAf,EAAmB;IACjC,MAAM;MAAEvrJ,YAAF;MAAgB87J,WAAhB;MAA6BjvK;IAA7B,IAA+C0+J,WAArD;;IACA,IAAI,CAACuQ,WAAD,IAAgBnqO,SAAS,CAACquE,YAAD,CAAzB,IAA2CruE,SAAS,CAACk7D,aAAD,CAAxD,EAAyE;MACrE,KAAKuO,iBAAL,CAAuB+lQ,cAAvB,CAAsC,KAAKvlZ,EAA3C,EAA+CixI,aAA/C;MACA,KAAKuO,iBAAL,CAAuB8lQ,YAAvB,CAAoC,KAAKtlZ,EAAzC,EAA6CokJ,YAA7C,EAA2D,KAAKxjC,UAAhE,EAA4E,KAAK46J,QAAjF;IACH;EACJ;;EACDm9J,sBAAsB,GAAG;IACrB,MAAMpmS,OAAO,GAAG,KAAKiN,iBAArB;;IACA,IAAI,KAAK5+B,UAAL,IAAmB,CAAC,KAAKw6D,SAA7B,EAAwC;MACpC7oC,OAAO,CAACujS,eAAR,CAAwB,KAAK/8a,KAA7B,EADoC,CACC;IACxC,CAFD,MAGK;MACDw5I,OAAO,CAACwjS,iBAAR;IACH;;IACDxjS,OAAO,CAACgzQ,cAAR,CAAuB,KAAKvlZ,EAA5B,EAAgC,KAAKjH,KAArC;IACAw5I,OAAO,CAAC+yQ,YAAR,CAAqB,KAAKtlZ,EAA1B,EAA8B,KAAKjH,KAAnC,EAA0C,KAAK6nH,UAA/C,EAA2D,KAAK46J,QAAhE,EAA0E,KAAKpgG,SAA/E;EACH;;EACDk9P,iBAAiB,GAAG;IAChB,KAAKzoZ,YAAL,CAAkB,YAAlB,EAAgC,KAAKgkZ,EAAL,CAAQr3X,KAAR,CAAc,KAAKzjD,KAAnB,EAA0BrE,QAA1B,EAAhC,EADgB,CAEhB;;IACA,KAAKm7B,YAAL,CAAkB,eAAlB,EAAmC,KAAKmpZ,UAAL,GAAkB,KAAKt3L,UAAL,CAAgBhtP,QAAhB,EAAlB,GAA+C,IAAlF;IACA,KAAKm7B,YAAL,CAAkB,eAAlB,EAAmC,KAAKyyP,UAAL,GAAkB,KAAKt4F,UAAL,CAAgBt1L,QAAhB,EAAlB,GAA+C,IAAlF;IACA,KAAKm7B,YAAL,CAAkB,cAAlB,EAAkC,KAAKo0N,SAAL,GAAiB,KAAKl9F,WAAtB,GAAoC,IAAtE;EACH;;EACDwxR,gBAAgB,GAAG;IACf,KAAKU,QAAL,CAAc,YAAd,EAA4B,KAAKr4T,UAAjC;EACH;;EACDq4T,QAAQ,CAACtkT,SAAD,EAAYsuB,MAAZ,EAAoB;IACxB,MAAMrpF,MAAM,GAAGqpF,MAAM,GAAG,UAAH,GAAgB,aAArC;IACA,KAAK3Q,QAAL,CAAc14E,MAAd,EAAsB,KAAKq2E,OAAL,CAAauD,aAAnC,EAAkD7e,SAAlD;EACH;;EACD6jT,cAAc,GAAG;IACb,KAAK3oZ,YAAL,CAAkB,UAAlB,EAA8B,KAAKorJ,WAAL,KAAqB,GAArB,GAA2B,IAAzD;EACH;;EACDprJ,YAAY,CAACgpG,IAAD,EAAOpiJ,KAAP,EAAc;IACtB,IAAI,CAACs/F,SAAS,CAACt/F,KAAD,CAAd,EAAuB;MACnB,KAAK67J,QAAL,CAAciF,eAAd,CAA8B,KAAKtH,OAAL,CAAauD,aAA3C,EAA0D3a,IAA1D;MACA;IACH;;IACD,KAAKyZ,QAAL,CAAcziH,YAAd,CAA2B,KAAKogH,OAAL,CAAauD,aAAxC,EAAuD3a,IAAvD,EAA6DpiJ,KAA7D;EACH;;AA9KuB;;AAgL5Bohc,qBAAqB,CAACjjc,IAAtB;EAAA,iBAAmHijc,qBAAnH,EAxuCsG7qS,+DAwuCtG,CAA0JA,qDAA1J,GAxuCsGA,+DAwuCtG,CAAoLukS,kBAApL,GAxuCsGvkS,+DAwuCtG,CAAmN6Q,iBAAnN,GAxuCsG7Q,+DAwuCtG,CAAiPgrD,gBAAjP,GAxuCsGhrD,+DAwuCtG,CAA8Q4pS,qBAA9Q,GAxuCsG5pS,+DAwuCtG,CAAgTA,oDAAhT,GAxuCsGA,+DAwuCtG,CAAyUwkS,mBAAzU;AAAA;;AACAqG,qBAAqB,CAAC7+R,IAAtB,kBAzuCsGhM,+DAyuCtG;EAAA,MAAuG6qS,qBAAvG;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA,WAzuCsG7qS,kEAyuCtG;AAAA;;AACA;EAAA,mDA1uCsGA,+DA0uCtG,CAA4F6qS,qBAA5F,EAA+H,CAAC;IACpHxic,IAAI,EAAE63J,oDAD8G;IAEpH13J,IAAI,EAAE,CAAC;MAAE4J,QAAQ,EAAE;IAAZ,CAAD;EAF8G,CAAD,CAA/H,EAG4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAEk8b;IAAR,CAA1B,EAAwD;MAAEl8b,IAAI,EAAEwoK;IAAR,CAAxD,EAAqF;MAAExoK,IAAI,EAAE2iN;IAAR,CAArF,EAAiH;MAAE3iN,IAAI,EAAEuhc;IAAR,CAAjH,EAAkJ;MAAEvhc,IAAI,EAAE23J,oDAAY8L;IAApB,CAAlJ,EAA0K;MAAEzjK,IAAI,EAAEm8b;IAAR,CAA1K,CAAP;EAAkN,CAH5P,EAG8Q;IAAE10R,QAAQ,EAAE,CAAC;MAC3QznK,IAAI,EAAE+3J,gDAAKA;IADgQ,CAAD,CAAZ;IAE9Pr0I,KAAK,EAAE,CAAC;MACR1jB,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAFuP;IAI9PgrS,cAAc,EAAE,CAAC;MACjB/ic,IAAI,EAAE+3J,gDAAKA;IADM,CAAD,CAJ8O;IAM9P+5G,WAAW,EAAE,CAAC;MACd9xQ,IAAI,EAAE+3J,gDAAKA;IADG,CAAD,CANiP;IAQ9PuF,IAAI,EAAE,CAAC;MACPt9J,IAAI,EAAE+3J,gDAAKA;IADJ,CAAD,CARwP;IAU9P8zG,YAAY,EAAE,CAAC;MACf7rQ,IAAI,EAAE+3J,gDAAKA;IADI,CAAD,CAVgP;IAY9P62G,SAAS,EAAE,CAAC;MACZ5uQ,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAZmP;IAc9Pk1I,UAAU,EAAE,CAAC;MACbjtS,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAdkP;IAgB9P4rS,UAAU,EAAE,CAAC;MACb3jc,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAhBkP;IAkB9Pm9F,SAAS,EAAE,CAAC;MACZl1P,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAlBmP;IAoB9PxsB,UAAU,EAAE,CAAC;MACbvrI,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CApBkP;IAsB9PguC,SAAS,EAAE,CAAC;MACZ/lM,IAAI,EAAE+3J,gDAAKA;IADC,CAAD,CAtBmP;IAwB9Ps0G,UAAU,EAAE,CAAC;MACbrsQ,IAAI,EAAE+3J,gDAAKA;IADE,CAAD,CAxBkP;IA0B9P48C,UAAU,EAAE,CAAC;MACb30M,IAAI,EAAE+3J,gDAAKA;IADE,CAAD;EA1BkP,CAH9Q;AAAA;AAiCA;AACA;AACA;;;AACA,MAAM8rS,yBAAN,CAAgC;EAC5Bnmc,WAAW,CAAC+kc,aAAD,EAAgBqB,cAAhB,EAAgCz7J,EAAhC,EAAoC;IAC3C,KAAKo6J,aAAL,GAAqBA,aAArB;IACA,KAAKqB,cAAL,GAAsBA,cAAtB;IACA,KAAKz7J,EAAL,GAAUA,EAAV;IACA,KAAK07J,QAAL,GAAgB,KAAhB;EACH;;EACU,IAAPvqM,OAAO,GAAG;IACV,OAAO,KAAKuqM,QAAZ;EACH;;EACU,IAAPvqM,OAAO,CAACp4P,KAAD,EAAQ;IACf,KAAK2ic,QAAL,GAAgB3ic,KAAhB;IACA,KAAKinS,EAAL,CAAQ/7H,YAAR;EACH;;EACDpjK,QAAQ,GAAG;IACP,MAAM86b,oBAAoB,GAAG,KAAKF,cAAL,CACxB5lS,OADwB,CAExB/6J,IAFwB,CAEnBsV,sDAAM,CAACiL,KAAK,IAAIA,KAAK,KAAK,KAAKA,KAAzB,CAFa,CAA7B;IAGA,KAAKy+J,YAAL,GAAoB,KAAKsgR,aAAL,CACfvkS,OADe,CAEf/6J,IAFe,CAEVsV,sDAAM,CAAC,CAAC;MAAEiL;IAAF,CAAD,KAAeA,KAAK,KAAK,KAAKA,KAA/B,CAFI,EAEmCk5J,mDAAG,CAAC,CAAC;MAAE4rB;IAAF,CAAD,KAAgB;MACvE,IAAI,CAACA,MAAD,IAAW,KAAKgxD,OAApB,EAA6B;QACzB,KAAKA,OAAL,GAAe,KAAf;MACH;IACJ,CAJyD,CAFtC,EAMhB/gP,sDAAM,CAAC,CAAC;MAAE+vL;IAAF,CAAD,KAAgBA,MAAjB,CANU,EAMgBzrM,yDAAS,CAACk6K,CAAC,IAAIx6K,wCAAE,CAACw6K,CAAD,CAAF,CAAM9zK,IAAN,CAAWs2E,sDAAK,CAAC,GAAD,CAAhB,EAAuB2hK,0DAAS,CAAC4oN,oBAAD,CAAhC,CAAN,CANzB,EAOfpic,SAPe,CAOL,MAAM,KAAK43P,OAAL,GAAe,IAPhB,CAApB;IAQA,KAAKr3E,YAAL,CAAkBzzG,GAAlB,CAAsBs1X,oBAAoB,CAACpic,SAArB,CAA+B,MAAM,KAAK43P,OAAL,GAAe,KAApD,CAAtB;EACH;;EACD73F,WAAW,GAAG;IACV,IAAI,KAAKwgB,YAAT,EAAuB;MACnB,KAAKA,YAAL,CAAkBpgB,WAAlB;IACH;EACJ;;AAhC2B;;AAkChC8hS,yBAAyB,CAACtkc,IAA1B;EAAA,iBAAuHskc,yBAAvH,EAhzCsGlsS,+DAgzCtG,CAAkKukS,kBAAlK,GAhzCsGvkS,+DAgzCtG,CAAiM2kS,0BAAjM,GAhzCsG3kS,+DAgzCtG,CAAwOA,4DAAxO;AAAA;;AACAksS,yBAAyB,CAAClgS,IAA1B,kBAjzCsGhM,+DAizCtG;EAAA,MAA2GksS,yBAA3G;EAAA;EAAA;EAAA;IAAA;MAjzCsGlsS,yDAizCtG;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA;;AACA;EAAA,mDAlzCsGA,+DAkzCtG,CAA4FksS,yBAA5F,EAAmI,CAAC;IACxH7jc,IAAI,EAAE63J,oDADkH;IAExH13J,IAAI,EAAE,CAAC;MAAE4J,QAAQ,EAAE;IAAZ,CAAD;EAFkH,CAAD,CAAnI,EAG4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAEk8b;IAAR,CAAD,EAA+B;MAAEl8b,IAAI,EAAEs8b;IAAR,CAA/B,EAAqE;MAAEt8b,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAArE,CAAP;EAA8G,CAHxJ,EAG0K;IAAEitF,OAAO,EAAE,CAAC;MACtKx5P,IAAI,EAAEi4J,sDADgK;MAEtK93J,IAAI,EAAE,CAAC,mBAAD;IAFgK,CAAD,CAAX;IAG1JujB,KAAK,EAAE,CAAC;MACR1jB,IAAI,EAAE+3J,gDADE;MAER53J,IAAI,EAAE,CAAC,sBAAD;IAFE,CAAD;EAHmJ,CAH1K;AAAA;AAWA;AACA;AACA;AACA;AACA;;;AACA,MAAM8jc,4BAAN,CAAmC;EAC/Bvmc,WAAW,CAACk9J,OAAD,EAAUuP,iBAAV,EAA6Bw6C,gBAA7B,EAA+C1nD,QAA/C,EAAyD;IAChE,KAAKrC,OAAL,GAAeA,OAAf;IACA,KAAKuP,iBAAL,GAAyBA,iBAAzB;IACA,KAAKw6C,gBAAL,GAAwBA,gBAAxB;IACA,KAAK1nD,QAAL,GAAgBA,QAAhB;IACA,KAAK22N,gBAAL,GAAwB,KAAxB;IACA,KAAKj/K,UAAL,GAAkBA,UAAlB;IACA,KAAKl/B,aAAL,GAAqB,IAAIrc,+CAAJ,EAArB;IACA,KAAKqc,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAKy7F,iBAAL,CAAuBy1R,KAAvB,CAClBh+b,SADkB,CACR,KAAKsic,gBAAL,CAAsBhnb,IAAtB,CAA2B,IAA3B,CADQ,CAAvB;IAEA,KAAKu4J,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAKy7F,iBAAL,CAAuB21R,OAAvB,CAClB38b,IADkB,CACbsV,sDAAM,CAAEiL,KAAD,IAAWA,KAAK,KAAK,KAAKA,KAA3B,CADO,EAElB9hB,SAFkB,CAEP8hB,KAAD,IAAW,KAAKihM,gBAAL,CAAsBz0B,MAAtB,CAA6BxsK,KAA7B,EAAoC,KAAK+jJ,QAAzC,CAFH,CAAvB;IAGA,KAAKgO,aAAL,CAAmB/mG,GAAnB,CAAuB,KAAKi2I,gBAAL,CAAsBzmD,OAAtB,CAClBt8J,SADkB,CACR,MAAM;MACjB,KAAKuic,oBAAL,CAA0B,KAAKxvP,UAAL,CAAgB,KAAKltC,QAArB,EAA+B,KAAK/jJ,KAApC,CAA1B;IACH,CAHsB,CAAvB;EAIH;;EACD29I,WAAW,CAACnD,OAAD,EAAU;IACjB,IAAIA,OAAO,CAAC01N,gBAAZ,EAA8B;MAC1B,KAAKuwE,oBAAL,CAA0B,KAAKvwE,gBAA/B;IACH;;IACD,IAAI11N,OAAO,CAACx6I,KAAZ,EAAmB;MACf,KAAKwgb,gBAAL;IACH;EACJ;;EACDviS,WAAW,GAAG;IACV,KAAK8T,aAAL,CAAmB1T,WAAnB;EACH;;EACDmiS,gBAAgB,GAAG;IACf,KAAK92Q,MAAL,CAAY,KAAKjjB,iBAAL,CAAuB6xC,QAAvB,CAAgC,KAAKt4L,KAArC,CAAZ,EAAyD,SAAzD;EACH;;EACDygb,oBAAoB,CAAC9lS,QAAD,EAAW;IAC3B,KAAK+uB,MAAL,CAAY/uB,QAAZ,EAAsB,YAAtB;EACH;;EACD+uB,MAAM,CAACzqB,QAAD,EAAWrjB,SAAX,EAAsB;IACxB,MAAM/6D,MAAM,GAAGo+E,QAAQ,GAAG,UAAH,GAAgB,aAAvC;IACA,KAAK1F,QAAL,CAAc14E,MAAd,EAAsB,KAAKq2E,OAAL,CAAauD,aAAnC,EAAkD7e,SAAlD;EACH;;AAvC8B;;AAyCnC2kT,4BAA4B,CAAC1kc,IAA7B;EAAA,iBAA0H0kc,4BAA1H,EA32CsGtsS,+DA22CtG,CAAwKA,qDAAxK,GA32CsGA,+DA22CtG,CAAkM6Q,iBAAlM,GA32CsG7Q,+DA22CtG,CAAgOgrD,gBAAhO,GA32CsGhrD,+DA22CtG,CAA6PA,oDAA7P;AAAA;;AACAssS,4BAA4B,CAACtgS,IAA7B,kBA52CsGhM,+DA42CtG;EAAA,MAA8GssS,4BAA9G;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA,WA52CsGtsS,kEA42CtG;AAAA;;AACA;EAAA,mDA72CsGA,+DA62CtG,CAA4FssS,4BAA5F,EAAsI,CAAC;IAC3Hjkc,IAAI,EAAE63J,oDADqH;IAE3H13J,IAAI,EAAE,CAAC;MAAE4J,QAAQ,EAAE;IAAZ,CAAD;EAFqH,CAAD,CAAtI,EAG4B,YAAY;IAAE,OAAO,CAAC;MAAE/J,IAAI,EAAE23J,qDAAaW;IAArB,CAAD,EAA0B;MAAEt4J,IAAI,EAAEwoK;IAAR,CAA1B,EAAuD;MAAExoK,IAAI,EAAE2iN;IAAR,CAAvD,EAAmF;MAAE3iN,IAAI,EAAE23J,oDAAY8L;IAApB,CAAnF,CAAP;EAAoH,CAH9J,EAGgL;IAAEgE,QAAQ,EAAE,CAAC;MAC7KznK,IAAI,EAAE+3J,gDAAKA;IADkK,CAAD,CAAZ;IAEhKr0I,KAAK,EAAE,CAAC;MACR1jB,IAAI,EAAE+3J,gDAAKA;IADH,CAAD,CAFyJ;IAIhK67N,gBAAgB,EAAE,CAAC;MACnB5zX,IAAI,EAAE+3J,gDAAKA;IADQ,CAAD,CAJ8I;IAMhK48C,UAAU,EAAE,CAAC;MACb30M,IAAI,EAAE+3J,gDAAKA;IADE,CAAD;EANoJ,CAHhL;AAAA;;AAaA,MAAMqsS,QAAQ,GAAG,gBAAjB;AACA,MAAMC,QAAQ,GAAG,gBAAjB;AACA,MAAMC,QAAQ,GAAG,gBAAjB;AACA;AACA;AACA;;AACA,MAAMC,sBAAN,CAA6B;EACzB7mc,WAAW,CAAC+kc,aAAD,EAAgBqB,cAAhB,EAAgCU,YAAhC,EAA8CC,qBAA9C,EAAqEt6R,iBAArE,EAAwFu6R,mBAAxF,EAA6GC,sBAA7G,EAAqI/7Q,iBAArI,EAAwJ;IAC/J,KAAK65Q,aAAL,GAAqBA,aAArB;IACA,KAAKqB,cAAL,GAAsBA,cAAtB;IACA,KAAKU,YAAL,GAAoBA,YAApB;IACA,KAAKC,qBAAL,GAA6BA,qBAA7B;IACA,KAAKt6R,iBAAL,GAAyBA,iBAAzB;IACA,KAAKu6R,mBAAL,GAA2BA,mBAA3B;IACA,KAAKC,sBAAL,GAA8BA,sBAA9B;IACA,KAAK/7Q,iBAAL,GAAyBA,iBAAzB;IACA,KAAKg8Q,WAAL,GAAmB,IAAnB;IACA,KAAKtnS,IAAL,GAAY,OAAZ;IACA,KAAKuuG,YAAL,GAAoB,IAApB;IACA,KAAKnkG,SAAL,GAAiB,EAAjB;IACA,KAAK14F,IAAL,GAAY,QAAZ;IACA,KAAK61X,kBAAL,GAA0B,KAA1B;IACA,KAAKC,gBAAL,GAAwB,KAAxB;IACA,KAAK96S,KAAL,GAAa,EAAb;IACA,KAAK+6S,yBAAL,GAAiC,IAAI3rS,+CAAJ,EAAjC;;IACA,KAAK87F,SAAL,GAAiB,MAAM,MAAvB;;IACA,KAAK3pH,UAAL,GAAkB,MAAM,KAAxB;;IACA,KAAK8gI,UAAL,GAAkB,MAAM,KAAxB;;IACA,KAAKtmE,SAAL,GAAiB,MAAM,IAAvB;;IACA,KAAK4O,UAAL,GAAkB,MAAM,KAAxB;;IACA,KAAK51E,QAAL,GAAgB,MAAMtiI,wCAAE,CAAC,EAAD,CAAxB;;IACA,KAAKivQ,WAAL,GAAmB,MAAM,KAAzB;EACH;;EACqB,IAAlBs5L,kBAAkB,GAAG;IACrB,IAAI,CAACtkW,SAAS,CAAC,KAAKukW,eAAN,CAAV,IAAoC,KAAKxmb,IAAL,CAAUpc,MAAV,KAAqB,CAA7D,EAAgE;MAC5D,OAAO,KAAP;IACH;;IACD,OAAO,KAAKkxP,QAAL,GAAgB,KAAK2xM,eAA5B;EACH;;EACW,IAAR3xM,QAAQ,GAAG;IACX,IAAI,CAAC7yJ,SAAS,CAAC,KAAKukW,eAAN,CAAd,EAAsC;MAClC,OAAO,IAAP;IACH;;IACD,OAAO,KAAKA,eAAL,CAAqBE,YAArB,CAAkC,KAAKpC,cAAvC,CAAP;EACH;;EACW,IAARxvM,QAAQ,CAACA,QAAD,EAAW;IACnB,KAAK0xM,eAAL,CAAqBG,YAArB,CAAkC,KAAKrC,cAAvC,EAAuDxvM,QAAvD;EACH;;EACO,IAAJ90O,IAAI,GAAG;IACP,IAAIiiF,SAAS,CAAC,KAAK6yJ,QAAN,CAAb,EAA8B;MAC1B,MAAM8xM,mBAAmB,GAAG,KAAK9xM,QAAL,GAAgB,CAAhB,GAAoB,KAAKA,QAAzB,GAAoC,CAAhE;MACA,OAAO,KAAKvpG,KAAL,CAAWr1E,KAAX,CAAiB,CAAjB,EAAoB0wX,mBAApB,CAAP;IACH;;IACD,OAAO,KAAKr7S,KAAZ;EACH;;EACO,IAAJvrI,IAAI,CAACA,IAAD,EAAO;IACX,KAAKurI,KAAL,GAAavrI,IAAb;IACA,KAAK6mb,mBAAL,CAAyB,KAAK7mb,IAA9B;EACH;;EACsB,IAAnB8mb,mBAAmB,GAAG;IACtB,IAAI,CAAC,KAAKN,eAAV,EAA2B;MACvB,OAAO,IAAP;IACH;;IACD,OAAO,KAAKpzL,SAAL,CAAe,KAAKpzP,IAAL,CAAUpc,MAAzB,CAAP;EACH;EACD;AACJ;AACA;;;EACuB,IAAf6ic,eAAe,GAAG;IAClB,IAAI,CAAC,KAAKD,eAAV,EAA2B;MACvB,OAAO,KAAKxmb,IAAL,CAAUpc,MAAjB;IACH;;IACD,OAAO,KAAK4ic,eAAL,CAAqBO,kBAArB,CAAwC,KAAKzC,cAA7C,EAA6D,KAAK/4S,KAAL,CAAW3nJ,MAAxE,CAAP;EACH;;EACc,IAAXqxT,WAAW,GAAG;IACd,OAAOhzN,SAAS,CAAC,KAAK+kW,eAAN,CAAhB;EACH;;EACDC,UAAU,CAAChib,KAAD,EAAQ+jJ,QAAR,EAAkB+gC,MAAlB,EAA0B;IAChC,IAAIA,MAAJ,EAAY;MACR,KAAKi6P,aAAL,CAAmBj6P,MAAnB,CAA0B9kL,KAA1B,EAAiC+jJ,QAAjC;IACH,CAFD,MAGK;MACD,KAAKg7R,aAAL,CAAmBl2L,QAAnB,CAA4B7oP,KAA5B,EAAmC+jJ,QAAnC;IACH;EACJ;;EACDwmG,SAAS,CAACvqP,KAAD,EAAQ;IACb,KAAKymJ,iBAAL,CAAuBxa,UAAvB,CAAkCjsI,KAAlC;IACA,KAAKymJ,iBAAL,CAAuBq2R,aAAvB,CAAqC98a,KAArC;EACH;;EACDmuP,SAAS,CAACnuP,KAAD,EAAQ;IACb,OAAO,KAAK8gb,YAAL,CAAkB3yL,SAAlB,CAA4BnuP,KAAK,CAACrE,QAAN,EAA5B,EAA8C,KAAKyyP,WAAnD,CAAP;EACH;;EACD6zL,QAAQ,CAACl+R,QAAD,EAAW;IACf,MAAMC,SAAS,GAAGxzE,OAAO,CAAC,KAAKwzE,SAAN,CAAP,GAA0B,KAAKA,SAAL,CAAe,CAAf,CAA1B,GAA8C,KAAKA,SAArE;IACA,OAAOylE,8DAAM,CAACzlE,SAAD,CAAN,CAAkBD,QAAlB,CAAP;EACH;;EACD9F,WAAW,GAAG;IACV,IAAIjhE,SAAS,CAAC,KAAKklW,iBAAN,CAAb,EAAuC;MACnC,KAAKA,iBAAL,CAAuB7jS,WAAvB;IACH;;IACD,IAAIrhE,SAAS,CAAC,KAAKmlW,yBAAN,CAAb,EAA+C;MAC3C,KAAKA,yBAAL,CAA+B9jS,WAA/B;IACH;;IACD,KAAKgjS,yBAAL,CAA+BhjS,WAA/B;EACH;;EACD74J,QAAQ,GAAG;IACP,KAAK48b,sBAAL;IACA,KAAKf,yBAAL,CAA+Br2X,GAA/B,CAAmC,KAAKi2X,sBAAL,CAC9BzmS,OAD8B,CAE9Bt8J,SAF8B,CAEpB,KAAKkkc,sBAAL,CAA4B5ob,IAA5B,CAAiC,IAAjC,CAFoB,CAAnC;IAGA,KAAK6nb,yBAAL,CAA+Br2X,GAA/B,CAAmC,KAAKy7F,iBAAL,CAAuB41R,QAAvB,CAC9B58b,IAD8B,CACzBsV,sDAAM,CAACiL,KAAK,IAAIA,KAAK,KAAK,KAAK6hb,mBAAzB,CADmB,EAE9B3jc,SAF8B,CAEpB,KAAKmkc,aAAL,CAAmB7ob,IAAnB,CAAwB,IAAxB,CAFoB,CAAnC;EAGH;;EACDmkJ,WAAW,CAACnD,OAAD,EAAU;IACjB,IAAIA,OAAO,CAAC4zG,WAAR,IAAuB,KAAKjG,YAAhC,EAA8C;MAC1C,KAAKm6L,eAAL,CAAqB,KAAKC,aAAL,CAAmB,KAAKxnb,IAAxB,CAArB;IACH;EACJ;;EACDktP,aAAa,CAAC1wG,IAAD,EAAOv3I,KAAP,EAAc;IACvB,OAAO,KAAKq7G,QAAL,CAAck8B,IAAd,EACF93J,IADE,CACGrG,2DAAU,CAAC,MAAM;MACvB,KAAKgnc,cAAL,CAAoBvH,YAApB,CAAiC74a,KAAjC;MACA,OAAOhnB,wCAAP;IACH,CAHmB,CADb,EAIHkgL,mDAAG,CAAC,MAAM,KAAKknR,cAAL,CAAoBvH,YAApB,CAAiC74a,KAAjC,CAAP,CAJA,CAAP;EAKH;;EACa,IAAVwib,UAAU,GAAG;IACb,IAAIhyW,OAAO,CAAC,KAAKwzE,SAAN,CAAX,EAA6B;MACzB,OAAO,KAAKA,SAAL,CAAerlK,MAAf,GAAwB,CAAxB,GAA4B,KAAKqlK,SAAL,CAAe/yF,KAAf,CAAqB,CAArB,CAA5B,GAAsD,KAAK+yF,SAAlE;IACH;;IACD,OAAO,CAAC,KAAKA,SAAN,CAAP;EACH;;EACDq+R,aAAa,GAAG;IACZ,IAAIrlW,SAAS,CAAC,KAAKukW,eAAL,CAAqBc,aAAtB,CAAb,EAAmD;MAC/C,KAAKI,cAAL;IACH,CAFD,MAGK;MACD,KAAKC,kBAAL;IACH;EACJ;EACD;AACJ;AACA;;;EACIC,cAAc,CAAC5qP,UAAD,EAAa/3L,KAAb,EAAoB;IAC9B,IAAI+3L,UAAU,KAAK,CAAnB,EAAsB;MAClB,OAAO,KAAKq2D,WAAL,GAAmBwyL,QAAnB,GAA+B,GAAEF,QAAS,IAAGE,QAAS,EAA7D;IACH;;IACD,IAAI5gb,KAAK,KAAK,CAAd,EAAiB;MACb,OAAO0gb,QAAP;IACH;;IACD,IAAI1gb,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG+3L,UAAU,GAAG,CAAtC,EAAyC;MACrC,OAAO4oP,QAAP;IACH;;IACD,OAAO3gb,KAAK,KAAK,KAAKwhb,eAAL,GAAuB,CAAjC,GAAqCZ,QAArC,GAAgDD,QAAvD;EACH;;EACD+B,kBAAkB,GAAG;IACjB,MAAME,0BAA0B,GAAG,KAAKf,mBAAxC;IACA,KAAKhyM,QAAL,IAAiB,KAAK0xM,eAAL,CAAqBsB,kBAArB,CAAwC,KAAKxD,cAA7C,CAAjB;IACA,KAAKuC,mBAAL,CAAyB,KAAK7mb,IAA9B,EAHiB,CAIjB;;IACA,KAAKmqK,iBAAL,CAAuBlT,aAAvB;IACA,KAAK8wR,cAAL,CAAoBF,0BAApB;EACH;;EACDH,cAAc,GAAG;IACb,IAAI,KAAKrB,gBAAT,EAA2B;MACvB;IACH;;IACD,KAAKA,gBAAL,GAAwB,IAAxB;;IACA,IAAIpkW,SAAS,CAAC,KAAKmlW,yBAAN,CAAb,EAA+C;MAC3C,KAAKA,yBAAL,CAA+B9jS,WAA/B;IACH;;IACD,KAAK8jS,yBAAL,GAAiC,KAAKZ,eAAL,CAC5Bc,aAD4B,CACd;MACft+R,QAAQ,EAAE,KAAKs7R,cADA;MAEfjzS,IAAI,EAAE,KAAKrxI,IAAL,CAAUpc,MAFD;MAGfw3J,IAAI,EAAE,KAAKorS,eAAL,CAAqBsB,kBAArB,CAAwC,KAAKxD,cAA7C;IAHS,CADc,EAM5B5/b,IAN4B,CAMvB64b,yDAAQ,CAAC,MAAM,KAAK8I,gBAAL,GAAwB,KAA/B,CANe,EAO5Bljc,SAP4B,CAOlB8rG,KAAK,IAAI;MACpB,IAAI,EAAEhnG,KAAK,CAACwtF,OAAN,CAAcwZ,KAAd,KAAwBA,KAAK,CAACrrG,MAAN,GAAe,CAAzC,CAAJ,EAAiD;QAC7C;MACH;;MACD,MAAMikc,0BAA0B,GAAG,KAAKf,mBAAxC;MACA,KAAKhyM,QAAL,IAAiB7lJ,KAAK,CAACrrG,MAAvB;MACA,KAAKoc,IAAL,GAAY,KAAKA,IAAL,CAAUtP,MAAV,CAAiBu+F,KAAjB,CAAZ;;MACA,IAAI,KAAKy8D,iBAAL,CAAuB6xC,QAAvB,CAAgCsqP,0BAAhC,CAAJ,EAAiE;QAC7D;QACA,KAAK19Q,iBAAL,CAAuBlT,aAAvB;QACA,KAAK8wR,cAAL,CAAoBF,0BAApB;MACH;IACJ,CAnBgC,CAAjC;EAoBH;;EACDN,eAAe,CAACjnU,QAAD,EAAW;IACtB,KAAK0lU,qBAAL,CAA2BhD,gBAA3B,CAA4C,KAAK3vL,WAAjD,EAA8D/yI,QAA9D;EACH;;EACDknU,aAAa,CAACxnb,IAAD,EAAO;IAChB,IAAI,CAAC,KAAKqzP,WAAV,EAAuB;MACnB,OAAO,EAAP;IACH;;IACD,OAAOrzP,IAAI,CAAC7hB,GAAL,CAAS,CAAC6qK,QAAD,EAAWznD,GAAX,MAAoB;MAAEynD,QAAF;MAAY/jJ,KAAK,EAAE,KAAKmuP,SAAL,CAAe7xJ,GAAf;IAAnB,CAApB,CAAT,CAAP;EACH;;EACDymV,kBAAkB,CAAC1nU,QAAD,EAAW;IACzB,IAAI,CAAC,KAAK+yI,WAAV,EAAuB;MACnB;IACH,CAHwB,CAIzB;;;IACA,MAAM40L,eAAe,GAAG3nU,QAAQ,CAACtmH,MAAT,CAAgBwH,IAAI,IAAIA,IAAI,CAACwnJ,QAA7B,CAAxB;IACA,KAAKi9R,mBAAL,CAAyBxD,cAAzB,CAAwC;MAAEz5R,QAAQ,EAAE,KAAKs7R,cAAjB;MAAiCr/a,KAAK,EAAE,KAAKouP;IAA7C,CAAxC,EAAoG40L,eAApG;EACH;;EACDZ,sBAAsB,GAAG;IACrB,IAAI,KAAKF,iBAAT,EAA4B;MACxB,KAAKA,iBAAL,CAAuB7jS,WAAvB;IACH;;IACD,KAAK6jS,iBAAL,GAAyB,KAAK1iN,KAAL,CAAW,KAAK6/M,cAAhB,EAAgC,KAAKjxL,WAArC,EACpBlwQ,SADoB,CACV6c,IAAI,IAAI;MACnB,KAAKA,IAAL,GAAYA,IAAZ;MACA,KAAKomb,kBAAL,GAA0B,IAA1B;IACH,CAJwB,CAAzB;EAKH;;EACD2B,cAAc,CAAC9ib,KAAD,EAAQ;IAClB,IAAI,CAACg9E,SAAS,CAACh9E,KAAD,CAAd,EAAuB;MACnB;IACH,CAHiB,CAIlB;;;IACA,KAAKymJ,iBAAL,CAAuB3E,UAAvB;IACA,KAAK2E,iBAAL,CAAuBq2R,aAAvB,CAAqC98a,KAArC;EACH;;EACD4hb,mBAAmB,CAACpiN,KAAK,GAAG,EAAT,EAAa;IAC5B,MAAMyjN,cAAc,GAAG,KAAKV,aAAL,CAAmB/iN,KAAnB,CAAvB;;IACA,IAAI,KAAK2oB,YAAT,EAAuB;MACnB,KAAKm6L,eAAL,CAAqBW,cAArB;IACH;;IACD,KAAKF,kBAAL,CAAwBE,cAAxB;EACH;;AAnOwB;;AAqO7BpC,sBAAsB,CAAChlc,IAAvB;EAAA,iBAAoHglc,sBAApH,EArmDsG5sS,+DAqmDtG,CAA4JukS,kBAA5J,GArmDsGvkS,+DAqmDtG,CAA2L2kS,0BAA3L,GArmDsG3kS,+DAqmDtG,CAAkOwkS,mBAAlO,GArmDsGxkS,+DAqmDtG,CAAkQ4pS,qBAAlQ,GArmDsG5pS,+DAqmDtG,CAAoS6Q,iBAApS,GArmDsG7Q,+DAqmDtG,CAAkUspS,mBAAlU,GArmDsGtpS,+DAqmDtG,CAAkWskS,6BAAlW,GArmDsGtkS,+DAqmDtG,CAA4YA,4DAA5Y;AAAA;;AACA4sS,sBAAsB,CAACl7b,IAAvB,kBAtmDsGsuJ,+DAsmDtG;EAAA,MAAwG4sS,sBAAxG;EAAA;EAAA;EAAA;IAAA;MAtmDsG5sS,yDAsmDtG;MAtmDsGA,yDAsmDtG;IAAA;EAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA,WAtmDsGA,kEAsmDtG;EAAA;EAAA;EAAA;EAAA;EAAA;IAAA;MAtmDsGA,wDAumD9F,0DADR;MAtmDsGA,wDA4sD9F,yDAtGR;IAAA;;IAAA;MAtmDsGA,wDAwmDzE,kDAF7B;MAtmDsGA,uDA6sDzF,GAvGb;MAtmDsGA,wDA6sDzF,0DAvGb;IAAA;EAAA;EAAA,eAgJ4CoqS,iBAhJ5C,EAgJmNwC,sBAhJnN,EAgJknBz4M,qDAhJlnB,EAgJ4tB02M,qBAhJ5tB,EAgJm+B12M,qDAhJn+B,EAgJ8iCA,kDAhJ9iC,EAgJ+nC+3M,yBAhJ/nC,EAgJ0uCI,4BAhJ1uC,EAgJ23Cn4M,sDAhJ33C,EAgJg8CA,0DAhJh8C,EAgJihDA,8DAhJjhD,EAgJyoDA,6DAhJzoD;EAAA;EAAA;IAAA,WAgJ2sD,CACnsD1sE,6DAAO,CAAC,QAAD,EAAW,CACd+7D,gEAAU,CAAC,WAAD,EAAc,CACpB/gM,2DAAK,CAAC;MAAE3H,MAAM,EAAE;IAAV,CAAD,CADe,EAEpBwnH,6DAAO,CAAC,cAAD,EAAiB7/G,2DAAK,CAAC;MAAE3H,MAAM,EAAE;IAAV,CAAD,CAAtB,CAFa,CAAd,CADI,EAKd0oM,gEAAU,CAAC,WAAD,EAAc,CACpB/gM,2DAAK,CAAC;MAAE3H,MAAM,EAAE;IAAV,CAAD,CADe,EAEpBwnH,6DAAO,CAAC,cAAD,EAAiB7/G,2DAAK,CAAC;MAAE3H,MAAM,EAAE;IAAV,CAAD,CAAtB,CAFa,CAAd,CALI,CAAX,CAD4rD;EAhJ3sD;AAAA;;AA4JA;EAAA,mDAlwDsGklH,+DAkwDtG,CAA4F4sS,sBAA5F,EAAgI,CAAC;IACrHvkc,IAAI,EAAExE,oDAD+G;IAErH2E,IAAI,EAAE,CAAC;MACCk+O,UAAU,EAAE,CACRj/D,6DAAO,CAAC,QAAD,EAAW,CACd+7D,gEAAU,CAAC,WAAD,EAAc,CACpB/gM,2DAAK,CAAC;QAAE3H,MAAM,EAAE;MAAV,CAAD,CADe,EAEpBwnH,6DAAO,CAAC,cAAD,EAAiB7/G,2DAAK,CAAC;QAAE3H,MAAM,EAAE;MAAV,CAAD,CAAtB,CAFa,CAAd,CADI,EAKd0oM,gEAAU,CAAC,WAAD,EAAc,CACpB/gM,2DAAK,CAAC;QAAE3H,MAAM,EAAE;MAAV,CAAD,CADe,EAEpBwnH,6DAAO,CAAC,cAAD,EAAiB7/G,2DAAK,CAAC;QAAE3H,MAAM,EAAE;MAAV,CAAD,CAAtB,CAFa,CAAd,CALI,CAAX,CADC,CADb;MAaC;MACA1oC,QAAQ,EAAE,sBAdX;MAeCL,QAAQ,EAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA/JmB,CAAD;EAF+G,CAAD,CAAhI,EAmK4B,YAAY;IAAE,OAAO,CAAC;MAAE1J,IAAI,EAAEk8b;IAAR,CAAD,EAA+B;MAAEl8b,IAAI,EAAEs8b;IAAR,CAA/B,EAAqE;MAAEt8b,IAAI,EAAEm8b;IAAR,CAArE,EAAoG;MAAEn8b,IAAI,EAAEuhc;IAAR,CAApG,EAAqI;MAAEvhc,IAAI,EAAEwoK;IAAR,CAArI,EAAkK;MAAExoK,IAAI,EAAEihc;IAAR,CAAlK,EAAiM;MAAEjhc,IAAI,EAAEi8b;IAAR,CAAjM,EAA0O;MAAEj8b,IAAI,EAAE23J,4DAAoB4U;IAA5B,CAA1O,CAAP;EAAmR,CAnK7T,EAmK+U;IAAEq4R,WAAW,EAAE,CAAC;MAC/U5kc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AACA;AACA;;;AACA,MAAMiQ,gBAAN,CAAuB;EACnBnmK,WAAW,GAAG;IACV,KAAKomK,SAAL,GAAiB,KAAjB;EACH;EACD;AACJ;AACA;AACA;;;EACI9wH,cAAc,GAAG;IACb,KAAK8wH,SAAL,GAAiB,IAAjB;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIC,kBAAkB,GAAG;IACjB,OAAO,KAAKD,SAAZ;EACH;;AAlBkB;AAqBvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM6zS,UAAN,SAAyB9zS,gBAAzB,CAA0C;EACtC;AACJ;AACA;AACA;EACInmK,WAAW,GAAG;IAAE;EAAU;;AALY;AAQ1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMk6c,UAAN,CAAiB;EACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIl6c,WAAW,CAACk2J,KAAD,EAAQo6P,SAAR,EAAmB5qZ,QAAnB,EAA6B;IACpC,KAAKwwJ,KAAL,GAAaA,KAAb;IACA,KAAKo6P,SAAL,GAAiBA,SAAjB;IACA,KAAK5qZ,QAAL,GAAgBA,QAAhB;EACH;;AAbY;AAgBjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMy0c,UAAN,CAAiB;EACb;AACJ;AACA;AACA;AACA;EACIn6c,WAAW,CAAC6uJ,IAAD,EAAO;IACd,KAAKA,IAAL,GAAYA,IAAZ;EACH;;AARY;AAWjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMm6P,WAAN,SAA0B7iP,gBAA1B,CAA2C;EACvC;AACJ;AACA;AACA;AACA;AACA;EACInmK,WAAW,CAACk2J,KAAD,EAAQztJ,OAAR,EAAiB;IACxB;IACA,KAAKytJ,KAAL,GAAaA,KAAb;IACA,KAAKztJ,OAAL,GAAeA,OAAf;EACH;;AAXsC;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,MAAM2xc,WAAN,CAAkB;EACd;AACJ;AACA;AACA;AACA;EACIp6c,WAAW,CAAC6uJ,IAAD,EAAO;IACd,KAAKA,IAAL,GAAYA,IAAZ;EACH;;AARa;AAWlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMiiC,WAAN,SAA0B3qB,gBAA1B,CAA2C;EACvC;AACJ;AACA;AACA;AACA;EACInmK,WAAW,CAACk2J,KAAD,EAAQ;IACf;IACA,KAAKA,KAAL,GAAaA,KAAb;EACH;;AATsC;AAY3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMmkT,YAAN,SAA2Bl0S,gBAA3B,CAA4C;EACxC;AACJ;AACA;AACA;AACA;AACA;AACA;EACInmK,WAAW,CAACk2J,KAAD,EAAQo6P,SAAR,EAAmB5qZ,QAAnB,EAA6B;IACpC;IACA,KAAKwwJ,KAAL,GAAaA,KAAb;IACA,KAAKo6P,SAAL,GAAiBA,SAAjB;IACA,KAAK5qZ,QAAL,GAAgBA,QAAhB;EACH;;AAbuC;AAgB5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM40c,WAAN,SAA0Bn0S,gBAA1B,CAA2C;EACvC;AACJ;AACA;AACA;AACA;AACA;EACInmK,WAAW,CAACk2J,KAAD,EAAQztJ,OAAR,EAAiB;IACxB;IACA,KAAKytJ,KAAL,GAAaA,KAAb;IACA,KAAKztJ,OAAL,GAAeA,OAAf;EACH;;AAXsC;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,MAAM8xc,mBAAN,CAA0B;EACtB;AACJ;AACA;AACA;AACA;AACA;EACIv6c,WAAW,CAACk2J,KAAD,EAAQskT,eAAR,EAAyB;IAChC,KAAKtkT,KAAL,GAAaA,KAAb;IACA,KAAKskT,eAAL,GAAuBA,eAAvB;EACH;;AAVqB;AAa1B;AACA;AACA;;;AACA,MAAMC,YAAY,GAAG;EACjBC,KAAK,EAAE,CACH,MADG,EACK,MADL,EACa,MADb,EACqB,MADrB,EAC6B,MAD7B,EACqC,MADrC,EAC6C,MAD7C,EACqD,MADrD,EAC6D,MAD7D,EACqE,MADrE,EAC6E,MAD7E,EACqF,MADrF,EAC6F,MAD7F,CADU;EAIjBC,KAAK,EAAE,CACH,MADG,EACK,MADL,EACa,MADb,EACqB,MADrB,EAC6B,MAD7B,EACqC,MADrC,EAC6C,KAD7C,EACoD,OADpD,EAC6D,MAD7D,EACqE,MADrE,EAC6E,MAD7E,EACqF,MADrF,EAC6F,MAD7F,EACqG,KADrG,EAC4G,MAD5G,EACoH,MADpH,EAC4H,MAD5H,CAJU;EAOjBC,KAAK,EAAE,CACH,KADG,EACI,MADJ,EACY,OADZ,EACqB,MADrB,EAC6B,MAD7B,EACqC,MADrC,EAC6C,MAD7C,EACqD,MADrD,EAC6D,MAD7D,EACqE,MADrE,EAC6E,MAD7E,EACqF,OADrF,EAC8F,MAD9F,EACsG,MADtG,EAC8G,KAD9G,EACqH,MADrH,EAC6H,MAD7H,EACqI,OADrI,EAC8I,MAD9I,EAC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hB;;IACA,IAAIu0S,OAAO,CAAC3qT,MAAZ,EAAoB;MAChB,OAAO,CAAC,QAAD,EAAW2qT,OAAX,CAAP;IACH;EACJ;;EACD,OAAO,IAAP;AACH,CARD;;AASA,MAAM5B,KAAK,GAAG,CAACvoT,KAAD,EAAQk3B,MAAM,GAAG,IAAjB,KAA0B1yB,GAAG,IAAK;EAC5C,cAAcg8jB,mBAAmB,CAACxgkB,KAAD,CADW;EAE5C,UAAU8gkB,eAAe,CAAC9gkB,KAAD,EAAQk3B,MAAR,CAFmB;EAG5C,SAASqpiB,cAAc,CAACvgkB,KAAD,CAHqB;EAI5C,QAAQqgkB,aAAa,CAACrgkB,KAAD,CAJuB;EAK5C,QAAQygkB,aAAa,CAACzgkB,KAAD,CALuB;EAM5C,QAAQsgkB,iBAAiB,CAACtgkB,KAAD;AANmB,GAO9CwE,GAP8C,CAAhD;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,MAAMk5jB,yBAAyB,GAAI19jB,KAAD,IAAY4+jB,aAAa,CAAC1+jB,MAAM,CAAC6D,IAAP,CAAY/D,KAAZ,EAC9DjG,GAD8D,CAC1DwuT,KAAK,CAACvoT,KAAD,CADqD,EAE9D4V,MAF8D,CAEvDioF,6CAFuD,CAAD,CAAb,CAE7B9nE,IAF6B,CAExB,GAFwB,C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G,QAAV,CAAnC;IACA,MAAMmxK,UAAU,GAAGluf,+CAAM,CAAC+8U,QAAD,EAAW/G,OAAX,CAAzB;IACA,IAAI07K,WAAW,GAAG,CAAlB;;IACA,IAAID,SAAJ,EAAe;MACX;MACAC,WAAW,GAAGxD,UAAU,GAAG,CAAb,GAAiB,CAAC,CAAlB,GAAsB,CAApC;IACH;;IACD,MAAMyD,OAAO,GAAGtyC,QAAQ,CAACrpI,OAAD,EAAU07K,WAAV,CAAxB;IACA,OAAOrlL,SAAS,CAACiX,WAAV,CAAsBquK,OAAtB,EAA+B50K,QAA/B,CAAP;EACH,CAhEkB,CAiEnB;;EACA;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;EACI;;;EACkB,OAAXuG,WAAW,CAACtN,OAAD,EAAU+G,QAAQ,GAAG,EAArB,EAAyB;IACvC,OAAO,IAAI1Q,SAAJ,CAAc2J,OAAd,EAAuB+G,QAAvB,CAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIzQ,WAAW,GAAG;IACV,OAAOx7M,sDAAS,CAAC,KAAKwgY,UAAN,CAAhB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIv7K,SAAS,GAAG;IACR,OAAOjlN,sDAAS,CAAC,KAAK0gY,QAAN,CAAhB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIZ,UAAU,CAACA,UAAD,EAAa;IACnB,IAAI,KAAK7zK,QAAL,KAAkB6zK,UAAtB,EAAkC;MAC9B,OAAO,KAAK5qkB,KAAL,EAAP;IACH;;IAC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AiB,CAAjB;EACA;;EACA,KAAKzqlB,GAAL,GAAW;EAAE;EAAb;EACA;;EACA,KAAK7kF,KAAL,GAAa,IAAb;EACA;;EACA,KAAKwwqB,SAAL,GAAiB;EAAC;EAAlB;EACA;;EACA,KAAKzI,KAAL,GAAa,CAAb;AACD;AAED;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,SAASgJ,QAAT,GAAoB;EAClB;EACA,KAAKt1kB,IAAL,GAAkB,CAAlB;EACA;;EACA,KAAKz1B,IAAL,GAAkB,CAAlB;EACA;;EACA,KAAKqqmB,MAAL,GAAkB,CAAlB;EACA;;EACA,KAAK37nB,EAAL,GAAkB,CAAlB;EACA;;EACA,KAAK0nQ,KAAL,GAAkB,IAAlB;EACA;;EACA,KAAKk0X,SAAL,GAAkB,CAAlB,CAZkB,CAYG;EACA;EAErB;EACA;EACA;EACA;;EAEA;EACA;;EACA;;EACA,KAAK51qB,IAAL,GAAkB,EAAlB;EACA;EACA;;EACA;;EACA,KAAKyqJ,OAAL,GAAkB,EAAlB;EACA;EACA;;EACA;;EACA,KAAKorhB,IAAL,GAAkB,CAAlB;EACA;;EACA,KAAKzlqB,IAAL,GAAkB,KAAlB;AACD;AAED;;;AAEA,IAAI0R,QAAQ,GAAGtc,MAAM,CAACwJ,SAAP,CAAiB8S,QAAhC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMihI,OAAN,CAAc;EACZ5iJ,WAAW,CAACy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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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAItgO,MAAM,GAAG,SAASA,MAAT,CAAgBmxX,IAAhB,EAAsB;EACjC;EACA;EACA;EACA;EACA;EACA;EACA,KAAKA,IAAL,GAAY,EAAZ;;EACA,KAAK,IAAI57hB,IAAT,IAAiB47hB,IAAjB,EAAuB;IAAE,KAAKA,IAAL,CAAU57hB,IAAV,IAAkB47hB,IAAI,CAAC57hB,IAAD,CAAtB;EAA+B;;EACxD,KAAK47hB,IAAL,CAAUrjZ,KAAV,GAAkB47c,uDAAA,CAAgBv4D,IAAI,CAACrjZ,KAArB,CAAlB;EACA,KAAKqjZ,IAAL,CAAUtxX,KAAV,GAAkB6pb,uDAAA,CAAgBv4D,IAAI,CAACtxX,KAArB,CAAlB,CAViC,CAYjC;EACA;;EACA,KAAK/xB,KAAL,GAAaw3B,QAAQ,CAACy+P,OAAT,CAAiB,KAAKotH,IAAL,CAAUrjZ,KAA3B,EAAkC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AAP,CAAYgtE,iBAAtE,EACE;IAAE,MAAM,IAAInb,UAAJ,CAAe,qEAAf,CAAN;EAA6F;AAClG,EAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC76KA,IAAIytC,cAAc,GAAG,GAArB,EAEA;AACA;AACA;;AACA,IAAIvsC,YAAY,GAAG,SAASA,YAAT,GAAyB,CAAE,CAA9C;;AAEAA,YAAY,CAAC/srB,SAAb,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AChBD;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM28C,gBAAN,CAAuB;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0nT,gBAAN,CAAuB;AAGvB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM3lH,UAAU,GAAG,GAAnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS19L,OAAT,CAAiB7hL,IAAjB,EAAuB2pf,WAAvB,EAAoC;EAChC,OAAO;IAAElnf,IAAI,EAAE;IAAE;IAAV;IAA+CzC,IAA/C;IAAqD2pf,WAArD;IAAkE/7e,OAAO,EAAE;EAA3E,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8uJ,OAAT,CAAiB2glB,OAAjB,EAA0B1qiB,MAAM,GAAG,IAAnC,EAAyC;EACrC,OAAO;IAAElwM,IAAI,EAAE;IAAE;IAAV;IAA+CkwM,MAA/C;IAAuD0qiB;EAAvD,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASxof,KAAT,CAAe7yB,KAAf,EAAsBp0N,OAAO,GAAG,IAAhC,EAAsC;EAClC,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAA6Cu/N,KAA7C;IAAoDp0N;EAApD,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4uJ,QAAT,CAAkBwlE,KAAlB,EAAyBp0N,OAAO,GAAG,IAAnC,EAAyC;EACrC,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAAgDu/N,KAAhD;IAAuDp0N;EAAvD,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASivC,KAAT,CAAe24F,MAAf,EAAuB;EACnB,OAAO;IAAE/yI,IAAI,EAAE;IAAE;IAAV;IAA6CkwM,MAAM,EAAEn9D,MAArD;IAA6D15D,MAAM,EAAE;EAArE,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASx2E,KAAT,CAAetF,IAAf,EAAqB2yM,MAArB,EAA6B/kM,OAA7B,EAAsC;EAClC,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAA6CzC,IAA7C;IAAmD2yM,MAAnD;IAA2D/kM;EAA3D,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+vO,SAAT,CAAmB3b,KAAnB,EAA0B;EACtB,OAAO;IAAEv/N,IAAI,EAAE;IAAE;IAAV;IAAiDu/N;EAAjD,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4b,UAAT,CAAoB0/f,eAApB,EAAqCt7gB,KAArC,EAA4Cp0N,OAAO,GAAG,IAAtD,EAA4D;EACxD,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAAkD+pB,IAAI,EAAE8wtB,eAAxD;IAAyEzhkB,SAAS,EAAEmmD,KAApF;IAA2Fp0N;EAA3F,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASiuK,SAAT,CAAmBmmD,KAAnB,EAA0Bp0N,OAAO,GAAG,IAApC,EAA0C;EACtC,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAAiDo5K,SAAS,EAAEmmD,KAA5D;IAAmEp0N;EAAnE,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2vuB,YAAT,CAAsB3vuB,OAAO,GAAG,IAAhC,EAAsC;EAClC,OAAO;IAAEnL,IAAI,EAAE;IAAE;IAAV;IAAoDmL;EAApD,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4vuB,YAAT,CAAsB3hkB,SAAtB,EAAiCjuK,OAAO,GAAG,IAA3C,EAAiD;EAC7C,OAAO;IAAEnL,IAAI,EAAE;IAAG;IAAX;IAAmDo5K,SAAnD;IAA8DjuK;EAA9D,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4tE,KAAT,CAAehvE,QAAf,EAAyBqvK,SAAzB,EAAoCjuK,OAAO,GAAG,IAA9C,EAAoD;EAChD,OAAO;IAAEnL,IAAI,EAAE;IAAG;IAAX;IAA8C+J,QAA9C;IAAwDqvK,SAAxD;IAAmEjuK;EAAnE,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6uJ,OAAT,CAAiB4glB,OAAjB,EAA0BxhkB,SAA1B,EAAqC;EACjC,OAAO;IAAEp5K,IAAI,EAAE;IAAG;IAAX;IAAgD46uB,OAAhD;IAAyDxhkB;EAAzD,CAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4hkB,iBAAT,CAA2BtypB,EAA3B,EAA+B;EAC3B58E,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsB6B,IAAtB,CAA2B86E,EAA3B;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMuypB,mBAAN,CAA0B;EACtBv9uB,WAAW,CAACghD,QAAQ,GAAG,CAAZ,EAAe+6B,KAAK,GAAG,CAAvB,EAA0B;IACjC,KAAKyhqB,UAAL,GAAkB,EAAlB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAK5+L,QAAL,GAAgB,KAAhB;IACA,KAAKvgE,UAAL,GAAkB,KAAlB;IACA,KAAKynE,SAAL,GAAiB,KAAjB;IACA,KAAKrlQ,SAAL,GAAiB,CAAjB;IACA,KAAKg9b,YAAL,GAAoB,IAApB;IACA,KAAKC,SAAL,GAAiB58rB,QAAQ,G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tD,CAAjB;;IACA+gjB,UAAU,GAAGxL,kCAAkC,CAAC7qlB,OAAD,EAAUq2lB,UAAV,EAAsBvL,cAAtB,CAA/C;IACA,MAAMkf,aAAa,GAAG7B,0BAA0B,CAACnomB,OAAD,EAAUq2lB,UAAV,CAAhD;IACA,OAAO,IAAIyS,mBAAJ,CAAwB9omB,OAAxB,EAAiCq2lB,UAAjC,EAA6CyT,aAA7C,EAA4DE,aAA5D,CAAP;EACH;;AAnDqB;AAsD1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjkJA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAI2B,IAAI,GAAG,IAAX;;AACA,SAASC,MAAT,GAAkB;EACd,OAAOD,IAAP;AACH;;AACD,SAASE,MAAT,CAAgBC,OAAhB,EAAyB;EACrBH,IAAI,GAAGG,OAAP;AACH;;AACD,SAASC,iBAAT,CAA2BD,OAA3B,EAAoC;EAChC,IAAI,CAACH,IAAL,EAAW;IACPA,IAAI,GAAGG,OAAP;EACH;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAME,UAAN,CAAiB;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMjrwB,QAAQ,GAAG,IAAIP,yDAAJ,CAAmB,eAAnB,CAAjB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMyrwB,gBAAN,CAAuB;EACnBC,SAAS,C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MAAM6/jB,cAAN,CAAqB;EACjBr7wB,WAAW,CAACg9M,SAAD,EAAYs+jB,OAAZ,EAAqBt1vB,KAArB,EAA4B6M,KAA5B,EAAmC;IAC1C,KAAKmqL,SAAL,GAAiBA,SAAjB;IACA,KAAKs+jB,OAAL,GAAeA,OAAf;IACA,KAAKt1vB,KAAL,GAAaA,KAAb;IACA,KAAK6M,KAAL,GAAaA,KAAb;EACH;;EACQ,IAALm1I,KAAK,GAAG;IACR,OAAO,KAAKhiJ,KAAL,KAAe,CAAtB;EACH;;EACO,IAAJiiJ,IAAI,GAAG;IACP,OAAO,KAAKjiJ,KAAL,KAAe,KAAK6M,KAAL,GAAa,CAAnC;EACH;;EACO,IAAJqqL,IAAI,GAAG;IACP,OAAO,KAAKl3L,KAAL,GAAa,CAAb,KAAmB,CAA1B;EACH;;EACM,IAAHm3L,GAAG,GAAG;IACN,OAAO,CAAC,KAAKD,IAAb;EACH;;AAlBgB;AAoBrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM9yC,OAAN,CAAc;EACVpqK,WAAW,CAACq9M,cAAD,EAAiBC,SAAjB,EAA4BC,QAA5B,EAAsC;IAC7C,KAAKF,cAAL,GAAsBA,cAAtB;IACA,KAAKC,SAAL,GAAiBA,SAAjB;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKg+jB,QAAL,GAAgB,IAAhB;IAC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A0D;MAAEloK,IAAI,EAAE23J,0DAAkBikD;IAA1B,CAA1D,CAAP;EAAiG,CAH3I,EAG6J;IAAEo9jB,OAAO,EAAE,CAAC;MACzJh5wB,IAAI,EAAE+3J,gDAAKA;IAD8I,CAAD,CAAX;IAE7IohnB,YAAY,EAAE,CAAC;MACfn5wB,IAAI,EAAE+3J,gDAAKA;IADI,CAAD,CAF+H;IAI7IshnB,aAAa,EAAE,CAAC;MAChBr5wB,IAAI,EAAE+3J,gDAAKA;IADK,CAAD;EAJ8H,CAH7J;AAAA;;AAUA,SAASyhnB,eAAT,CAAyBxgkB,IAAzB,EAA+BnqD,MAA/B,EAAuC;EACnCmqD,IAAI,CAAClyH,OAAL,CAAa4zH,SAAb,GAAyB7rD,MAAM,CAAC5uI,IAAhC;AACH;;AACD,SAASounB,WAAT,CAAqBruoB,IAArB,EAA2B;EACvB,OAAOA,IAAI,CAAC,MAAD,CAAJ,IAAgB,OAAOA,IAA9B;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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4BAAnB,CAAnC,EACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM++W,QAAN,CAAe;EACXz8W,WAAW,CAACk8W,MAAD,EAASska,eAAT,EAA0B;IACjC,KAAKtka,MAAL,GAAcA,MAAd;IACA,KAAKska,eAAL,GAAuBA,eAAvB;EACH;;EACDn7nB,SAAS,CAAC3hJ,KAAD,EAAQ6hL,MAAM,GAAG,YAAjB,EAA+BmzO,QAA/B,EAAyCx8C,MAAzC,EAAiD;IACtD,IAAIx4W,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA3B,IAAiCA,KAAK,KAAKA,KAA/C,EACI,OAAO,IAAP;;IACJ,IAAI;MAAA;;MACA,OAAOq2M,UAAU,CAACr2M,KAAD,EAAQ6hL,MAAR,EAAgB22L,MAAM,IA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AS,CAAG;EACrB;AACJ;AACA;;;EACIinsB,iBAAiB,GAAG;IAChB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EACH;EACD;AACJ;AACA;;;EACIE,gBAAgB,CAAClmuB,QAAD,EAAW,CAAG;EAC9B;AACJ;AACA;;;EACImmuB,cAAc,CAAC9wmB,MAAD,EAAS,CAAG;EAC1B;AACJ;AACA;;;EACIkxmB,2BAA2B,CAACC,iBAAD,EAAoB,CAAG;;AAtB3B;AAyB3B;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMgB,UAAN,CAAiB;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC72KA;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,MAAMa,WAAN,CAAkB;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAN,CAAkB;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMxsU,WAAN,CAAkB;EACd;EACA14c,WAAW,CAACyI,OAAD,EAAU;IACjB;AACR;AACA;AACA;IACQ,KAAK08wB,eAAL,GAAuB,IAAIlxwB,GAAJ,EAAvB;IACA;AACR;AACA;;IACQ,KAAKmxwB,UAAL,GAAkB,IAAlB;;IACA,IAAI,CAAC38wB,OAAL,EAAc;MACV,KAAKA,OAAL,GAAe,IAAIwL,GAAJ,EAAf;IACH,CAFD,MAGK,IAAI,OAAOxL,OAAP,KAAmB,QAAvB,EAAiC;MAClC,KAAK48wB,QAAL,GAAgB,MAAM;QAClB,KAAK58wB,OAAL,GAAe,IA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,SAASihxB,OAAT,CAAiBz6wB,OAAjB,EAA0B2C,IAA1B,EAAgC;EAC5B,OAAO;IACHA,IADG;IAEH3H,OAAO,EAAEgF,OAAO,CAAChF,OAFd;IAGH2gF,OAAO,EAAE37E,OAAO,CAAC27E,OAHd;IAIHmiH,OAAO,EAAE99L,OAAO,CAAC89L,OAJd;IAKHt4J,MAAM,EAAExlC,OAAO,CAACwlC,MALb;IAMHyva,cAAc,EAAEj1c,OAAO,CAACi1c,cANrB;IAOHn0U,YAAY,EAAE9gI,OAAO,CAAC8gI,YAPnB;IAQHqwU,eAAe,EAAEnxc,OAAO,CAACmxc;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,MAAMyE,UAAN,CAAiB;EACbrjd,WAAW,CAACw0H,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;;;EACI5zH,OAAO,CAAConK,KAAD,EAAQ5jK,GAAR,EAAaqJ,OAAO,GAAG,EAAvB,EAA2B;IAC9B,IAAI1F,GAAJ,CAD8B,CAE9B;;IACA,IAAIigK,KAAK,YAAY2wS,WAArB,EAAkC;MAC9B;MACA;MACA5wc,GAAG,GAAGigK,KAAN;IACH,CAJD,MAKK;MACD;MACA;MACA;MACA;MACA,IAAIv/J,OAAO,GAAGlG,SAAd;;MACA,IAAIkL,OAAO,CAAChF,OAAR,YAA2Biwc,WAA/B,EAA4C;QACxCjwc,OAAO,GAAGgF,OAAO,CAAChF,OAAlB;MACH,CAFD,MAGK;QACD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;AACH;;AACD,SAASy6uB,oBAAT,GAAgC;EAC5B,OAAON,gBAAgB,CAACC,MAAjB,CAAwBM,iBAA/B;AACH;;AACD,SAASC,yBAAT,GAAqC;EACjCR,gBAAgB,CAACC,MAAjB,CAAwBM,iBAAxB;AACH;;AACD,SAASE,yBAAT,GAAqC;EACjCT,gBAAgB,CAACC,MAAjB,CAAwBM,iBAAxB;AACH;;AACD,SAASG,kBAAT,GAA8B;EAC1B,OAAOV,gBAAgB,CAACG,eAAxB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASQ,gBAAT,GAA4B;EACxBX,gBAAgB,CAACG,eAAjB,GAAmC,IAAnC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASS,iBAAT,GAA6B;EACzBZ,gBAAgB,CAACG,eAAjB,GAAmC,KAAnC;AACH;AACD;AACA;AACA;;;AACA,SAASU,QAAT,GAAoB;EAChB,OAAOb,gBAAgB,CAACC,MAAjB,CAAwB9E,KAA/B;AACH;AACD;AACA;AACA;;;AACA,SAAS2F,QAAT,GAAoB;EAChB,OAAOd,gBAAgB,CAACC,MAAjB,CAAwB5L,KAA/B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0M,aAAT,CAAuBC,aAAvB,EAAsC;EAClChB,gBAAgB,CAACC,MAAjB,CAAwBgB,YAAxB,GAAuCD,aAAvC;EACA,OAAOA,aAAa,CAAC3H,OAAD,CAApB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6H,WAAT,CAAqBl6xB,KAArB,EAA4B;EACxBg5xB,gBAAgB,CAACC,MAAjB,CAAwBgB,YAAxB,GAAuC,IAAvC;EACA,OAAOj6xB,KAAP;AACH;;AACD,SAASm6xB,eAAT,GAA2B;EACvB,IAAIC,YAAY,GAAGC,4BAA4B,EAA/C;;EACA,OAAOD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AAkB,GAAG,CAAC,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,mBAAN,CAA0B;EACtBjjyB,WAAW;EACX;AACJ;AACA;EACIoC,OAJW;EAKX;AACJ;AACA;EACI8gyB,cARW,EAQKC,oBARL,EAQ2B;IAClC,KAAK/gyB,OAAL,GAAeA,OAAf;IACA;AACR;AACA;AACA;;IACQ,KAAKghyB,SAAL,GAAiB,KAAjB;IACA1gyB,SAAS,IAAI+rxB,aAAa,CAACrsxB,OAAD,EAAU,uBAAV,CAA1B;IACAM,SAAS,IAAIwrxB,WAAW,CAAC,OAAO9rxB,OAAR,EAAiB,UAAjB,EAA6B,4BAA7B,CAAxB;IACA,KAAKihyB,mBAAL,GAA2BH,cAA3B;IACA,KAAKI,UAAL,GAAkBH,oBAAlB;EACH;;AApBqB;;AAsB1B,SAASI,SAAT,CAAmBpwuB,GAAnB,EAAwB;EACpB,OAAOA,GAAG,YAAY8vuB,mBAAtB;AACH,EACD;AACA;;;AACA,MAAMO,+BAA+B,GAAG,CAAxC;AAEA;AACA;AACA;AACA;;AACA,SAASC,mBAAT,CAA6BC,SAA7B,EAAwC;EACpC,IAAI9isB,IAAI,GAAG,EAAX;EACC8isB,SAAS,GAAG;EAAE;EAAf,IAAyC9isB,IAAI,IAAI,OAAjD;EACC8isB,SAAS,GAAG;EAAE;EAAf,IAA4C9isB,I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;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;EACkB,OAAPpjzB,OAAO,CAAC1B,SAAD,EAAY;IACtB,OAAOokzB,0BAA0B,CAACpkzB,SAAD,CAAjC;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EAC2B,OAAhB+kzB,gBAAgB,CAAC/kzB,SAAD,EAAY41C,MAAZ,EAAoB;IACvC,MAAMovwB,2BAA2B,GAAGF,kBAAkB,CAACpjzB,OAAnB,CAA2B1B,SAA3B,CAApC;IACA,OAAO8kzB,kBAAkB,CAACG,qBAAnB,CAAyCD,2BAAzC,EAAsEpvwB,MAAtE,CAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACgC,OAArBqvwB,qBAAqB,CAACjlzB,SAAD,EAAY41C,MAAZ,EAAoB;IAC5C,OAAO,IAAIsvwB,mBAAJ,CAAwBllzB,SAAxB,EAAmC41C,MAAnC,CAAP;EACH;;AAzFoB;;AA2FzB,MAAMsvwB,mBAAN,CAA0B;EACtB;AACJ;AACA;EACI7xzB,WAAW,CAAC8xzB,UAAD,EAAa58L,OAAb,EAAsB;IAC7B;IACA,KAAK68L,oBAAL,GAA4B,CAA5B;IACA,KAAKD,UAAL,GAAkBA,UAAlB;IACA,KAAKvvwB,MAAL,GAAc2ykB,OAAO,IAAI,IAAzB;IACA,MAAMjqgB,GAAG,GAAG6msB,UAAU,CAACntzB,MAAvB;IACA,KAAKqtzB,MAAL,GAAc,EAAd;IACA,KAAKC,IAAL,GAAY,EAAZ;;IACA,KAAK,IAAI9izB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG87G,GAApB,EAAyB97G,CAAC,EAA1B,EAA8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A;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIC,mEAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,qBAAT,CAA+BnyC,KAA/B,EAAsCzO,KAAtC,EAA6C6gD,qBAA7C,EAAoE3rzB,KAApE,EAA2E4rzB,aAA3E,EAA0FC,cAA1F,EAA0G;EACtGnv0B,SAAS,IAAIo2xB,qBAAqB,CAAC0E,QAAQ,EAAT,CAAlC;EACA,IAAIs0C,SAAS,GAAGD,cAAc,GAAG/gD,KAAK,CAAC0nC,aAAT,GAAyB1nC,KAAK,CAAC2nC,aAA7D;EACA,IAAIsZ,QAAQ,GAAG5c,oBAAoB,CAAC2c,SAAD,CAAnC;EACA,IAAIE,QAAQ,GAAGxc,oBAAoB,CAACsc,SAAD,CAAnC;EACAvyC,KAAK,CAACv5wB,KAAD,CAAL,GAAe2rzB,qBAAf;EACA,IAAIM,sBAAsB,GAAG,KAA7B;EACA,IAAIC,WAAJ;;EACA,IAAIlp0B,KAAK,CAACwtF,OAAN,CAAcm7uB,qBAAd,CAAJ,EAA0C;IACtC;IACA,MAAMQ,mBAAmB,GAAGR,qBAA5B;IACAO,WAAW,GAAGC,mBAAmB,CAAC,CAAD,CAAjC,CAHsC,CAGA;IACtC;;IACA,IAAID,WAAW,KAAK,IAAhB,IACA7kC,oBAAoB,CAAC8kC,mBAAD,EAAsBD,WAAtB,CAApB,GAAyD,CAD7D,EACgE;MAC5D;MACAD,sBAAsB,GAAG,IAAzB;IACH;EACJ,CAVD,MAWK;IACDC,WAAW,GAAGP,qBAAd;EACH;;EACD,IAAIC,aAAJ,EAAmB;IACf;IACA;IACA,MAAMQ,mBAAmB,GAAGJ,QAAQ,KAAK,CAAzC,CAHe,CAIf;IACA;;IACA,IAAII,mBAAJ,EAAyB;MACrB;MACA,MAAM1hF,YAAY,GAAGykE,oBAAoB,CAAC51B,KAAK,CAACwyC,QAAQ,GAAG,CAAZ,CAAN,CAAzC;MACAxyC,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmBkvyB,eAAe,CAACxkE,YAAD,EAAeqhF,QAAf,CAAlC,CAHqB,CAIrB;MACA;;MACA,IAAIrhF,YAAY,KAAK,CAArB,EAAwB;QACpB;QACA6uC,KAAK,CAAC7uC,YAAY,GAAG,CAAhB,CAAL,GACI+kE,oBAAoB,CAACl2B,KAAK,CAAC7uC,YAAY,GAAG,CAAhB,CAAN,EAA0B1quB,KAA1B,CADxB;MAEH,CAVoB,CAWrB;;;MACAu5wB,KAAK,CAACwyC,QAAQ,GAAG,CAAZ,CAAL,GAAsBzc,oBAAoB,CAAC/1B,KAAK,CAACwyC,QAAQ,GAAG,CAAZ,CAAN,EAAsB/rzB,KAAtB,CAA1C;IACH,CAbD,MAcK;MACDu5wB,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmBkvyB,eAAe,CAAC6c,QAAD,EAAW,CAAX,CAAlC,CADC,CAED;MACA;;MACA,IAAIA,QAAQ,KAAK,CAAjB,EAAoB;QAChB;QACAxyC,KAAK,CAACwyC,QAAQ,GAAG,CAAZ,CAAL,GAAsBtc,oBAAoB,CAACl2B,KAAK,CAACwyC,QAAQ,GAAG,CAAZ,CAAN,EAAsB/rzB,KAAtB,CAA1C;MACH,CAPA,CAQD;;;MACA+rzB,QAAQ,GAAG/rzB,KAAX;IACH;EACJ,CA/BD,MAgCK;IACD;IACA;IACAu5wB,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmBkvyB,eAAe,CAAC8c,QAAD,EAAW,CAAX,CAAlC;IACAtv0B,SAAS,IACLwrxB,WAAW,CAAC6jD,QAAQ,KAAK,CAAb,IAAkBC,QAAQ,KAAK,CAAhC,EAAmC,KAAnC,EAA0C,6DAA1C,CADf;;IAEA,IAAID,QAAQ,KAAK,CAAjB,EAAoB;MAChBA,QAAQ,GAAG/rzB,KAAX;IACH,CAFD,MAGK;MACD;MACAu5wB,KAAK,CAACyyC,QAAQ,GAAG,CAAZ,CAAL,GAAsBvc,oBAAoB,CAACl2B,KAAK,CAACyyC,QAAQ,GAAG,CAAZ,CAAN,EAAsBhszB,KAAtB,CAA1C;IACH;;IACDgszB,QAAQ,GAAGhszB,KAAX;EACH,CApEqG,CAqEtG;EACA;;;EACA,IAAIiszB,sBAAJ,EAA4B;IACxB1yC,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmBuvyB,6BAA6B,CAACh2B,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAN,CAAhD;EACH;;EACDqszB,cAAc,CAAC9yC,KAAD,EAAQ2yC,WAAR,EAAqBlszB,KAArB,EAA4B,IAA5B,EAAkC6rzB,cAAlC,CAAd;EACAQ,cAAc,CAAC9yC,KAAD,EAAQ2yC,WAAR,EAAqBlszB,KAArB,EAA4B,KAA5B,EAAmC6rzB,cAAnC,CAAd;EACAS,8BAA8B,CAACxhD,KAAD,EAAQohD,WAAR,EAAqB3yC,KAArB,EAA4Bv5wB,KAA5B,EAAmC6rzB,cAAnC,CAA9B;EACAC,SAAS,GAAG5c,eAAe,CAAC6c,QAAD,EAAWC,QAAX,CAA3B;;EACA,IAAIH,cAAJ,EAAoB;IAChB/gD,KAAK,CAAC0nC,aAAN,GAAsBsZ,SAAtB;EACH,CAFD,MAGK;IACDhhD,KAAK,CAAC2nC,aAAN,GAAsBqZ,SAAtB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASQ,8BAAT,CAAwCxhD,KAAxC,EAA+CohD,WAA/C,EAA4D3yC,KAA5D,EAAmEv5wB,KAAnE,EAA0E6rzB,cAA1E,EAA0F;EACtF,MAAMU,QAAQ,GAAGV,cAAc,GAAG/gD,KAAK,CAACynC,eAAT,GAA2BznC,KAAK,CAACunC,cAAhE;;EACA,IAAIka,QAAQ,IAAI;EAAK;EAAjB,GAAuC,OAAOL,WAAP,IAAsB,QAA7D,IACA7kC,oBAAoB,CAACklC,QAAD,EAAWL,WAAX,CAApB,IAA+C,CADnD,EACsD;IAClD;IACA3yC,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmB2vyB,6BAA6B,CAACp2B,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAN,CAAhD;EACH;AACJ;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,SAASqszB,cAAT,CAAwB9yC,KAAxB,EAA+B2yC,WAA/B,EAA4ClszB,KAA5C,EAAmDwszB,SAAnD,EAA8DX,cAA9D,EAA8E;EAC1E,MAAMY,eAAe,GAAGlzC,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAA7B;EACA,MAAM0szB,KAAK,GAAGR,WAAW,KAAK,IAA9B;EACA,IAAIxzoB,MAAM,GAAG8zoB,SAAS,GAAGrd,oBAAoB,CAACsd,eAAD,CAAvB,GAA2Cjd,oBAAoB,CAACid,eAAD,CAArF;EACA,IAAIE,cAAc,GAAG,KAArB,CAJ0E,CAK1E;EACA;EACA;EACA;EACA;;EACA,OAAOj0oB,MAAM,KAAK,CAAX,KAAiBi0oB,cAAc,KAAK,KAAnB,IAA4BD,KAA7C,CAAP,EAA4D;IACxDhw0B,SAAS,IAAIksxB,kBAAkB,CAAC2Q,KAAD,EAAQ7gmB,MAAR,CAA/B;IACA,MAAMk0oB,qBAAqB,GAAGrzC,KAAK,CAAC7gmB,MAAD,CAAnC;IACA,MAAMm0oB,mBAAmB,GAAGtzC,KAAK,CAAC7gmB,MAAM,GAAG,CAAV,CAAjC;;IACA,IAAIo0oB,cAAc,CAACF,qBAAD,EAAwBV,WAAxB,CAAlB,EAAwD;MACpDS,cAAc,GAAG,IAAjB;MACApzC,KAAK,CAAC7gmB,MAAM,GAAG,CAAV,CAAL,GAAoB8zoB,SAAS,GAAG7c,6BAA6B,CAACkd,mBAAD,CAAhC,GACzBtd,6BAA6B,CAACsd,mBAAD,CADjC;IAEH;;IACDn0oB,MAAM,GAAG8zoB,SAAS,GAAGrd,oBAAoB,CAAC0d,mBAAD,CAAvB,GACdrd,oBAAoB,CAACqd,mBAAD,CADxB;EAEH;;EACD,IAAIF,cAAJ,EAAoB;IAChB;IACApzC,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAAL,GAAmBwszB,SAAS,GAAGjd,6BAA6B,CAACkd,eAAD,CAAhC,GACxB9c,6BAA6B,CAAC8c,eAAD,CADjC;EAEH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASK,cAAT,CAAwBC,iBAAxB,EAA2Cb,WAA3C,EAAwD;EACpDxv0B,SAAS,IACLyrxB,cAAc,CAACnlxB,KAAK,CAACwtF,OAAN,CAAc07uB,WAAd,CAAD,EAA6B,IAA7B,EAAmC,kDAAnC,CADlB;;EAEA,IAAIa,iBAAiB,KAAK,IAAtB,IAA8B;EAC9B;EACAb,WAAW,IAAI,IAFf,IAEuB;EACvB;EACA,CAAClp0B,KAAK,CAACwtF,OAAN,CAAcu8uB,iBAAd,IAAmCA,iBAAiB,CAAC,CAAD,CAApD,GAA0DA,iBAA3D,MACIb,WALR,CAKoB;EALpB,EAME;IACE,OAAO,IAAP;EACH,CARD,MASK,IAAIlp0B,KAAK,CAACwtF,OAAN,CAAcu8uB,iBAAd,KAAoC,OAAOb,WAAP,KAAuB,QAA/D,EAAyE;IAC1E;IACA;IACA,OAAO7kC,oBAAoB,CAAC0lC,iBAAD,EAAoBb,WAApB,CAApB,IACH,CADJ,CAH0E,CAInE;EACV;;EACD,OAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMc,WAAW,GAAG;EAChBC,OAAO,EAAE,CADO;EAEhBtp0B,GAAG,EAAE,CAFW;EAGhBup0B,MAAM,EAAE,CAHQ;EAIhBxv0B,KAAK,EAAE,CAJS;EAKhBkohB,QAAQ,EAAE;AALM,CAApB;AAOA;AACA;AACA;AACA;;AACA,SAASunT,gBAAT,CAA0BvyuB,IAA1B,EAAgC;EAC5B,OAAOA,IAAI,CAAC/0E,SAAL,CAAemnzB,WAAW,CAACrp0B,GAA3B,EAAgCqp0B,WAAW,CAACE,MAA5C,CAAP;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASE,kBAAT,CAA4BxyuB,IAA5B,EAAkC;EAC9B,OAAOA,IAAI,CAAC/0E,SAAL,CAAemnzB,WAAW,CAACtv0B,KAA3B,EAAkCsv0B,WAAW,CAACpnT,QAA9C,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASynT,cAAT,CAAwBzyuB,IAAxB,EAA8B;EAC1B0yuB,gBAAgB,CAAC1yuB,IAAD,CAAhB;EACA,OAAO2yuB,kBAAkB,CAAC3yuB,IAAD,EAAO4yuB,iBAAiB,CAAC5yuB,IAAD,EAAO,CAAP,EAAUoyuB,WAAW,CAACC,OAAtB,CAAxB,CAAzB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,kBAAT,CAA4B3yuB,IAA5B,EAAkC56E,KAAlC,EAAyC;EACrC,MAAMspE,GAAG,GAAG0jvB,WAAW,CAACC,OAAxB;;EACA,IAAI3jvB,GAAG,KAAKtpE,KAAZ,EAAmB;IACf,OAAO,CAAC,CAAR;EACH;;EACDA,KAAK,GAAGgtzB,WAAW,CAACE,MAAZ,GAAqBO,iBAAiB,CAAC7yuB,IAAD,EAAOoyuB,WAAW,CAACrp0B,GAAZ,GAAkBqc,KAAzB,EAAgCspE,GAAhC,CAA9C;EACA,OAAOkkvB,iBAAiB,CAAC5yuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,CAAxB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASw7iB,UAAT,CAAoBlqiB,IAApB,EAA0B;EACtB0yuB,gBAAgB,CAAC1yuB,IAAD,CAAhB;EACA,OAAO8yuB,cAAc,CAAC9yuB,IAAD,EAAO4yuB,iBAAiB,CAAC5yuB,IAAD,EAAO,CAAP,EAAUoyuB,WAAW,CAACC,OAAtB,CAAxB,CAArB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASS,cAAT,CAAwB9yuB,IAAxB,EAA8B60J,UAA9B,EAA0C;EACtC,MAAMnmK,GAAG,GAAG0jvB,WAAW,CAACC,OAAxB;EACA,IAAIjtzB,KAAK,GAAGgtzB,WAAW,CAACrp0B,GAAZ,GAAkB6p0B,iBAAiB,CAAC5yuB,IAAD,EAAO60J,UAAP,EAAmBnmK,GAAnB,CAA/C;;EACA,IAAIA,GAAG,KAAKtpE,KAAZ,EAAmB;IACf;IACA,OAAO,CAAC,CAAR;EACH;;EACDA,KAAK,GAAGgtzB,WAAW,CAACE,MAAZ,GAAqBS,eAAe,CAAC/yuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,CAA5C;EACAtpE,KAAK,GAAG4tzB,gBAAgB,CAAChzuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,EAAmB;EAAG;EAAtB,CAAxB;EACAtpE,KAAK,GAAGgtzB,WAAW,CAACtv0B,KAAZ,GAAoB8v0B,iBAAiB,CAAC5yuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,CAA7C;EACAtpE,KAAK,GAAGgtzB,WAAW,CAACpnT,QAAZ,GAAuBioT,iBAAiB,CAACjzuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,CAAhD;EACA,OAAOskvB,gBAAgB,CAAChzuB,IAAD,EAAO56E,KAAP,EAAcspE,GAAd,EAAmB;EAAG;EAAtB,CAAvB;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASgkvB,gBAAT,CAA0B1yuB,IAA1B,EAAgC;EAC5BoyuB,WAAW,CAACrp0B,GAAZ,GAAkB,CAAlB;EACAqp0B,WAAW,CAACE,MAAZ,GAAqB,CAArB;EACAF,WAAW,CAACtv0B,KAAZ,GAAoB,CAApB;EACAsv0B,WAAW,CAACpnT,QAAZ,GAAuB,CAAvB;EACAonT,WAAW,CAACC,OAAZ,GAAsBryuB,IAAI,CAACj8F,MAA3B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6u0B,iBAAT,CAA2B5yuB,IAA3B,EAAiC60J,UAAjC,EAA6C66C,QAA7C,EAAuD;EACnD,OAAO76C,UAAU,GAAG66C,QAAb,IAAyB1vM,IAAI,CAAC/+D,UAAL,CAAgB4zN,UAAhB,KAA+B;EAAG;EAAlE,EAAwF;IACpFA,UAAU;EACb;;EACD,OAAOA,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASg+kB,iBAAT,CAA2B7yuB,IAA3B,EAAiC60J,UAAjC,EAA6C66C,QAA7C,EAAuD;EACnD,OAAO76C,UAAU,GAAG66C,QAAb,IAAyB1vM,IAAI,CAAC/+D,UAAL,CAAgB4zN,UAAhB,IAA8B;EAAG;EAAjE,EAAuF;IACnFA,UAAU;EACb;;EACD,OAAOA,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASk+kB,eAAT,CAAyB/yuB,IAAzB,EAA+B60J,UAA/B,EAA2C66C,QAA3C,EAAqD;EACjD,IAAI66T,EAAJ;;EACA,OAAO11W,UAAU,GAAG66C,QAAb,KACF,CAAC66T,EAAE,GAAGvqgB,IAAI,CAAC/+D,UAAL,CAAgB4zN,UAAhB,CAAN,MAAuC;EAAG;EAA1C,GAAiE01W,EAAE,KAAK;EAAG;EAA3E,GACI,CAACA,EAAE,GAAG,CAAC;EAAG;EAAV,KAAwC;EAAG;EAA3C,GAA+D,CAACA,EAAE,GAAG,CAAC;EAAG;EAAV,KAAwC;EAAG;EAD9G,GAEIA,EAAE,IAAI;EAAG;EAAT,GAAgCA,EAAE,IAAI;EAAG;EAH3C,CAAP,EAGyE;IACrE11W,UAAU;EACb;;EACD,OAAOA,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASm+kB,gBAAT,CAA0BhzuB,IAA1B,EAAgC60J,UAAhC,EAA4C66C,QAA5C,EAAsDgoD,SAAtD,EAAiE;EAC7D7iG,UAAU,GAAG+9kB,iBAAiB,CAAC5yuB,IAAD,EAAO60J,UAAP,EAAmB66C,QAAnB,CAA9B;;EACA,IAAI76C,UAAU,GAAG66C,QAAjB,EAA2B;IACvB,IAAI5tS,SAAS,IAAIk+F,IAAI,CAAC/+D,UAAL,CAAgB4zN,UAAhB,MAAgC6iG,SAAjD,EAA4D;MACxDw7e,mBAAmB,CAAClzuB,IAAD,EAAOx+D,MAAM,CAACC,YAAP,CAAoBi2T,SAApB,CAAP,EAAuC7iG,UAAvC,CAAnB;IACH;;IACDA,UAAU;EACb;;EACD,OAAOA,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASo+kB,iBAAT,CAA2BjzuB,IAA3B,EAAiC60J,UAAjC,EAA6C66C,QAA7C,EAAuD;EACnD,IAAIyjiB,GAAG,GAAG,CAAC,CAAX,CADmD,CACrC;;EACd,IAAIC,GAAG,GAAG,CAAC,CAAX,CAFmD,CAErC;;EACd,IAAIC,GAAG,GAAG,CAAC,CAAX,CAHmD,CAGrC;;EACd,IAAI9k0B,CAAC,GAAGsmP,UAAR;EACA,IAAIy+kB,WAAW,GAAG/k0B,CAAlB;;EACA,OAAOA,CAAC,GAAGmhS,QAAX,EAAqB;IACjB,MAAM66T,EAAE,GAAGvqgB,IAAI,CAAC/+D,UAAL,CAAgB1yB,CAAC,EAAjB,CAAX;;IACA,IAAIg8lB,EAAE,KAAK;IAAG;IAAd,EAAyC;MACrC,OAAO+oO,WAAP;IACH,CAFD,MAGK,IAAI/oO,EAAE,KAAK;IAAG;IAAV,GAAyCA,EAAE,KAAK;IAAG;IAAvD,EAAoF;MACrF+oO,WAAW,GAAG/k0B,CAAC,GAAGgl0B,iBAAiB,CAACvzuB,IAAD,EAAOuqgB,EAAP,EAAWh8lB,CAAX,EAAcmhS,QAAd,CAAnC;IACH,CAFI,MAGA,IAAI76C,UAAU,KACftmP,CAAC,GAAG,CADC,IACI;IACT8k0B,GAAG,KAAK;IAAG;IAFN,GAGLD,GAAG,KAAK;IAAG;IAHN,GAG0BD,GAAG,KAAK;IAAG;IAHrC,GAGyD5oO,EAAE,KAAK;IAAG;IAHvE,EAGkG;MACnG+oO,WAAW,GAAG/k0B,CAAC,GAAGgl0B,iBAAiB,CAACvzuB,IAAD,EAAO;MAAG;MAAV,EAAsCzxF,CAAtC,EAAyCmhS,QAAzC,CAAnC;IACH,CALI,MAMA,IAAI66T,EAAE,GAAG;IAAG;IAAZ,EAAkC;MACnC;MACA+oO,WAAW,GAAG/k0B,CAAd;IACH;;IACD8k0B,GAAG,GAAGD,GAAN;IACAA,GAAG,GAAGD,GAAN;IACAA,GAAG,GAAG5oO,EAAE,GAAG,CAAC;IAAG;IAAf;EACH;;EACD,OAAO+oO,WAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,iBAAT,CAA2BvzuB,IAA3B,EAAiCwzuB,aAAjC,EAAgD3+kB,UAAhD,EAA4D66C,QAA5D,EAAsE;EAClE,IAAIyjiB,GAAG,GAAG,CAAC,CAAX,CADkE,CACpD;;EACd,IAAI/tzB,KAAK,GAAGyvO,UAAZ;;EACA,OAAOzvO,KAAK,GAAGsqR,QAAf,EAAyB;IACrB,MAAM66T,EAAE,GAAGvqgB,IAAI,CAAC/+D,UAAL,CAAgB7b,KAAK,EAArB,CAAX;;IACA,IAAImllB,EAAE,IAAIipO,aAAN,IAAuBL,GAAG,KAAK;IAAG;IAAtC,EAAiE;MAC7D,OAAO/tzB,KAAP;IACH;;IACD,IAAImllB,EAAE,IAAI;IAAG;IAAT,GAAsC4oO,GAAG,KAAK;IAAG;IAArD,EAAgF;MAC5E;MACA;MACAA,GAAG,GAAG,CAAN;IACH,CAJD,MAKK;MACDA,GAAG,GAAG5oO,EAAN;IACH;EACJ;;EACD,MAAMzomB,SAAS,GAAGox0B,mBAAmB,CAAClzuB,IAAD,EAAOx+D,MAAM,CAACC,YAAP,CAAoB+xyB,aAApB,CAAP,EAA2C9jiB,QAA3C,CAAtB,GACX,IAAIvyQ,KAAJ,EADJ;AAEH;;AACD,SAAS+1yB,mBAAT,CAA6BlzuB,IAA7B,EAAmCyzuB,SAAnC,EAA8CruzB,KAA9C,EAAqD;EACjDtjB,SAAS,IAAIwrxB,WAAW,CAAC,OAAOttrB,IAAP,KAAgB,QAAjB,EAA2B,IAA3B,EAAiC,sBAAjC,CAAxB;EACA,MAAMliB,UAAU,CAAE,+BAA8B14D,KAAM,cAArC,GAAqD46E,IAAI,CAAC/0E,SAAL,CAAe,CAAf,EAAkB7F,KAAlB,CAArD,GAAgF,KAAhF,GACb46E,IAAI,CAAC/0E,SAAL,CAAe7F,KAAf,EAAsBA,KAAK,GAAG,CAA9B,CADa,GACsB,KADtB,GAC8B46E,IAAI,CAAC3pB,KAAL,CAAWjxD,KAAK,GAAG,CAAnB,CAD9B,GAEZ,iBAAgBquzB,SAAU,IAFf,CAAhB;AAGH;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,SAASC,WAAT,CAAqBrnuB,IAArB,EAA2BvpG,KAA3B,EAAkCs7N,MAAlC,EAA0C;EACtCu1mB,oBAAoB,CAACtnuB,IAAD,EAAOvpG,KAAP,EAAcs7N,MAAd,EAAsB,KAAtB,CAApB;EACA,OAAOs1mB,WAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,WAAT,CAAqB5yrB,SAArB,EAAgCl+I,KAAhC,EAAuC;EACnC6w0B,oBAAoB,CAAC3yrB,SAAD,EAAYl+I,KAAZ,EAAmB,IAAnB,EAAyB,IAAzB,CAApB;EACA,OAAO8w0B,WAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,UAAT,CAAoBjioB,MAApB,EAA4B;EACxBkioB,eAAe,CAACC,qBAAD,EAAwBC,iBAAxB,EAA2CpioB,MAA3C,EAAmD,KAAnD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoioB,iBAAT,CAA2BxnC,aAA3B,EAA0CxssB,IAA1C,EAAgD;EAC5C,KAAK,IAAIzxF,CAAC,GAAG27nB,UAAU,CAAClqiB,IAAD,CAAvB,EAA+BzxF,CAAC,IAAI,CAApC,EAAuCA,CAAC,GAAGuk0B,cAAc,CAAC9yuB,IAAD,EAAOzxF,CAAP,CAAzD,EAAoE;IAChEwl0B,qBAAqB,CAACvnC,aAAD,EAAgB+lC,gBAAgB,CAACvyuB,IAAD,CAAhC,EAAwCwyuB,kBAAkB,CAACxyuB,IAAD,CAA1D,CAArB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASi0uB,UAAT,CAAoB7zqB,OAApB,EAA6B;EACzB0zqB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsC9zqB,OAAtC,EAA+C,IAA/C,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8zqB,iBAAT,CAA2B1nC,aAA3B,EAA0CxssB,IAA1C,EAAgD;EAC5C,KAAK,IAAIzxF,CAAC,GAAGkk0B,cAAc,CAACzyuB,IAAD,CAA3B,EAAmCzxF,CAAC,IAAI,CAAxC,EAA2CA,CAAC,GAAGok0B,kBAAkB,CAAC3yuB,IAAD,EAAOzxF,CAAP,CAAjE,EAA4E;IACxEg+xB,gBAAgB,CAACC,aAAD,EAAgB+lC,gBAAgB,CAACvyuB,IAAD,CAAhC,EAAwC,IAAxC,CAAhB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2zuB,oBAAT,CAA8BtnuB,IAA9B,EAAoCvpG,KAApC,EAA2Cs7N,MAA3C,EAAmD8mlB,YAAnD,EAAiE;EAC7D,MAAMjuB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMxM,KAAK,GAAGyM,QAAQ,EAAtB,CAF6D,CAG7D;EACA;EACA;;EACA,MAAMmB,YAAY,GAAGG,qBAAqB,CAAC,CAAD,CAA1C;;EACA,IAAI/N,KAAK,CAACgI,eAAV,EAA2B;IACvBg8C,sBAAsB,CAAChkD,KAAD,EAAQ9jrB,IAAR,EAAc0xrB,YAAd,EAA4BmnB,YAA5B,CAAtB;EACH;;EACD,IAAIpizB,KAAK,KAAKolzB,SAAV,IAAuBgiB,cAAc,CAACjzC,KAAD,EAAQ8G,YAAR,EAAsBj7xB,KAAtB,CAAzC,EAAuE;IACnE,MAAMotxB,KAAK,GAAGC,KAAK,CAAChwwB,IAAN,CAAW8/wB,gBAAgB,EAA3B,CAAd;IACAm0C,aAAa,CAACjkD,KAAD,EAAQD,KAAR,EAAe+G,KAAf,EAAsBA,KAAK,CAAC3B,QAAD,CAA3B,EAAuCjprB,IAAvC,EAA6C4qrB,KAAK,CAAC8G,YAAY,GAAG,CAAhB,CAAL,GAA0Bs2C,eAAe,CAACvx0B,KAAD,EAAQs7N,MAAR,CAAtF,EAAuG8mlB,YAAvG,EAAqHnnB,YAArH,CAAb;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+1C,eAAT,CAAyBvnC,gBAAzB,EAA2C+nC,YAA3C,EAAyDxx0B,KAAzD,EAAgEoizB,YAAhE,EAA8E;EAC1E,MAAM/0B,KAAK,GAAGyM,QAAQ,EAAtB;EACA,MAAMmB,YAAY,GAAGG,qBAAqB,CAAC,CAAD,CAA1C;;EACA,IAAI/N,KAAK,CAACgI,eAAV,EAA2B;IACvBg8C,sBAAsB,CAAChkD,KAAD,EAAQ,IAAR,EAAc4N,YAAd,EAA4BmnB,YAA5B,CAAtB;EACH;;EACD,MAAMjuB,KAAK,GAAG0F,QAAQ,EAAtB;;EACA,IAAI75xB,KAAK,KAAKolzB,SAAV,IAAuBgiB,cAAc,CAACjzC,KAAD,EAAQ8G,YAAR,EAAsBj7xB,KAAtB,CAAzC,EAAuE;IACnE;IACA;IACA,MAAMotxB,KAAK,GAAGC,KAAK,CAAChwwB,IAAN,CAAW8/wB,gBAAgB,EAA3B,CAAd;;IACA,IAAIs0C,qBAAqB,CAACrkD,KAAD,EAAQg1B,YAAR,CAArB,IAA8C,CAACsvB,gBAAgB,CAACrkD,KAAD,EAAQ4N,YAAR,CAAnE,EAA0F;MACtF,IAAIj8xB,SAAJ,EAAe;QACX;QACA;QACA,MAAMwv0B,WAAW,GAAGnhD,KAAK,CAAChwwB,IAAN,CAAW49wB,YAAX,CAApB;QACAzQ,WAAW,CAACllxB,KAAK,CAACwtF,OAAN,CAAc07uB,WAAd,IAA6BA,WAAW,CAAC,CAAD,CAAxC,GAA8CA,WAA/C,EAA4D,KAA5D,EAAmE,gEAAnE,CAAX;MACH,CANqF,CAOtF;MACA;MACA;MACA;MACA;MACA;MACA;;;MACA,IAAImD,YAAY,GAAGvvB,YAAY,GAAGh1B,KAAK,CAACwnC,kBAAT,GAA8BxnC,KAAK,CAACsnC,iBAAnE;MACA11zB,SAAS,IAAIojzB,YAAY,KAAK,KAA9B,IAAuCuvB,YAAY,KAAK,IAAxD,IACInnD,WAAW,CAACmnD,YAAY,CAAC/8vB,QAAb,CAAsB,GAAtB,CAAD,EAA6B,IAA7B,EAAmC,4CAAnC,CADf;;MAEA,IAAI+8vB,YAAY,KAAK,IAArB,EAA2B;QACvB;QACA3x0B,KAAK,GAAGyoxB,sBAAsB,CAACkpD,YAAD,EAAe3x0B,KAAK,GAAGA,KAAH,GAAW,EAA/B,CAA9B;MACH,CApBqF,CAqBtF;MACA;;;MACAqq0B,qCAAqC,CAACh9C,KAAD,EAAQD,KAAR,EAAe+G,KAAf,EAAsBn0xB,KAAtB,EAA6BoizB,YAA7B,CAArC;IACH,CAxBD,MAyBK;MACDwvB,gBAAgB,CAACvkD,KAAD,EAAQD,KAAR,EAAe+G,KAAf,EAAsBA,KAAK,CAAC3B,QAAD,CAA3B,EAAuC2B,KAAK,CAAC8G,YAAY,GAAG,CAAhB,CAA5C,EAAgE9G,KAAK,CAAC8G,YAAY,GAAG,CAAhB,CAAL,GAA0B42C,sBAAsB,CAACpoC,gBAAD,EAAmB+nC,YAAnB,EAAiCxx0B,KAAjC,CAAhH,EAAyJoizB,YAAzJ,EAAuKnnB,YAAvK,CAAhB;IACH;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASy2C,gBAAT,CAA0BrkD,KAA1B,EAAiC4N,YAAjC,EAA+C;EAC3C;EACA,OAAOA,YAAY,IAAI5N,KAAK,CAACsI,iBAA7B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS07C,sBAAT,CAAgChkD,KAAhC,EAAuCmhD,WAAvC,EAAoDvzC,YAApD,EAAkEmnB,YAAlE,EAAgF;EAC5EpjzB,SAAS,IAAIo2xB,qBAAqB,CAAC/H,KAAD,CAAlC;EACA,MAAMwO,KAAK,GAAGxO,KAAK,CAAChwwB,IAApB;;EACA,IAAIw+wB,KAAK,CAACZ,YAAY,GAAG,CAAhB,CAAL,KAA4B,IAAhC,EAAsC;IAClC;IACA;IACA;IACA;IACA;IACA,MAAM7N,KAAK,GAAGyO,KAAK,CAACsB,gBAAgB,EAAjB,CAAnB;IACAn+xB,SAAS,IAAI+rxB,aAAa,CAACqC,KAAD,EAAQ,gBAAR,CAA1B;IACA,MAAM0kD,cAAc,GAAGJ,gBAAgB,CAACrkD,KAAD,EAAQ4N,YAAR,CAAvC;;IACA,IAAIw2C,qBAAqB,CAACrkD,KAAD,EAAQg1B,YAAR,CAArB,IAA8CosB,WAAW,KAAK,IAA9D,IAAsE,CAACsD,cAA3E,EAA2F;MACvF;MACA;MACA;MACA;MACAtD,WAAW,GAAG,KAAd;IACH;;IACDA,WAAW,GAAGuD,sBAAsB,CAACl2C,KAAD,EAAQzO,KAAR,EAAeohD,WAAf,EAA4BpsB,YAA5B,CAApC;IACA4rB,qBAAqB,CAACnyC,KAAD,EAAQzO,KAAR,EAAeohD,WAAf,EAA4BvzC,YAA5B,EAA0C62C,cAA1C,EAA0D1vB,YAA1D,CAArB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2vB,sBAAT,CAAgCl2C,KAAhC,EAAuCzO,KAAvC,EAA8C4kD,UAA9C,EAA0D5vB,YAA1D,EAAwE;EACpE,MAAM6vB,gBAAgB,GAAGr2C,sBAAsB,CAACC,KAAD,CAA/C;EACA,IAAIgzC,QAAQ,GAAGzsB,YAAY,GAAGh1B,KAAK,CAACynC,eAAT,GAA2BznC,KAAK,CAACunC,cAA5D;;EACA,IAAIsd,gBAAgB,KAAK,IAAzB,EAA+B;IAC3B;IACA;IACA;IACA;IACA,MAAMC,mCAAmC,GAAG,CAAC9vB,YAAY,GAAGh1B,KAAK,CAAC0nC,aAAT,GAAyB1nC,KAAK,CAAC2nC,aAA5C,MAA+D,CAA3G;;IACA,IAAImd,mCAAJ,EAAyC;MACrC;MACA;MACA;MACAF,UAAU,GAAGG,4BAA4B,CAAC,IAAD,EAAOt2C,KAAP,EAAczO,KAAd,EAAqB4kD,UAArB,EAAiC5vB,YAAjC,CAAzC;MACA4vB,UAAU,GAAGI,wBAAwB,CAACJ,UAAD,EAAa5kD,KAAK,CAAC/ygB,KAAnB,EAA0B+niB,YAA1B,CAArC,CALqC,CAMrC;;MACAysB,QAAQ,GAAG,IAAX;IACH;EACJ,CAfD,MAgBK;IACD;IACA;IACA,MAAMxa,oBAAoB,GAAGjnC,KAAK,CAACinC,oBAAnC;IACA,MAAMge,sCAAsC,GAAGhe,oBAAoB,KAAK,CAAC,CAA1B,IAA+Bx4B,KAAK,CAACw4B,oBAAD,CAAL,KAAgC4d,gBAA9G;;IACA,IAAII,sCAAJ,EAA4C;MACxCL,UAAU,GACNG,4BAA4B,CAACF,gBAAD,EAAmBp2C,KAAnB,EAA0BzO,KAA1B,EAAiC4kD,UAAjC,EAA6C5vB,YAA7C,CADhC;;MAEA,IAAIysB,QAAQ,KAAK,IAAjB,EAAuB;QACnB;QACA;QACA;QACA;QACA;QACA;QACA,IAAIyD,kBAAkB,GAAGC,0BAA0B,CAAC12C,KAAD,EAAQzO,KAAR,EAAeg1B,YAAf,CAAnD;;QACA,IAAIkwB,kBAAkB,KAAKzz0B,SAAvB,IAAoCyG,KAAK,CAACwtF,OAAN,CAAcw/uB,kBAAd,CAAxC,EAA2E;UACvE;UACA;UACA;UACAA,kBAAkB,GAAGH,4BAA4B,CAAC,IAAD,EAAOt2C,KAAP,EAAczO,KAAd,EAAqBklD,kBAAkB,CAAC,CAAD;UAAI;UAA3C,EAA0ElwB,YAA1E,CAAjD;UACAkwB,kBAAkB,GACdF,wBAAwB,CAACE,kBAAD,EAAqBllD,KAAK,CAAC/ygB,KAA3B,EAAkC+niB,YAAlC,CAD5B;UAEAowB,0BAA0B,CAAC32C,KAAD,EAAQzO,KAAR,EAAeg1B,YAAf,EAA6BkwB,kBAA7B,CAA1B;QACH;MACJ,CAjBD,MAkBK;QACD;QACA;QACA;QACA;QACA;QACAzD,QAAQ,GAAG4D,eAAe,CAAC52C,KAAD,EAAQzO,KAAR,EAAeg1B,YAAf,CAA1B;MACH;IACJ;EACJ;;EACD,IAAIysB,QAAQ,KAAKhw0B,SAAjB,EAA4B;IACxBujzB,YAAY,GAAIh1B,KAAK,CAACynC,eAAN,GAAwBga,QAA5B,GAAyCzhD,KAAK,CAACunC,cAAN,GAAuBka,QAA5E;EACH;;EACD,OAAOmD,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASO,0BAAT,CAAoC12C,KAApC,EAA2CzO,KAA3C,EAAkDg1B,YAAlD,EAAgE;EAC5D,MAAM/kH,QAAQ,GAAG+kH,YAAY,GAAGh1B,KAAK,CAAC0nC,aAAT,GAAyB1nC,KAAK,CAAC2nC,aAA5D;;EACA,IAAIjD,oBAAoB,CAACz0H,QAAD,CAApB,KAAmC,CAAvC,EAA0C;IACtC;IACA,OAAOx+rB,SAAP;EACH;;EACD,OAAOg9xB,KAAK,CAAC41B,oBAAoB,CAACp0H,QAAD,CAArB,CAAZ;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASm1I,0BAAT,CAAoC32C,KAApC,EAA2CzO,KAA3C,EAAkDg1B,YAAlD,EAAgEosB,WAAhE,EAA6E;EACzE,MAAMnxI,QAAQ,GAAG+kH,YAAY,GAAGh1B,KAAK,CAAC0nC,aAAT,GAAyB1nC,KAAK,CAAC2nC,aAA5D;EACA/1zB,SAAS,IACLyrxB,cAAc,CAACqnC,oBAAoB,CAACz0H,QAAD,CAArB,EAAiC,CAAjC,EAAoC,0DAApC,CADlB;EAEAw+F,KAAK,CAAC41B,oBAAoB,CAACp0H,QAAD,CAArB,CAAL,GAAwCmxI,WAAxC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASiE,eAAT,CAAyB52C,KAAzB,EAAgCzO,KAAhC,EAAuCg1B,YAAvC,EAAqD;EACjD,IAAIysB,QAAQ,GAAGhw0B,SAAf;EACA,MAAMs/xB,YAAY,GAAG/Q,KAAK,CAAC+Q,YAA3B;EACAn/xB,SAAS,IACLyrxB,cAAc,CAAC2C,KAAK,CAACinC,oBAAP,EAA6B,CAAC,CAA9B,EAAiC,8GAAjC,CADlB,CAHiD,CAKjD;EACA;;EACA,KAAK,IAAI5ozB,CAAC,GAAG,IAAI2hxB,KAAK,CAACinC,oBAAvB,EAA6C5ozB,CAAC,GAAG0yxB,YAAjD,EAA+D1yxB,CAAC,EAAhE,EAAoE;IAChE,MAAM4uQ,KAAK,GAAGwhhB,KAAK,CAACpwxB,CAAD,CAAL,CAASmkxB,SAAvB;IACAi/C,QAAQ,GAAGuD,wBAAwB,CAACvD,QAAD,EAAWx0jB,KAAX,EAAkB+niB,YAAlB,CAAnC;EACH;;EACD,OAAOgwB,wBAAwB,CAACvD,QAAD,EAAWzhD,KAAK,CAAC/ygB,KAAjB,EAAwB+niB,YAAxB,CAA/B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+vB,4BAAT,CAAsCF,gBAAtC,EAAwDp2C,KAAxD,EAA+DzO,KAA/D,EAAsE4kD,UAAtE,EAAkF5vB,YAAlF,EAAgG;EAC5F;EACA;EACA,IAAIswB,gBAAgB,GAAG,IAAvB;EACA,MAAMv0C,YAAY,GAAG/Q,KAAK,CAAC+Q,YAA3B;EACA,IAAIk2B,oBAAoB,GAAGjnC,KAAK,CAACinC,oBAAjC;;EACA,IAAIA,oBAAoB,KAAK,CAAC,CAA9B,EAAiC;IAC7BA,oBAAoB,GAAGjnC,KAAK,CAAC8Q,cAA7B;EACH,CAFD,MAGK;IACDm2B,oBAAoB;EACvB;;EACD,OAAOA,oBAAoB,GAAGl2B,YAA9B,EAA4C;IACxCu0C,gBAAgB,GAAG72C,KAAK,CAACw4B,oBAAD,CAAxB;IACAr1zB,SAAS,IAAI+rxB,aAAa,CAAC2nD,gBAAD,EAAmB,wBAAnB,CAA1B;IACAV,UAAU,GAAGI,wBAAwB,CAACJ,UAAD,EAAaU,gBAAgB,CAAC9iD,SAA9B,EAAyCwyB,YAAzC,CAArC;IACA,IAAIswB,gBAAgB,KAAKT,gBAAzB,EACI;IACJ5d,oBAAoB;EACvB;;EACD,IAAI4d,gBAAgB,KAAK,IAAzB,EAA+B;IAC3B;IACA;IACA;IACA7kD,KAAK,CAACinC,oBAAN,GAA6BA,oBAA7B;EACH;;EACD,OAAO2d,UAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,wBAAT,CAAkCJ,UAAlC,EAA8C33jB,KAA9C,EAAqD+niB,YAArD,EAAmE;EAC/D,MAAMuwB,aAAa,GAAGvwB,YAAY,GAAG;EAAE;EAAL,EAAqC;EAAE;EAAzE;EACA,IAAIwwB,aAAa,GAAG,CAAC;EAAE;EAAvB;;EACA,IAAIv4jB,KAAK,KAAK,IAAd,EAAoB;IAChB,KAAK,IAAI5uQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4uQ,KAAK,CAACp5Q,MAA1B,EAAkCwK,CAAC,EAAnC,EAAuC;MACnC,MAAMoT,IAAI,GAAGw7P,KAAK,CAAC5uQ,CAAD,CAAlB;;MACA,IAAI,OAAOoT,IAAP,KAAgB,QAApB,EAA8B;QAC1B+zzB,aAAa,GAAG/zzB,IAAhB;MACH,CAFD,MAGK;QACD,IAAI+zzB,aAAa,KAAKD,aAAtB,EAAqC;UACjC,IAAI,CAACrt0B,KAAK,CAACwtF,OAAN,CAAck/uB,UAAd,CAAL,EAAgC;YAC5BA,UAAU,GAAGA,UAAU,KAAKnz0B,SAAf,GAA2B,EAA3B,GAAgC,CAAC,EAAD,EAAKmz0B,UAAL,CAA7C;UACH;;UACDvoC,gBAAgB,CAACuoC,UAAD,EAAanzzB,IAAb,EAAmBujyB,YAAY,GAAG,IAAH,GAAU/niB,KAAK,CAAC,EAAE5uQ,CAAH,CAA9C,CAAhB;QACH;MACJ;IACJ;EACJ;;EACD,OAAOum0B,UAAU,KAAKnz0B,SAAf,GAA2B,IAA3B,GAAkCmz0B,UAAzC;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,SAASH,sBAAT,CAAgCpoC,gBAAhC,EAAkD+nC,YAAlD,EAAgExx0B,KAAhE,EAAuE;EACnE,IAAIA,KAAK,IAAI;EAAK;EAAd,GAA6CA,KAAK,KAAK,EAA3D,EACI,OAAO4uxB,WAAP;EACJ,MAAMikD,kBAAkB,GAAG,EAA3B;EACA,MAAMC,cAAc,GAAG9hC,eAAe,CAAChxyB,KAAD,CAAtC;;EACA,IAAIsF,KAAK,CAACwtF,OAAN,CAAcggvB,cAAd,CAAJ,EAAmC;IAC/B,KAAK,IAAIrn0B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqn0B,cAAc,CAAC7x0B,MAAnC,EAA2CwK,CAAC,EAA5C,EAAgD;MAC5Cg+xB,gBAAgB,CAACopC,kBAAD,EAAqBC,cAAc,CAACrn0B,CAAD,CAAnC,EAAwC,IAAxC,CAAhB;IACH;EACJ,CAJD,MAKK,IAAI,OAAOqn0B,cAAP,KAA0B,QAA9B,EAAwC;IACzC,KAAK,MAAM7s0B,GAAX,IAAkB6s0B,cAAlB,EAAkC;MAC9B,IAAIA,cAAc,CAAC1n0B,cAAf,CAA8BnF,GAA9B,CAAJ,EAAwC;QACpCwjyB,gBAAgB,CAACopC,kBAAD,EAAqB5s0B,GAArB,EAA0B6s0B,cAAc,CAAC7s0B,GAAD,CAAxC,CAAhB;MACH;IACJ;EACJ,CANI,MAOA,IAAI,OAAO6s0B,cAAP,KAA0B,QAA9B,EAAwC;IACzCtB,YAAY,CAACqB,kBAAD,EAAqBC,cAArB,CAAZ;EACH,CAFI,MAGA;IACD9z0B,SAAS,IACLg8E,UAAU,CAAC,8BAA8B,OAAO83vB,cAArC,GAAsD,IAAtD,GAA6DA,cAA9D,CADd;EAEH;;EACD,OAAOD,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS5B,qBAAT,CAA+BvnC,aAA/B,EAA8CzjyB,GAA9C,EAAmDjG,KAAnD,EAA0D;EACtDypyB,gBAAgB,CAACC,aAAD,EAAgBzjyB,GAAhB,EAAqB+qyB,eAAe,CAAChxyB,KAAD,CAApC,CAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4x0B,gBAAT,CAA0BvkD,KAA1B,EAAiCD,KAAjC,EAAwC+G,KAAxC,EAA+Ct4nB,QAA/C,EAAyDk3qB,gBAAzD,EAA2EC,gBAA3E,EAA6F5wB,YAA7F,EAA2GnnB,YAA3G,EAAyH;EACrH,IAAI83C,gBAAgB,KAAK3tB,SAAzB,EAAoC;IAChC;IACA2tB,gBAAgB,GAAGnkD,WAAnB;EACH;;EACD,IAAItglB,QAAQ,GAAG,CAAf;EACA,IAAI9/C,QAAQ,GAAG,CAAf;EACA,IAAIykrB,MAAM,GAAG,IAAIF,gBAAgB,CAAC9x0B,MAArB,GAA8B8x0B,gBAAgB,CAAC,CAAD,CAA9C,GAAoD,IAAjE;EACA,IAAIvwzB,MAAM,GAAG,IAAIwwzB,gBAAgB,CAAC/x0B,MAArB,GAA8B+x0B,gBAAgB,CAAC,CAAD,CAA9C,GAAoD,IAAjE;;EACA,OAAOC,MAAM,KAAK,IAAX,IAAmBzwzB,MAAM,KAAK,IAArC,EAA2C;IACvCxjB,SAAS,IAAI4rxB,cAAc,CAACt8kB,QAAD,EAAW,GAAX,EAAgB,gCAAhB,CAA3B;IACAtvM,SAAS,IAAI4rxB,cAAc,CAACp8nB,QAAD,EAAW,GAAX,EAAgB,gCAAhB,CAA3B;IACA,MAAM3oH,QAAQ,GAAGyoK,QAAQ,GAAGykoB,gBAAgB,CAAC9x0B,MAA5B,GAAqC8x0B,gBAAgB,CAACzkoB,QAAQ,GAAG,CAAZ,CAArD,GAAsEzvM,SAAvF;IACA,MAAM+mC,QAAQ,GAAG4oH,QAAQ,GAAGwkrB,gBAAgB,CAAC/x0B,MAA5B,GAAqC+x0B,gBAAgB,CAACxkrB,QAAQ,GAAG,CAAZ,CAArD,GAAsE3vJ,SAAvF;IACA,IAAIq00B,MAAM,GAAG,IAAb;IACA,IAAI9mvB,QAAQ,GAAGvtF,SAAf;;IACA,IAAIo00B,MAAM,KAAKzwzB,MAAf,EAAuB;MACnB;MACA8rL,QAAQ,IAAI,CAAZ;MACA9/C,QAAQ,IAAI,CAAZ;;MACA,IAAI3oH,QAAQ,KAAKD,QAAjB,EAA2B;QACvBstyB,MAAM,GAAG1wzB,MAAT;QACA4pE,QAAQ,GAAGxmD,QAAX;MACH;IACJ,CARD,MASK,IAAIpjB,MAAM,KAAK,IAAX,IAAmBywzB,MAAM,KAAK,IAAX,IAAmBA,MAAM,GAAGzwzB,MAAnD,EAA2D;MAC5D;MACA;MACA;MACA;MACA8rL,QAAQ,IAAI,CAAZ;MACA4koB,MAAM,GAAGD,MAAT;IACH,CAPI,MAQA;MACD;MACA;MACA;MACAj00B,SAAS,IAAI+rxB,aAAa,CAACvowB,MAAD,EAAS,+BAAT,CAA1B;MACAgsI,QAAQ,IAAI,CAAZ;MACA0krB,MAAM,GAAG1wzB,MAAT;MACA4pE,QAAQ,GAAGxmD,QAAX;IACH;;IACD,IAAIstyB,MAAM,KAAK,IAAf,EAAqB;MACjB5B,aAAa,CAACjkD,KAAD,EAAQD,KAAR,EAAe+G,KAAf,EAAsBt4nB,QAAtB,EAAgCq3qB,MAAhC,EAAwC9mvB,QAAxC,EAAkDg2tB,YAAlD,EAAgEnnB,YAAhE,CAAb;IACH;;IACDg4C,MAAM,GAAG3koB,QAAQ,GAAGykoB,gBAAgB,CAAC9x0B,MAA5B,GAAqC8x0B,gBAAgB,CAACzkoB,QAAD,CAArD,GAAkE,IAA3E;IACA9rL,MAAM,GAAGgsI,QAAQ,GAAGwkrB,gBAAgB,CAAC/x0B,MAA5B,GAAqC+x0B,gBAAgB,CAACxkrB,QAAD,CAArD,GAAkE,IAA3E;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8irB,aAAT,CAAuBjkD,KAAvB,EAA8BD,KAA9B,EAAqC+G,KAArC,EAA4Ct4nB,QAA5C,EAAsDtyD,IAAtD,EAA4DvpG,KAA5D,EAAmEoizB,YAAnE,EAAiFnnB,YAAjF,EAA+F;EAC3F,IAAI,EAAE7N,KAAK,CAACxuxB,IAAN,GAAa;EAAE;EAAjB,CAAJ,EAAgD;IAC5C;IACA;IACA;EACH;;EACD,MAAMi9xB,KAAK,GAAGxO,KAAK,CAAChwwB,IAApB;EACA,MAAM81zB,MAAM,GAAGt3C,KAAK,CAACZ,YAAY,GAAG,CAAhB,CAApB;EACA,MAAMm4C,mBAAmB,GAAGphB,6BAA6B,CAACmhB,MAAD,CAA7B,GACxBE,gBAAgB,CAACx3C,KAAD,EAAQzO,KAAR,EAAe+G,KAAf,EAAsB5qrB,IAAtB,EAA4BuotB,oBAAoB,CAACqhB,MAAD,CAAhD,EAA0D/wB,YAA1D,CADQ,GAExBvjzB,SAFJ;;EAGA,IAAI,CAACy00B,qBAAqB,CAACF,mBAAD,CAA1B,EAAiD;IAC7C;IACA,IAAI,CAACE,qBAAqB,CAACtz0B,KAAD,CAA1B,EAAmC;MAC/B;MACA,IAAI2xzB,6BAA6B,CAACwhB,MAAD,CAAjC,EAA2C;QACvC;QACAnz0B,KAAK,GAAGqz0B,gBAAgB,CAACx3C,KAAD,EAAQ,IAAR,EAAc1H,KAAd,EAAqB5qrB,IAArB,EAA2B0xrB,YAA3B,EAAyCmnB,YAAzC,CAAxB;MACH;IACJ;;IACD,MAAM9F,KAAK,GAAGpkB,gBAAgB,CAACiF,gBAAgB,EAAjB,EAAqBhJ,KAArB,CAA9B;IACAguB,YAAY,CAACtmpB,QAAD,EAAWumpB,YAAX,EAAyB9F,KAAzB,EAAgC/ysB,IAAhC,EAAsCvpG,KAAtC,CAAZ;EACH;AACJ;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,SAASqz0B,gBAAT,CAA0Bx3C,KAA1B,EAAiCzO,KAAjC,EAAwC+G,KAAxC,EAA+C5qrB,IAA/C,EAAqDjnF,KAArD,EAA4D8/xB,YAA5D,EAA0E;EACtE;EACA;EACA;EACA;EACA;EACA,MAAMmxB,eAAe,GAAGnmD,KAAK,KAAK,IAAlC;EACA,IAAIptxB,KAAK,GAAGnB,SAAZ;;EACA,OAAOyjB,KAAK,GAAG,CAAf,EAAkB;IACd,MAAMkxzB,MAAM,GAAG33C,KAAK,CAACv5wB,KAAD,CAApB;IACA,MAAMmxzB,eAAe,GAAGnu0B,KAAK,CAACwtF,OAAN,CAAc0gvB,MAAd,CAAxB,CAFc,CAGd;;IACA,MAAMvt0B,GAAG,GAAGwt0B,eAAe,GAAGD,MAAM,CAAC,CAAD,CAAT,GAAeA,MAA1C;IACA,MAAME,YAAY,GAAGzt0B,GAAG,KAAK,IAA7B;IACA,IAAI0t0B,iBAAiB,GAAGx/C,KAAK,CAAC7xwB,KAAK,GAAG,CAAT,CAA7B;;IACA,IAAIqxzB,iBAAiB,KAAKvuB,SAA1B,EAAqC;MACjC;MACA;MACA;MACA;MACA;MACA;MACA;MACAuuB,iBAAiB,GAAGD,YAAY,GAAG9kD,WAAH,GAAiB/vxB,SAAjD;IACH;;IACD,IAAI8uK,YAAY,GAAG+lqB,YAAY,GAAG9pC,gBAAgB,CAAC+pC,iBAAD,EAAoBpquB,IAApB,CAAnB,GAC3BtjG,GAAG,KAAKsjG,IAAR,GAAeoquB,iBAAf,GAAmC900B,SADvC;;IAEA,IAAI400B,eAAe,IAAI,CAACH,qBAAqB,CAAC3lqB,YAAD,CAA7C,EAA6D;MACzDA,YAAY,GAAGi8nB,gBAAgB,CAAC4pC,MAAD,EAASjquB,IAAT,CAA/B;IACH;;IACD,IAAI+puB,qBAAqB,CAAC3lqB,YAAD,CAAzB,EAAyC;MACrC3tK,KAAK,GAAG2tK,YAAR;;MACA,IAAI4lqB,eAAJ,EAAqB;QACjB,OAAOvz0B,KAAP;MACH;IACJ;;IACD,MAAMmz0B,MAAM,GAAGt3C,KAAK,CAACv5wB,KAAK,GAAG,CAAT,CAApB;IACAA,KAAK,GAAGixzB,eAAe,GAAG9hB,oBAAoB,CAAC0hB,MAAD,CAAvB,GAAkCrhB,oBAAoB,CAACqhB,MAAD,CAA7E;EACH;;EACD,IAAI/lD,KAAK,KAAK,IAAd,EAAoB;IAChB;IACA;IACA,IAAIyhD,QAAQ,GAAGzsB,YAAY,GAAGh1B,KAAK,CAACynC,eAAT,GAA2BznC,KAAK,CAACunC,cAA5D;;IACA,IAAIka,QAAQ,IAAI;IAAK;IAArB,EAAwD;MACpD7u0B,KAAK,GAAG4pyB,gBAAgB,CAACilC,QAAD,EAAWtluB,IAAX,CAAxB;IACH;EACJ;;EACD,OAAOvpG,KAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsz0B,qBAAT,CAA+Btz0B,KAA/B,EAAsC;EAClC;EACA;EACA;EACA;EACA,OAAOA,KAAK,KAAKnB,SAAjB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0y0B,eAAT,CAAyBvx0B,KAAzB,EAAgCs7N,MAAhC,EAAwC;EACpC,IAAIt7N,KAAK,IAAI;EAAK;EAAlB,EAAiD,CAC7C;EACH,CAFD,MAGK,IAAI,OAAOs7N,MAAP,KAAkB,QAAtB,EAAgC;IACjCt7N,KAAK,GAAGA,KAAK,GAAGs7N,MAAhB;EACH,CAFI,MAGA,IAAI,OAAOt7N,KAAP,KAAiB,QAArB,EAA+B;IAChCA,KAAK,GAAGwa,SAAS,CAACw2xB,eAAe,CAAChxyB,KAAD,CAAhB,CAAjB;EACH;;EACD,OAAOA,KAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyx0B,qBAAT,CAA+BrkD,KAA/B,EAAsCg1B,YAAtC,EAAoD;EAChD,OAAO,CAACh1B,KAAK,CAACnppB,KAAN,IAAem+qB,YAAY,GAAG;EAAG;EAAN,EAAuC;EAAG;EAArE,CAAD,MAA2G,CAAlH;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwxB,MAAT,CAAgBtxzB,KAAhB,EAAuBtiB,KAAK,GAAG,EAA/B,EAAmC;EAC/B,MAAMm0xB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMxM,KAAK,GAAGyM,QAAQ,EAAtB;EACA,MAAMowC,aAAa,GAAG5nzB,KAAK,GAAG4wwB,aAA9B;EACAl0xB,SAAS,IACLwrxB,WAAW,CAACwQ,eAAe,EAAhB,EAAoB3N,KAAK,CAACoI,iBAA1B,EAA6C,kDAA7C,CADf;EAEAz2xB,SAAS,IAAIksxB,kBAAkB,CAACiJ,KAAD,EAAQ+1C,aAAR,CAA/B;EACA,MAAM98C,KAAK,GAAGC,KAAK,CAACF,eAAN,GACV2sC,gBAAgB,CAACzsC,KAAD,EAAQ68C,aAAR,EAAuB;EAAE;EAAzB,EAA+Clq0B,KAA/C,EAAsD,IAAtD,CADN,GAEVqtxB,KAAK,CAAChwwB,IAAN,CAAW6szB,aAAX,CAFJ;EAGA,MAAM2J,UAAU,GAAG1/C,KAAK,CAAC+1C,aAAD,CAAL,GAAuBn/iB,cAAc,CAACopgB,KAAK,CAAC3B,QAAD,CAAN,EAAkBxyxB,KAAlB,CAAxD;EACAq5C,WAAW,CAACg0uB,KAAD,EAAQ8G,KAAR,EAAe0/C,UAAf,EAA2BzmD,KAA3B,CAAX,CAX+B,CAY/B;;EACAmN,eAAe,CAACnN,KAAD,EAAQ,KAAR,CAAf;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,SAAS0mD,iBAAT,CAA2B5L,EAA3B,EAA+B;EAC3B6L,kBAAkB,CAAC,EAAD,EAAK7L,EAAL,EAAS,EAAT,CAAlB;EACA,OAAO4L,iBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4BxzoB,MAA5B,EAAoC2noB,EAApC,EAAwC5smB,MAAxC,EAAgD;EAC5C,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAG1B,cAAc,CAAC9zC,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB5smB,MAApB,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOoK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4BzzoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgD9smB,MAAhD,EAAwD;EACpD,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGxB,cAAc,CAACh0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4B9smB,MAA5B,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOqK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B1zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhtmB,MAAxD,EAAgE;EAC5D,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGtB,cAAc,CAACl0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChtmB,MAApC,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOsK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B3zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhwqB,EAAxD,EAA4DkwqB,EAA5D,EAAgEltmB,MAAhE,EAAwE;EACpE,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGpB,cAAc,CAACp0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CltmB,MAA5C,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOuK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B5zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhwqB,EAAxD,EAA4DkwqB,EAA5D,EAAgEjwqB,EAAhE,EAAoEmwqB,EAApE,EAAwEptmB,MAAxE,EAAgF;EAC5E,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGlB,cAAc,CAACt0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDptmB,MAApD,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOwK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B7zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhwqB,EAAxD,EAA4DkwqB,EAA5D,EAAgEjwqB,EAAhE,EAAoEmwqB,EAApE,EAAwEhwqB,EAAxE,EAA4EkwqB,EAA5E,EAAgFttmB,MAAhF,EAAwF;EACpF,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGhB,cAAc,CAACx0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4DttmB,MAA5D,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAOyK,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B9zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhwqB,EAAxD,EAA4DkwqB,EAA5D,EAAgEjwqB,EAAhE,EAAoEmwqB,EAApE,EAAwEhwqB,EAAxE,EAA4EkwqB,EAA5E,EAAgFr+nB,EAAhF,EAAoFu+nB,EAApF,EAAwFxtmB,MAAxF,EAAgG;EAC5F,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGd,cAAc,CAAC10C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4Dr+nB,EAA5D,EAAgEu+nB,EAAhE,EAAoExtmB,MAApE,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAO0K,kBAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B/zoB,MAA5B,EAAoC2noB,EAApC,EAAwC3xqB,EAAxC,EAA4C6xqB,EAA5C,EAAgDxwqB,EAAhD,EAAoD0wqB,EAApD,EAAwDhwqB,EAAxD,EAA4DkwqB,EAA5D,EAAgEjwqB,EAAhE,EAAoEmwqB,EAApE,EAAwEhwqB,EAAxE,EAA4EkwqB,EAA5E,EAAgFr+nB,EAAhF,EAAoFu+nB,EAApF,EAAwF5ulB,EAAxF,EAA4F8ulB,EAA5F,EAAgG1tmB,MAAhG,EAAwG;EACpG,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAGZ,cAAc,CAAC50C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4Dr+nB,EAA5D,EAAgEu+nB,EAAhE,EAAoE5ulB,EAApE,EAAwE8ulB,EAAxE,EAA4E1tmB,MAA5E,CAAnC;;EACA,IAAIqumB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAO2K,kBAAP;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,SAASC,kBAAT,CAA4BpyzB,MAA5B,EAAoC;EAChC,MAAMgywB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAM8vC,YAAY,GAAG5B,cAAc,CAAC5zC,KAAD,EAAQhywB,MAAR,CAAnC;;EACA,IAAIwnzB,YAAY,KAAKvkB,SAArB,EAAgC;IAC5Bwc,mBAAmB,CAACztC,KAAD,EAAQgJ,gBAAgB,EAAxB,EAA4BwsC,YAA5B,CAAnB;EACH;;EACD,OAAO4K,kBAAP;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,SAASC,sBAAT,CAAgCj0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C5smB,MAA5C,EAAoD;EAChD,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGjB,cAAc,CAAC9zC,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB5smB,MAApB,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;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,SAASuL,sBAAT,CAAgCl0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoD9smB,MAApD,EAA4D;EACxD,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGf,cAAc,CAACh0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4B9smB,MAA5B,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;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,SAASwL,sBAAT,CAAgCn0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhtmB,MAA5D,EAAoE;EAChE,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGb,cAAc,CAACl0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChtmB,MAApC,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;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,SAASyL,sBAAT,CAAgCp0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhwqB,EAA5D,EAAgEkwqB,EAAhE,EAAoEltmB,MAApE,EAA4E;EACxE,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGX,cAAc,CAACp0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CltmB,MAA5C,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0L,sBAAT,CAAgCr0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhwqB,EAA5D,EAAgEkwqB,EAAhE,EAAoEjwqB,EAApE,EAAwEmwqB,EAAxE,EAA4EptmB,MAA5E,EAAoF;EAChF,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGT,cAAc,CAACt0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDptmB,MAApD,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2L,sBAAT,CAAgCt0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhwqB,EAA5D,EAAgEkwqB,EAAhE,EAAoEjwqB,EAApE,EAAwEmwqB,EAAxE,EAA4EhwqB,EAA5E,EAAgFkwqB,EAAhF,EAAoFttmB,MAApF,EAA4F;EACxF,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGP,cAAc,CAACx0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4DttmB,MAA5D,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4L,sBAAT,CAAgCv0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhwqB,EAA5D,EAAgEkwqB,EAAhE,EAAoEjwqB,EAApE,EAAwEmwqB,EAAxE,EAA4EhwqB,EAA5E,EAAgFkwqB,EAAhF,EAAoFr+nB,EAApF,EAAwFu+nB,EAAxF,EAA4FxtmB,MAA5F,EAAoG;EAChG,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGL,cAAc,CAAC10C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4Dr+nB,EAA5D,EAAgEu+nB,EAAhE,EAAoExtmB,MAApE,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6L,sBAAT,CAAgCx0oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhwqB,EAA5D,EAAgEkwqB,EAAhE,EAAoEjwqB,EAApE,EAAwEmwqB,EAAxE,EAA4EhwqB,EAA5E,EAAgFkwqB,EAAhF,EAAoFr+nB,EAApF,EAAwFu+nB,EAAxF,EAA4F5ulB,EAA5F,EAAgG8ulB,EAAhG,EAAoG1tmB,MAApG,EAA4G;EACxG,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGH,cAAc,CAAC50C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4BxwqB,EAA5B,EAAgC0wqB,EAAhC,EAAoChwqB,EAApC,EAAwCkwqB,EAAxC,EAA4CjwqB,EAA5C,EAAgDmwqB,EAAhD,EAAoDhwqB,EAApD,EAAwDkwqB,EAAxD,EAA4Dr+nB,EAA5D,EAAgEu+nB,EAAhE,EAAoE5ulB,EAApE,EAAwE8ulB,EAAxE,EAA4E1tmB,MAA5E,CAAxC;EACA01mB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;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,SAAS8L,sBAAT,CAAgC7yzB,MAAhC,EAAwC;EACpC,MAAMgywB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGnB,cAAc,CAAC5zC,KAAD,EAAQhywB,MAAR,CAAxC;EACA6uzB,eAAe,CAACvnC,gBAAD,EAAmB2nC,iBAAnB,EAAsClI,iBAAtC,EAAyD,IAAzD,CAAf;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,SAAS+L,sBAAT,CAAgC10oB,MAAhC,EAAwC2noB,EAAxC,EAA4C5smB,MAA5C,EAAoD;EAChD,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGjB,cAAc,CAAC9zC,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB5smB,MAApB,CAAxC;EACAy1mB,UAAU,CAAC7H,iBAAD,CAAV;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,SAASgM,sBAAT,CAAgC30oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoD9smB,MAApD,EAA4D;EACxD,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMqvC,iBAAiB,GAAGf,cAAc,CAACh0C,KAAD,EAAQ5zlB,MAAR,EAAgB2noB,EAAhB,EAAoB3xqB,EAApB,EAAwB6xqB,EAAxB,EAA4B9smB,MAA5B,CAAxC;EACAy1mB,UAAU,CAAC7H,iBAAD,CAAV;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,SAASiM,sBAAT,CAAgC50oB,MAAhC,EAAwC2noB,EAAxC,EAA4C3xqB,EAA5C,EAAgD6xqB,EAAhD,EAAoDxwqB,EAApD,EAAwD0wqB,EAAxD,EAA4DhtmB,MAA5D,EAAoE;EAChE,MAAM64jB,KAAK,GAAG0F,QAAQ,EAAtB;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,CALL;EAMH,CAPD;AAQH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgtB,uBAAT,CAAiC1itB,SAAjC,EAA4C;EACxC,MAAMt/H,KAAK,GAAG82B,KAAK,CAAE,kCAAiC7f,SAAS,CAACqoH,SAAD,CAAY,gDAAxD,CAAnB;EACAt/H,KAAK,CAACii1B,eAAD,CAAL,GAAyB3itB,SAAzB;EACA,OAAOt/H,KAAP;AACH;;AACD,MAAMii1B,eAAe,GAAG,aAAxB;;AACA,SAASC,YAAT,CAAsBli1B,KAAtB,EAA6B;EACzB,OAAOA,KAAK,CAACii1B,eAAD,CAAZ;AACH;;AACD,MAAME,6BAAN,CAAoC;EAChCjkmB,uBAAuB,CAAC5+G,SAAD,EAAY;IAC/B,MAAM0itB,uBAAuB,CAAC1itB,SAAD,CAA7B;EACH;;AAH+B;AAKpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM8itB,0BAAN,CAAiC;;AAEjCA,0BAA0B,CAAC/6B,IAA3B,GAAoC,eAAe,IAAI86B,6BAAJ,EAAnD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAME,aAAN,CAAoB;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,iBAAN,CAAwB;AAGxB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,cAAN,CAAqB;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,kBAAN,CAAyB;AAGzB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,gBAAT,GAA4B;EACxB,OAAOC,gBAAgB,CAAC9rD,eAAe,EAAhB,EAAoBN,QAAQ,EAA5B,CAAvB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASosD,gBAAT,CAA0B74D,KAA1B,EAAiC+G,KAAjC,EAAwC;EACpC,OAAO,IAAIj9nB,UAAJ,CAAeihoB,gBAAgB,CAAC/K,KAAD,EAAQ+G,KAAR,CAA/B,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMj9nB,UAAN,CAAiB;EACb56J,WAAW,CAACygK,aAAD,EAAgB;IACvB,KAAKA,aAAL,GAAqBA,aAArB;EACH;;AAHY;AAKjB;AACA;AACA;AACA;;;AACA7F,UAAU,CAACi4nB,iBAAX,GAA+B62D,gBAA/B;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,gBAAT,CAA0Blm1B,KAA1B,EAAiC;EAC7B,OAAOA,KAAK,YAAYk3J,UAAjB,GAA8Bl3J,KAAK,CAAC+8J,aAApC,GAAoD/8J,KAA3D;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMmm1B,oBAAoB,GAAG,IAAIns1B,cAAJ,CAAmB,sBAAnB,CAA7B;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMos1B,gBAAN,CAAuB;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM/jrB,SAAN,CAAgB;AAEhB;AACA;AACA;AACA;;;AACAA,SAAS,CAAC8snB,iBAAV,GAA8B,MAAMk3D,eAAe,EAAnD;AACA;;;AACA,SAASC,oBAAT,CAA8BnyD,KAA9B,EAAqC;EACjC,MAAMt4nB,QAAQ,GAAGs4nB,KAAK,CAAC3B,QAAD,CAAtB;;EACA,IAAIxzxB,SAAS,IAAI,CAAC04xB,oBAAoB,CAAC77nB,QAAD,CAAtC,EAAkD;IAC9C,MAAM,IAAIxhI,KAAJ,CAAU,8DAAV,CAAN;EACH;;EACD,OAAOwhI,QAAP;AACH;AACD;;;AACA,SAASwqrB,eAAT,GAA2B;EACvB;EACA;EACA,MAAMlyD,KAAK,GAAG0F,QAAQ,EAAtB;EACA,MAAMzM,KAAK,GAAG+M,eAAe,EAA7B;EACA,MAAMosD,WAAW,GAAGjuD,wBAAwB,CAAClL,KAAK,CAAC9qwB,KAAP,EAAc6xwB,KAAd,CAA5C;EACA,OAAOmyD,oBAAoB,CAAC3yD,OAAO,CAAC4yD,WAAD,CAAP,GAAuBA,WAAvB,GAAqCpyD,KAAtC,CAA3B;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMqyD,SAAN,CAAgB;AAEhB;;;AACAA,SAAS,CAACjo1B,KAAV,GAAkBC,kBAAkB,CAAC;EACjCC,KAAK,EAAE+n1B,SAD0B;EAEjC/9oB,UAAU,EAAE,MAFqB;EAGjC/pM,OAAO,EAAE,MAAM;AAHkB,CAAD,CAApC;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM+nF,OAAN,CAAc;EACVnqF,WAAW,CAAC89J,IAAD,EAAO;IACd,KAAKA,IAAL,GAAYA,IAAZ;IACA,KAAK12J,KAAL,GAAa02J,IAAI,CAACz9J,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAb;IACA,KAAKoliB,KAAL,GAAa3nY,IAAI,CAACz9J,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAb;IACA,KAAKkoxB,KAAL,GAAazqnB,IAAI,CAACz9J,KAAL,CAAW,GAAX,EAAgB42E,KAAhB,CAAsB,CAAtB,EAAyB/7C,IAAzB,CAA8B,GAA9B,CAAb;EACH;;AANS;AAQd;AACA;AACA;;;AACA,MAAMr9B,OAAO,GAAG,IAAIssF,OAAJ,CAAY,QAAZ,CAAhB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMggwB,qCAAqC,GAAG,EAA9C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,kBAAT,CAA4Br5D,KAA5B,EAAmC8G,KAAnC,EAA0C/G,KAA1C,EAAiDvoxB,MAAjD,EAAyD28yB,YAAY,GAAG,KAAxE,EAA+E;EAC3E,OAAOp0B,KAAK,KAAK,IAAjB,EAAuB;IACnBpuxB,SAAS,IACLohyB,eAAe,CAAChT,KAAD,EAAQ;IAAE;IAAF,EAA6B;IAAG;IAAhC,EAA+D;IAAG;IAAlE,EAA+F;IAAG;IAA1G,CADnB;IAEA,MAAMu5D,KAAK,GAAGxyD,KAAK,CAAC/G,KAAK,CAAC9qwB,KAAP,CAAnB;;IACA,IAAIqk0B,KAAK,KAAK,IAAd,EAAoB;MAChB9h1B,MAAM,CAACuB,IAAP,CAAY2xxB,WAAW,CAAC4uD,KAAD,CAAvB;IACH,CANkB,CAOnB;IACA;IACA;;;IACA,IAAI/yD,YAAY,CAAC+yD,KAAD,CAAhB,EAAyB;MACrB,KAAK,IAAIl70B,CAAC,GAAGgoxB,uBAAb,EAAsChoxB,CAAC,GAAGk70B,KAAK,CAAC1l1B,MAAhD,EAAwDwK,CAAC,EAAzD,EAA6D;QACzD,MAAMm70B,iBAAiB,GAAGD,KAAK,CAACl70B,CAAD,CAA/B;QACA,MAAMo70B,oBAAoB,GAAGD,iBAAiB,CAAC70D,KAAD,CAAjB,CAAyBpwnB,UAAtD;;QACA,IAAIklrB,oBAAoB,KAAK,IAA7B,EAAmC;UAC/BH,kBAAkB,CAACE,iBAAiB,CAAC70D,KAAD,CAAlB,EAA2B60D,iBAA3B,EAA8CC,oBAA9C,EAAoEhi1B,MAApE,CAAlB;QACH;MACJ;IACJ;;IACD,MAAMm7xB,SAAS,GAAG5S,KAAK,CAACxuxB,IAAxB;;IACA,IAAIohyB,SAAS,GAAG;IAAE;IAAlB,EAAoD;MAChD0mD,kBAAkB,CAACr5D,KAAD,EAAQ8G,KAAR,EAAe/G,KAAK,CAAChplB,KAArB,EAA4Bv/L,MAA5B,CAAlB;IACH,CAFD,MAGK,IAAIm7xB,SAAS,GAAG;IAAG;IAAnB,EAAwC;MACzC,MAAM8gB,SAAS,GAAG3F,mBAAmB,CAAC/tB,KAAD,EAAQ+G,KAAR,CAArC;MACA,IAAImoB,KAAJ;;MACA,OAAOA,KAAK,GAAGwE,SAAS,EAAxB,EAA4B;QACxBj8yB,MAAM,CAACuB,IAAP,CAAYk2yB,KAAZ;MACH;IACJ,CANI,MAOA,IAAItc,SAAS,GAAG;IAAG;IAAnB,EAA+C;MAChD,MAAM8mD,WAAW,GAAG9lC,kBAAkB,CAAC7sB,KAAD,EAAQ/G,KAAR,CAAtC;;MACA,IAAI9nxB,KAAK,CAACwtF,OAAN,CAAcg0vB,WAAd,CAAJ,EAAgC;QAC5Bji1B,MAAM,CAACuB,IAAP,CAAY,GAAG0g1B,WAAf;MACH,CAFD,MAGK;QACD,MAAMrlD,UAAU,GAAG+Z,cAAc,CAACrnB,KAAK,CAACtB,0BAAD,CAAN,CAAjC;QACA7zxB,SAAS,IAAI+2xB,gBAAgB,CAAC0L,UAAD,CAA7B;QACAilD,kBAAkB,CAACjlD,UAAU,CAAC1P,KAAD,CAAX,EAAoB0P,UAApB,EAAgCqlD,WAAhC,EAA6Cji1B,MAA7C,EAAqD,IAArD,CAAlB;MACH;IACJ;;IACDuoxB,KAAK,GAAGo0B,YAAY,GAAGp0B,KAAK,CAACu0B,cAAT,GAA0Bv0B,KAAK,CAACvtxB,IAApD;EACH;;EACD,OAAOgF,MAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMki1B,SAAN,CAAgB;EACZzq1B,WAAW;EACX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIgpyB,MAZW;EAaX;AACJ;AACA;AACA;AACA;AACA;EACI0hD,mBAnBW,EAmBU;IACjB,KAAK1hD,MAAL,GAAcA,MAAd;IACA,KAAK0hD,mBAAL,GAA2BA,mBAA3B;IACA,KAAKC,OAAL,GAAe,IAAf;IACA,KAAKC,wBAAL,GAAgC,KAAhC;EACH;;EACY,IAAT31jB,SAAS,GAAG;IACZ,MAAM4igB,KAAK,GAAG,KAAKmR,MAAnB;IACA,MAAMjY,KAAK,GAAG8G,KAAK,CAACpC,KAAD,CAAnB;IACA,OAAO20D,kBAAkB,CAACr5D,KAAD,EAAQ8G,KAAR,EAAe9G,KAAK,CAAC1rnB,UAArB,EAAiC,EAAjC,CAAzB;EACH;;EACU,IAAPj8E,OAAO,GAAG;IACV,OAAO,KAAK4/sB,MAAL,CAAYjT,OAAZ,CAAP;EACH;;EACU,IAAP3ssB,OAAO,CAAC1lF,KAAD,EAAQ;IACf,KAAKslyB,MAAL,CAAYjT,OAAZ,IAAuBryxB,KAAvB;EACH;;EACY,IAATq0L,SAAS,GAAG;IACZ,OAAO,CAAC,KAAKixmB,MAAL,CAAYr3H,KAAZ,IAAqB;IAAI;IAA1B,MAA0D;IAAI;IAArE;EACH;;EACDz0f,OAAO,GAAG;IACN,IAAI,KAAKytqB,OAAT,EAAkB;MACd,KAAKA,OAAL,CAAazoC,UAAb,CAAwB,IAAxB;IACH,CAFD,MAGK,IAAI,KAAK0oC,wBAAT,EAAmC;MACpC,MAAMroyB,MAAM,GAAG,KAAKymvB,MAAL,CAAYtT,MAAZ,CAAf;;MACA,IAAI4B,YAAY,CAAC/0uB,MAAD,CAAhB,EAA0B;QACtB,MAAMsoyB,QAAQ,GAAGtoyB,MAAM,CAAC00uB,SAAD,CAAvB;QACA,MAAMjxwB,KAAK,GAAG6k0B,QAAQ,GAAGA,QAAQ,CAAC7j1B,OAAT,CAAiB,IAAjB,CAAH,GAA4B,CAAC,CAAnD;;QACA,IAAIgf,KAAK,GAAG,CAAC,CAAb,EAAgB;UACZtjB,SAAS,IACLwrxB,WAAW,CAAClowB,KAAD,EAAQu8B,MAAM,CAACv7C,OAAP,CAAe,KAAKgiyB,MAApB,IAA8B7R,uBAAtC,EAA+D,6GAA/D,CADf;UAEA+qB,UAAU,CAAC3/vB,MAAD,EAASv8B,KAAT,CAAV;UACAymxB,eAAe,CAACo+C,QAAD,EAAW7k0B,KAAX,CAAf;QACH;MACJ;;MACD,KAAK4k0B,wBAAL,GAAgC,KAAhC;IACH;;IACDtoC,YAAY,CAAC,KAAKtZ,MAAL,CAAYvT,KAAZ,CAAD,EAAqB,KAAKuT,MAA1B,CAAZ;EACH;;EACDjrD,SAAS,CAACzhuB,QAAD,EAAW;IAChBwjzB,uBAAuB,CAAC,KAAK92B,MAAL,CAAYvT,KAAZ,CAAD,EAAqB,KAAKuT,MAA1B,EAAkC,IAAlC,EAAwC1sxB,QAAxC,CAAvB;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;;;EACIsyJ,YAAY,GAAG;IACXu1pB,aAAa,CAAC,KAAKumB,mBAAL,IAA4B,KAAK1hD,MAAlC,CAAb;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;AACA;AACA;AACA;AACA;;;EACIztX,MAAM,GAAG;IACL,KAAKytX,MAAL,CAAYr3H,KAAZ,KAAsB,CAAC;IAAG;IAA1B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIm5K,QAAQ,GAAG;IACP,KAAK9hD,MAAL,CAAYr3H,KAAZ,KAAsB;IAAG;IAAzB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI35f,aAAa,GAAG;IACZ0spB,qBAAqB,CAAC,KAAK17B,MAAL,CAAYvT,KAAZ,CAAD,EAAqB,KAAKuT,MAA1B,EAAkC,KAAK5/sB,OAAvC,CAArB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACI2hwB,cAAc,GAAG;IACb,IAAIro1B,SAAJ,EAAe;MACXki0B,sBAAsB,CAAC,KAAK57B,MAAL,CAAYvT,KAAZ,CAAD,EAAqB,KAAKuT,MAA1B,EAAkC,KAAK5/sB,OAAvC,CAAtB;IACH;EACJ;;EACD4hwB,wBAAwB,GAAG;IACvB,IAAI,KAAKL,OAAT,EAAkB;MACd,MAAMvlzB,YAAY,GAAG1iC,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A;AACA;AACA;AACA;AACA,CAACD,IAAD,EAAO6+C,IAAP,KAAgBi2yB,eAAe,CAAC901B,IAAD,EAAO6+C,IAAP,CAZD,CAA9B;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS+kK,IAAT,CAAc,GAAGzjN,IAAjB,EAAuB,CACnB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,MAAMw61B,gBAAgB,GAAG,IAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAe,GAAG,IAAIx/1B,cAAJ,CAAmB,yBAAnB,CAAxB;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMy/1B,qBAAN,CAA4B;EACxBn91B,WAAW,CAACo91B,QAAD,EAAW;IAClB,KAAKA,QAAL,GAAgBA,QAAhB;IACA,KAAK/u1B,OAAL,GAAe63M,IAAf;IACA,KAAKt2M,MAAL,GAAcs2M,IAAd;IACA,KAAKtyM,WAAL,GAAmB,KAAnB;IACA,KAAK3D,IAAL,GAAY,KAAZ;IACA,KAAKot1B,WAAL,GAAmB,IAAIjv1B,OAAJ,CAAY,CAAC4wF,GAAD,EAAMs+vB,GAAN,KAAc;MACzC,KAAKjv1B,OAAL,GAAe2wF,GAAf;MACA,KAAKpvF,MAAL,GAAc0t1B,GAAd;IACH,CAHkB,CAAnB;EAIH;EACD;;;EACAC,eAAe,GAAG;IACd,IAAI,KAAK3p1B,WAA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AG1E,IAH0E,EAGpE,IAHoE,CAAnE;AAGO,CAHtB;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmypB,eAAT,GAA2B;EACvB,IAAI,OAAOtkB,iBAAP,KAA6B,WAA7B,IAA4CA,iBAA5C,IACA,OAAOC,IAAP,KAAgB,WADhB,IAC+BA,IAAI,CAACskB,MAAL,KAAgB,IADnD,EACyD;IACrD;IACA;IACA;IACA,OAAOtkB,IAAI,CAACskB,MAAZ;EACH,CAND,MAOK;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OAAQ,OAAOC,SAAP,KAAqB,WAArB,IAAoCA,SAAS,CAACtif,MAA/C,IAA0Dg/d,iBAAjE;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM/8pB,SAAS,GAAG,IAAIzgL,cAAJ,CAAmB,UAAnB,EAA+B;EAC7CyuM,UAAU,EAAE,MADiC;EAE7C/pM,OAAO,EAAE,MAAMyjtB,MAAM,CAAC1niB,SAAD,EAAYwxmB,WAAW,CAACv1nB,QAAZ,GAAuBu1nB,WAAW,CAACj7f,QAA/C,CAAN,IAAkE4pkB,eAAe;AAFnD,CAA/B,CAAlB;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM11F,qBAAqB,GAAG,IAAIlrwB,cAAJ,CAAmB,qBAAnB,EAA0C;EACpEyuM,UAAU,EAAE,MADwD;EAEpE/pM,OAAO,EAAE,MAAM+40B;AAFqD,CAA1C,CAA9B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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BAAhB,CAAD,CAAhE;;IACA,IAAIC,6BAAJ,EAAmC;MAC/BH,0BAA0B,GAAGG,6BAA7B;IACH;EACJ;;EACD,OAAO;IAAEJ,2BAAF;IAA+BC;EAA/B,CAAP;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,MAAM75rB,MAAN,CAAa;EACThmK,WAAW,CAAC;IAAEig2B,oBAAoB,GAAG,KAAzB;IAAgCC,kCAAkC,GAAG,KAArE;IAA4EC,gCAAgC,GAAG;EAA/G,CAAD,EAAyH;IAChI,KAAKC,oBAAL,GAA4B,KAA5B;IACA,KAAKC,oBAAL,GAA4B,KAA5B;IACA;AACR;AACA;;IACQ,KAAKz0jB,QAAL,GAAgB,IAAhB;IACA;AACR;AACA;;IACQ,KAAK00jB,UAAL,GAAkB,IAAIpmsB,YAAJ,CAAiB,KAAjB,CAAlB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKqmsB,gBAAL,GAAwB,IAAIrmsB,YAAJ,CAAiB,KAAjB,CAAxB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKsmF,QAAL,GAAgB,IAAItmF,YAAJ,CAAiB,KAAjB,CAAhB;IACA;AACR;AACA;;IACQ,KAAKmnT,OAAL,GAAe,IAAInnT,YAAJ,CAAiB,KAAjB,CAAf;;IACA,IAAI,OAAOwlsB,IAAP,IAAe,WAAnB,EAAgC;MAC5B,MAAM,IAAI3h0B,KAAJ,CAAW,gDAAX,CAAN;IACH;;IACD2h0B,IAAI,CAACc,iBAAL;IACA,MAAM5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4DpjJ,QAA5D,EAAsE;EAClE,IAAI;IACA,MAAM/T,MAAM,GAAG+T,QAAQ,EAAvB;;IACA,IAAI++tB,SAAS,CAAC9yuB,MAAD,CAAb,EAAuB;MACnB,OAAOA,MAAM,CAACoO,KAAP,CAAc5G,CAAD,IAAO;QACvB2vJ,MAAM,CAAC0D,iBAAP,CAAyB,MAAM4sT,YAAY,CAACyqV,WAAb,CAAyB1qyB,CAAzB,CAA/B,EADuB,CAEvB;;QACA,MAAMA,CAAN;MACH,CAJM,CAAP;IAKH;;IACD,OAAOxH,MAAP;EACH,CAVD,CAWA,OAAOwH,CAAP,EAAU;IACN2vJ,MAAM,CAAC0D,iBAAP,CAAyB,MAAM4sT,YAAY,CAACyqV,WAAb,CAAyB1qyB,CAAzB,CAA/B,EADM,CAEN;;IACA,MAAMA,CAAN;EACH;AACJ;;AACD,SAAS+31B,cAAT,CAAwBvjE,GAAxB,EAA6B0tB,IAA7B,EAAmC;EAC/B,IAAIjpzB,KAAK,CAACwtF,OAAN,CAAcy7tB,IAAd,CAAJ,EAAyB;IACrB1tB,GAAG,GAAG0tB,IAAI,CAACt8uB,MAAL,CAAYmyxB,cAAZ,EAA4BvjE,GAA5B,CAAN;EACH,CAFD,MAGK;IACDA,GAAG,GAAG,EAAE,GAAGA,GAAL;MAAU,GAAG0tB;IAAb,CAAN;EACH;;EACD,OAAO1tB,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMq7rB,eAAN,SAA8BD,OAA9B,CAAsC;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIE,6BAA6B,GAAG,EAApC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA,MAAMC,kBAAN,CAAyB;EACrBpq2B,WAAW,CAACH,IAAD,EAAOyc,QAAP,EAAiB;IACxB,KAAKzc,IAAL,GAAYA,IAAZ;IACA,KAAKyc,QAAL,GAAgBA,QAAhB;EACH;;AAJoB;AAMzB;AACA;AACA;;;AACA,SAAS+t1B,gBAAT,CAA0BC,QAA1B,EAAoC;EAChC,OAAOA,QAAQ,CAACpr2B,GAAT,CAAck+J,EAAD,IAAQA,EAAE,CAACqD,aAAxB,CAAP;AACH;AACD;AACA;AACA;;;AACA,MAAM8psB,SAAN,CAAgB;EACZvq2B,WAAW,CAACwq2B,UAAD,EAAa;IACpB,KAAKA,UAAL,GAAkBA,UAAlB;EACH;EACD;AACJ;AACA;;;EACc,IAANjozB,MAAM,GAAG;IACT,MAAMA,MAAM,GAAG,KAAKiozB,UAAL,CAAgBxtzB,UAA/B;IACA,OAAOuF,MAAM,GAAG,IAAIkozB,YAAJ,CAAiBlozB,MAAjB,CAAH,GAA8B,IAA3C;EACH;EACD;AACJ;AACA;;;EACgB,IAARi5J,QAAQ,GAAG;IACX,OAAOsqnB,WAAW,CAAC,KAAK0kC,UAAN,CAAlB;EACH;EACD;AACJ;AACA;;;EACyB,IAAjBn8Y,iBAAiB,GAAG;IACpB,MAAM5tT,aAAa,GAAG,KAAK+psB,UAA3B;IACA,OAAO/psB,aAAa,KACfglqB,cAAc,CAAChlqB,aAAD,CAAd,IAAiCklqB,kBAAkB,CA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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,MAAMm82B,mBAAmB,GAAG,IAAIn82B,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,MAAMo82B,YAAY,GAAG,oMAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM/imB,UAAN,CAAiB;EACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACc,OAAHzrM,GAAG,CAACA,GAAD,EAAM;IACZ,OAAOw6I,YAAY,CAACx6I,GAAD,CAAnB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACc,OAAHj2B,GAAG,CAACA,GAAD,EAAM;IACZ,OAAO2wK,YAAY,CAAC3wK,GAAD,CAAnB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACmB,OAARguO,QAAQ,CAAC/zE,OAAD,EAAU;IACrB,OAAOyqqB,iBAAiB,CAACzqqB,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,OAAZ0qqB,YAAY,CAAC1qqB,OAAD,EAAU;IACzB,OAAO2qqB,qBAAqB,CAAC3qqB,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,OAAL4qqB,KAAK,CAAC5qqB,OAAD,EAAU;IAClB,OAAO6qqB,cAAc,CAAC7qqB,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,OAATq2c,SAAS,CAACA,SAAD,EAAY;IACxB,OAAOy0N,kBAAkB,CAACz0N,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,OAATp5iB,SAAS,CAACA,SAAD,EAAY;IACxB,OAAO8twB,kBAAkB,CAAC9twB,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,OAAP9wB,OAAO,CAACA,OAAD,EAAU;IACpB,OAAO6+xB,gBAAgB,CAAC7+xB,OAAD,CAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACwB,OAAb8+xB,aAAa,CAACjrqB,OAAD,EAAU;IAC1B,OAAOirqB,aAAa,CAACjrqB,OAAD,CAApB;EACH;;EACa,OAAPu+N,OAAO,CAAC2sc,UAAD,EAAa;IACvB,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G;IACjB,OAAO,KAAKD,yBAAL,IAAkC,IAAzC;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIE,kBAAkB,CAAC/3vB,EAAD,EAAK;IACnB,KAAKw3vB,mBAAL,CAAyBpy2B,IAAzB,CAA8B46G,EAA9B;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIg4vB,yBAAyB,GAAG;IACxB,KAAKR,mBAAL,CAAyBxy2B,OAAzB,CAAiCg7G,EAAE,IAAIA,EAAE,EAAzC;;IACA,KAAKw3vB,mBAAL,GAA2B,EAA3B;EACH;EACD;AACJ;AACA;AACA;;;EACIzwwB,KAAK,CAAC/nG,KAAK,GAAGnB,SAAT,EAAoB;IACrB,IAAI,KAAK+sM,OAAT,EACI,KAAKA,OAAL,CAAa7jG,KAAb,CAAmB/nG,KAAnB;EACP;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;;;EACIuluB,QAAQ,CAACxutB,SAAD,EAAYra,IAAZ,EAAkB;IACtB,OAAO,KAAKkvM,OAAL,GAAe,KAAKA,OAAL,CAAa25hB,QAAb,CAAsBxutB,SAAtB,EAAiCra,IAAjC,CAAf,GAAwD,KAA/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;AACA;AACA;AACA;;;EACIu82B,QAAQ,CAACli2B,SAAD,EAAYra,IAAZ,EAAkB;IACtB,OAAO,KAAKkvM,OAAL,GAAe,KAAKA,OAAL,CAAaqtqB,QAAb,CAAsBli2B,SAAtB,EAAiCra,IAAjC,CAAf,GAAwD,IAA/D;EACH;;AApQ0B;AAuQ/B;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMw82B,gBAAN,SAA+BX,wBAA/B,CAAwD;EACpD;AACJ;AACA;AACA;EACqB,IAAbY,aA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AiCsD,gBAA5D;EACH;EACD;AACJ;AACA;;;EACc,IAANt9zB,MAAM,GAAG;IACT,OAAO,KAAK2ykB,OAAZ;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACa,IAAL/wU,KAAK,GAAG;IACR,OAAO,KAAK3gT,MAAL,KAAgBi72B,KAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACe,IAAP55gB,OAAO,GAAG;IACV,OAAO,KAAKrhW,MAAL,KAAgBk72B,OAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACe,IAAP5oR,OAAO,GAAG;IACV,OAAO,KAAKtylB,MAAL,IAAem72B,OAAtB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACgB,IAARn9sB,QAAQ,GAAG;IACX,OAAO,KAAKh+J,MAAL,KAAgBklC,QAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACe,IAAPqtD,OAAO,GAAG;IACV,OAAO,KAAKvyF,MAAL,KAAgBklC,QAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACa,IAALi9S,KAAK,GAAG;IACR,OAAO,CAAC,KAAK+1B,QAAb;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACiB,IAATD,SAAS,GAAG;IACZ,OAAO,CAAC,KAAKpsK,OAAb;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACgB,IAARE,QAAQ,GAAG;IACX,OAAO,KAAKuwqB,SAAL,GAAiB,KAAKA,SAAtB,GAAmC,KAAKv9zB,MAAL,GAAc,KAAKA,MAAL,CAAYgtJ,QAA1B,GAAqC,QAA/E;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIwwqB,aAAa,CAACvF,UAAD,EAAa;IACtB,KAAKgB,cAAL,GAAsBhB,UAAtB;IACA,KAAK6B,oBAAL,GAA4B0C,iBAAiB,CAACvE,UAAD,CAA7C;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AA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,EAAoC;MAChC,KAAKprP,OAAL,CAAasrP,cAAb,CAA4B1mtB,IAA5B;IACH;EACJ;EACD;;;EACAwotB,2BAA2B,CAAC59vB,EAAD,EAAK;IAC5B,KAAKg7vB,mBAAL,GAA2Bh7vB,EAA3B;EACH;EACD;;;EACA69vB,kBAAkB,CAACzotB,IAAD,EAAO;IACrB,IAAIgltB,YAAY,CAAChltB,IAAD,CAAZ,IAAsBA,IAAI,CAACy1C,QAAL,IAAiB,IAA3C,EAAiD;MAC7C,KAAKuwqB,SAAL,GAAiBhmtB,IAAI,CAACy1C,QAAtB;IACH;EACJ;EACD;AACJ;AACA;AACA;AACA;;;EACIuxqB,kBAAkB,CAACR,QAAD,EAAW;IACzB,MAAMkC,WAAW,GAAG,KAAKttP,OAAL,IAAgB,KAAKA,OAAL,CAAavvS,KAAjD;IACA,OAAO,CAAC26hB,QAAD,IAAa,CAAC,CAACkC,WAAf,IAA8B,CAAC,KAAKttP,OAAL,CAAaktP,iBAAb,EAAtC;EACH;EACD;;;EACAJ,KAAK,CAACni3B,IAAD,EAAO;IACR,OAAO,IAAP;EACH;;AAvwBiB;AA0wBtB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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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AAO,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,MAAMs4P,OAAN,SAAsBr6D,SAAtB,CAAgC;EAC5BtsM,WAAW,CAACuiD,MAAD,EAASi4zB,UAAT,EAAqByE,eAArB,EAAsC7tjB,cAAtC,EAAsD02jB,kBAAtD,EAA0E;IACjF;IACA,KAAKA,kBAAL,GAA0BA,kBAA1B;IACA,KAAKx4qB,OAAL,GAAe,IAAIwnE,WAAJ,EAAf;IACA;;IACA,KAAKixmB,WAAL,GAAmB,KAAnB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKnjwB,MAAL,GAAc,IAAIs1C,uDAAJ,EAAd;IACA,KAAKg7d,OAAL,GAAe3ykB,MAAf;;IACA,KAAK65zB,cAAL,CAAoB5B,UAApB;;IACA,KAAK8B,mBAAL,CAAyB2C,eAAzB;;IACA,KAAK/jgB,aAAL,GAAqBoqgB,mBAAmB,CAAC,IAAD,EAAOl0jB,cAAP,CAAxC;EACH;EACD;;;EACAztJ,WAAW,CAACnD,OAAD,EAAU;IACjB,KAAKwntB,eAAL;;IACA,IAAI,CAAC,KAAKD,WAAN,IAAqB,UAAUvntB,OAAnC,EAA4C;MACxC,IAAI,KAAKuntB,WAAT,EAAsB;QAClB,KAAKE,UAAL;;QACA,IAAI,KAAKpL,aAAT,EAAwB;UACpB;UACA;UACA;UACA;UACA,MAAMqL,OAAO,GAAG1ntB,OAAO,CAAC,M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0M3G;EAAA,UAAgJg0tB,0BAAhJ;AAAA;;AACA;EAAA,mDAv0M2Gh0tB,+DAu0M3G,CAA2Fg9G,mBAA3F,EAA4H,CAAC;IACjH30Q,IAAI,EAAEvE,mDAD2G;IAEjH0E,IAAI,EAAE,CAAC;MACC2K,YAAY,EAAE,CAAC4g3B,0BAAD,CADf;MAECrltB,OAAO,EAAE,CAACsltB,0BAAD,EAA6BD,0BAA7B;IAFV,CAAD;EAF2G,CAAD,CAA5H;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMI,SAAN,SAAwB9O,eAAxB,CAAwC;EACpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIt/2B,WAAW,CAAC4/G,QAAD,EAAWi/vB,eAAX,EAA4BrC,cAA5B,EAA4C;IACnD,MAAMoC,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACxC,cAAD,EAAiBqC,eAAjB,CAA1D;IACA,KAAKj/vB,QAAL,GAAgBA,QAAhB;;IACA,KAAKqiwB,gBAAL;;IACA,KAAKM,kBAAL,CAAwB1D,eAAxB;;IACA,KAAK4D,cAAL;;IACA,KAAKvB,sBAAL,CAA4B;MACxBZ,QAAQ,EAAE,IADc;MAExB;MACA;MACA;MACA;MACArr2B,SAAS,EAAE,CAAC,CAAC,KAAKun2B;IANM,CAA5B;EAQH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIn7yB,EAAE,CAACr7C,KAAD,EAAQ;IACN,OAAO,KAAK45F,QAAL,CAAc,K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","sources":["./node_modules/@progress/kendo-editor-common/node_modules/tslib/tslib.es6.js","./node_modules/tslib/tslib.es6.js","./node_modules/@azure/msal-angular/fesm2015/azure-msal-angular.js","./node_modules/@azure/msal-browser/dist/_virtual/_tslib.js","./node_modules/@azure/msal-browser/dist/app/ClientApplication.js","./node_modules/@azure/msal-browser/dist/app/PublicClientApplication.js","./node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.js","./node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.js","./node_modules/@azure/msal-browser/dist/cache/BrowserStorage.js","./node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.js","./node_modules/@azure/msal-browser/dist/cache/MemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/TokenCache.js","./node_modules/@azure/msal-browser/dist/config/Configuration.js","./node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/CryptoOps.js","./node_modules/@azure/msal-browser/dist/crypto/GuidGenerator.js","./node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.js","./node_modules/@azure/msal-browser/dist/encode/Base64Decode.js","./node_modules/@azure/msal-browser/dist/encode/Base64Encode.js","./node_modules/@azure/msal-browser/dist/error/BrowserAuthError.js","./node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.js","./node_modules/@azure/msal-browser/dist/error/NativeAuthError.js","./node_modules/@azure/msal-browser/dist/event/EventHandler.js","./node_modules/@azure/msal-browser/dist/event/EventMessage.js","./node_modules/@azure/msal-browser/dist/event/EventType.js","./node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.js","./node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.js","./node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.js","./node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.js","./node_modules/@azure/msal-browser/dist/navigation/NavigationClient.js","./node_modules/@azure/msal-browser/dist/network/FetchClient.js","./node_modules/@azure/msal-browser/dist/network/XhrClient.js","./node_modules/@azure/msal-browser/dist/packageMetadata.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.js","./node_modules/@azure/msal-browser/dist/utils/BrowserConstants.js","./node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.js","./node_modules/@azure/msal-browser/dist/utils/BrowserStringUtils.js","./node_modules/@azure/msal-browser/dist/utils/BrowserUtils.js","./node_modules/@azure/msal-browser/dist/utils/MathUtils.js","./node_modules/@azure/msal-common/dist/_virtual/_tslib.js","./node_modules/@azure/msal-common/dist/account/AuthToken.js","./node_modules/@azure/msal-common/dist/account/CcsCredential.js","./node_modules/@azure/msal-common/dist/account/ClientInfo.js","./node_modules/@azure/msal-common/dist/authority/Authority.js","./node_modules/@azure/msal-common/dist/authority/AuthorityFactory.js","./node_modules/@azure/msal-common/dist/authority/AuthorityOptions.js","./node_modules/@azure/msal-common/dist/authority/AuthorityType.js","./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.js","./node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.js","./node_modules/@azure/msal-common/dist/authority/ProtocolMode.js","./node_modules/@azure/msal-common/dist/authority/RegionDiscovery.js","./node_modules/@azure/msal-common/dist/cache/CacheManager.js","./node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.js","./node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.js","./node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.js","./node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.js","./node_modules/@azure/msal-common/dist/client/BaseClient.js","./node_modules/@azure/msal-common/dist/client/RefreshTokenClient.js","./node_modules/@azure/msal-common/dist/client/SilentFlowClient.js","./node_modules/@azure/msal-common/dist/config/ClientConfiguration.js","./node_modules/@azure/msal-common/dist/crypto/ICrypto.js","./node_modules/@azure/msal-common/dist/crypto/JoseHeader.js","./node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.js","./node_modules/@azure/msal-common/dist/error/AuthError.js","./node_modules/@azure/msal-common/dist/error/ClientAuthError.js","./node_modules/@azure/msal-common/dist/error/ClientConfigurationError.js","./node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.js","./node_modules/@azure/msal-common/dist/error/JoseHeaderError.js","./node_modules/@azure/msal-common/dist/error/ServerError.js","./node_modules/@azure/msal-common/dist/logger/Logger.js","./node_modules/@azure/msal-common/dist/network/INetworkModule.js","./node_modules/@azure/msal-common/dist/network/NetworkManager.js","./node_modules/@azure/msal-common/dist/network/ThrottlingUtils.js","./node_modules/@azure/msal-common/dist/packageMetadata.js","./node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.js","./node_modules/@azure/msal-common/dist/request/RequestValidator.js","./node_modules/@azure/msal-common/dist/request/ScopeSet.js","./node_modules/@azure/msal-common/dist/response/ResponseHandler.js","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.js","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.js","./node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.js","./node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.js","./node_modules/@azure/msal-common/dist/url/UrlString.js","./node_modules/@azure/msal-common/dist/utils/Constants.js","./node_modules/@azure/msal-common/dist/utils/ProtocolUtils.js","./node_modules/@azure/msal-common/dist/utils/StringUtils.js","./node_modules/@azure/msal-common/dist/utils/TimeUtils.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/AnalyticsPlugin.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Timing.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/ContextTagKeys.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/SeverityLevel.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/IConfig.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/Constants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DataCacheHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EventHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InternalConstants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/W3cTraceParent.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","./node_modules/@microsoft/applicationinsights-shims/dist-esm/Constants.js","./node_modules/@microsoft/applicationinsights-shims/dist-esm/Helpers.js","./node_modules/@microsoft/applicationinsights-shims/dist-esm/TsLibShims.js","./node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","./node_modules/@microsoft/dynamicproto-js/lib/dist/esm/dynamicproto-js.js","./node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","./node_modules/@progress/kendo-angular-buttons/fesm2015/kendo-angular-buttons.js","./node_modules/@progress/kendo-angular-charts/fesm2015/kendo-angular-charts.js","./node_modules/@progress/kendo-angular-common/fesm2015/kendo-angular-common.js","./node_modules/@progress/kendo-angular-dateinputs/fesm2015/kendo-angular-dateinputs.js","./node_modules/@progress/kendo-angular-dialog/fesm2015/kendo-angular-dialog.js","./node_modules/@progress/kendo-angular-dropdowns/fesm2015/kendo-angular-dropdowns.js","./node_modules/@progress/kendo-angular-editor/fesm2015/kendo-angular-editor.js","./node_modules/@progress/kendo-angular-excel-export/fesm2015/kendo-angular-excel-export.js","./node_modules/@progress/kendo-angular-gauges/fesm2015/kendo-angular-gauges.js","./node_modules/@progress/kendo-angular-grid/fesm2015/kendo-angular-grid.js","./node_modules/@progress/kendo-angular-inputs/fesm2015/kendo-angular-inputs.js","./node_modules/@progress/kendo-angular-intl/fesm2015/kendo-angular-intl.js","./node_modules/@progress/kendo-angular-l10n/fesm2015/kendo-angular-l10n.js","./node_modules/@progress/kendo-angular-label/fesm2015/kendo-angular-label.js","./node_modules/@progress/kendo-angular-layout/fesm2015/kendo-angular-layout.js","./node_modules/@progress/kendo-angular-menu/fesm2015/kendo-angular-menu.js","./node_modules/@progress/kendo-angular-notification/fesm2015/kendo-angular-notification.js","./node_modules/@progress/kendo-angular-pdf-export/fesm2015/kendo-angular-pdf-export.js","./node_modules/@progress/kendo-angular-popup/fesm2015/kendo-angular-popup.js","./node_modules/@progress/kendo-angular-progressbar/fesm2015/kendo-angular-progressbar.js","./node_modules/@progress/kendo-angular-scheduler/fesm2015/kendo-angular-scheduler.js","./node_modules/@progress/kendo-angular-toolbar/fesm2015/kendo-angular-toolbar.js","./node_modules/@progress/kendo-angular-tooltip/fesm2015/kendo-angular-tooltip.js","./node_modules/@progress/kendo-angular-treeview/fesm2015/kendo-angular-treeview.js","./node_modules/@progress/kendo-angular-upload/fesm2015/kendo-angular-upload.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code11.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code128.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean13.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean8.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/main.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/msi.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/postnet.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/surface-size.js","./node_modules/@progress/kendo-charts/dist/es2015/chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/default-aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/series-aggregator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bar-chart-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bubble-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/clip-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/fade-in-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/pie-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/find-axis-by-name.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/spline-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/step-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/axis-group-range-tracker.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-label.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/base-theme.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/vertical-box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/target.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/categorical-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart-container.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/categorical-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-bar-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-range-calculator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/scatter-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/color-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/highlight.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-stack-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/stack-wrap.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/spline-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/clip-animation-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/line-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/note-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/pie-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/plotarea-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/point-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/accept-key.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/mousewheel-zoom.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/pannable.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/to-chart-axis-ranges.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/zoom-selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/categorical-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/donut-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/funnel-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/heatmap-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/pie-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-factory.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/radar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/xy-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/spline-polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-line-chart/polar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-scatter-chart/polar-scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/spline-radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-line-chart/radar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/spline-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/step-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/register-charts.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/series-binder.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/base-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/any-has-z-index.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/append-if-not-null.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/are-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/bind-segments.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/categories-count.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/count-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/create-out-of-range-points.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/equals-ignore-case.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/eval-options.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/filter-series-by-type.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-date-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-gradient-overlay.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-value.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/is-date-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/segment-visible.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/single-item-or-array.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/common.js","./node_modules/@progress/kendo-charts/dist/es2015/common/add-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/align-path-to-pixel.js","./node_modules/@progress/kendo-charts/dist/es2015/common/auto-text-color.js","./node_modules/@progress/kendo-charts/dist/es2015/common/clockwise.js","./node_modules/@progress/kendo-charts/dist/es2015/common/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/common/convertable-to-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/create-hash-set.js","./node_modules/@progress/kendo-charts/dist/es2015/common/deep-extend.js","./node_modules/@progress/kendo-charts/dist/es2015/common/default-error-handler.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-styles.js","./node_modules/@progress/kendo-charts/dist/es2015/common/find.js","./node_modules/@progress/kendo-charts/dist/es2015/common/font-loader.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-spacing.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-template.js","./node_modules/@progress/kendo-charts/dist/es2015/common/getter.js","./node_modules/@progress/kendo-charts/dist/es2015/common/grep.js","./node_modules/@progress/kendo-charts/dist/es2015/common/has-classes.js","./node_modules/@progress/kendo-charts/dist/es2015/common/hash-map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/in-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/instance-observer.js","./node_modules/@progress/kendo-charts/dist/es2015/common/interpolate-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-function.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-object.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-charts/dist/es2015/common/keys.js","./node_modules/@progress/kendo-charts/dist/es2015/common/map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/mousewheel-delta.js","./node_modules/@progress/kendo-charts/dist/es2015/common/remove-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/set-default-options.js","./node_modules/@progress/kendo-charts/dist/es2015/common/sparse-array-limits.js","./node_modules/@progress/kendo-charts/dist/es2015/common/style-value.js","./node_modules/@progress/kendo-charts/dist/es2015/core.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis-label.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/chart-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/core/curve-processor.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-value-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/float-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/gradients.js","./node_modules/@progress/kendo-charts/dist/es2015/core/logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/grid-lines-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/radar-numeric-axis-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/note.js","./node_modules/@progress/kendo-charts/dist/es2015/core/numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/point.js","./node_modules/@progress/kendo-charts/dist/es2015/core/polar-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/ring.js","./node_modules/@progress/kendo-charts/dist/es2015/core/root-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/sector.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-builder.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text.js","./node_modules/@progress/kendo-charts/dist/es2015/core/title.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-max.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-min.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-major-unit.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/box-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/ceil.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-grid-line.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-tick.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/floor.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/limit-coordinate.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/rect-to-box.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/absolute-date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-ticks.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/ceil-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-comparer.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-equals.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-index.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/first-day.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/floor-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/lte-date-index.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-dates.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/start-of-week.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-time.js","./node_modules/@progress/kendo-charts/dist/es2015/drawing-utils.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/circular/circular-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/build-label-element.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/get-range.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/pad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/unpad.js","./node_modules/@progress/kendo-charts/dist/es2015/main.js","./node_modules/@progress/kendo-charts/dist/es2015/map.js","./node_modules/@progress/kendo-charts/dist/es2015/map/attribution.js","./node_modules/@progress/kendo-charts/dist/es2015/map/crs.js","./node_modules/@progress/kendo-charts/dist/es2015/map/datums.js","./node_modules/@progress/kendo-charts/dist/es2015/map/extent.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/layer.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/marker.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/shape.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/tile.js","./node_modules/@progress/kendo-charts/dist/es2015/map/location.js","./node_modules/@progress/kendo-charts/dist/es2015/map/map.js","./node_modules/@progress/kendo-charts/dist/es2015/map/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/draggable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/fx.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/observable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/scroller.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/user-events.js","./node_modules/@progress/kendo-charts/dist/es2015/map/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/map/zoom.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/byte-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/data-mode-instances.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/qr-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/iso-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding-result.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/free-cell-visitor.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/version-codewords.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/services.js","./node_modules/@progress/kendo-charts/dist/es2015/services/chart-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/dom-events-builder.js","./node_modules/@progress/kendo-charts/dist/es2015/services/format-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/map-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/sparkline.js","./node_modules/@progress/kendo-charts/dist/es2015/stock.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/fade-out-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator-hint.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/stock-chart.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/field-list.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/getter.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/setter.js","./node_modules/@progress/kendo-common/dist/es2015/main.js","./node_modules/@progress/kendo-common/dist/es2015/support.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","./node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/main.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata-filtering.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort.js","./node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","./node_modules/@progress/kendo-data-query/dist/es2015/utils.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-days.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-weeks.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/adjust-dst.js","./node_modules/@progress/kendo-date-math/dist/es2015/clone-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/constants.js","./node_modules/@progress/kendo-date-math/dist/es2015/create-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/day.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/direction.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/errors.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-in-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/get-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/is-equal-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/is-equal.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/normalize-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/prev-day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/abbr-timezone.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/find-rule.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/find-zone.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/get-zone.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/offset.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/rule-to-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/timezone-names.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/timezones.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/to-local-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/zone-and-rule.js","./node_modules/@progress/kendo-date-math/dist/es2015/tz/zoned-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/week-in-year.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start-reverse.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/create-stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/fit.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/translate-to-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/easing-functions.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/export-image.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface-cursor.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/utils/render-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/animation-frame.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/class.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/named-colors.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/parse-color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/html-encode.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/log-to-console.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/observable.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/save-as.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/template.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/throttle.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/base-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/has-observers.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/options-store.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/drawing.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/size.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/to-matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/linear-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/radial-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/html/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/measurable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/paintable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/traversable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-accessors.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-geometry.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/path-parser.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/deflate.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/drawing.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-root.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/shapes-quad-tree.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/element.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/layout.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/text.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-clippend-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/clip-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/definition-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-group.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-stop-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/linear-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/radial-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-all-attributes.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-attribute.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-style.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/lru-cache.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/measure-text.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/append.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/arabic-to-roman.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/bind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/create-promise.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/defined.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/definition-id.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/deg.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-offset.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-padding.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-scale.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-size.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-styles.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-base64.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-utf.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-coordinates.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-element.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/is-transparent.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/last.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/limit-value.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/merge-sort.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/now.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/promise-all.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/rad.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/round.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/unbind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/@progress/kendo-editor-common/dist/es2015/align.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockNode.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockquote.js","./node_modules/@progress/kendo-editor-common/dist/es2015/cleanFormatting.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/align-rules.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/commands.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/constants.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/indent-rules.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/keymap.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/list-settings.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/schema.js","./node_modules/@progress/kendo-editor-common/dist/es2015/find-replace.js","./node_modules/@progress/kendo-editor-common/dist/es2015/image.js","./node_modules/@progress/kendo-editor-common/dist/es2015/indent.js","./node_modules/@progress/kendo-editor-common/dist/es2015/inline-style.js","./node_modules/@progress/kendo-editor-common/dist/es2015/link.js","./node_modules/@progress/kendo-editor-common/dist/es2015/listConvert.js","./node_modules/@progress/kendo-editor-common/dist/es2015/lists.js","./node_modules/@progress/kendo-editor-common/dist/es2015/main.js","./node_modules/@progress/kendo-editor-common/dist/es2015/mark.js","./node_modules/@progress/kendo-editor-common/dist/es2015/paste.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/caret-color.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/highlight.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/image-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/placeholder.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/resize-utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/spaces-fix.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/column-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/row-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-view.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/source.js","./node_modules/@progress/kendo-editor-common/dist/es2015/table.js","./node_modules/@progress/kendo-editor-common/dist/es2015/text.js","./node_modules/@progress/kendo-editor-common/dist/es2015/utils.js","./node_modules/@progress/kendo-file-saver/dist/es2015/base64.js","./node_modules/@progress/kendo-file-saver/dist/es2015/main.js","./node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/set-data.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@progress/kendo-intl/dist/es2015/common/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-intl/dist/es2015/common/pad.js","./node_modules/@progress/kendo-intl/dist/es2015/common/round.js","./node_modules/@progress/kendo-intl/dist/es2015/dates.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@progress/kendo-intl/dist/es2015/error-details.js","./node_modules/@progress/kendo-intl/dist/es2015/errors.js","./node_modules/@progress/kendo-intl/dist/es2015/format.js","./node_modules/@progress/kendo-intl/dist/es2015/main.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/@progress/kendo-licensing/dist/index-esm.js","./node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/main.js","./node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/getter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","./node_modules/@progress/kendo-popup-common/dist/es2015/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-element.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-point.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align.js","./node_modules/@progress/kendo-popup-common/dist/es2015/apply-location-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/dom-utils.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/is-body-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/main.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-element.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-with-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/z-index.js","./node_modules/@progress/kendo-recurrence/dist/es2015/expand.js","./node_modules/@progress/kendo-recurrence/dist/es2015/frequencies.js","./node_modules/@progress/kendo-recurrence/dist/es2015/limitations.js","./node_modules/@progress/kendo-recurrence/dist/es2015/main.js","./node_modules/@progress/kendo-recurrence/dist/es2015/parse-rule.js","./node_modules/@progress/kendo-recurrence/dist/es2015/serialize-rule.js","./node_modules/@progress/kendo-recurrence/dist/es2015/utils.js","./node_modules/@progress/kendo-recurrence/dist/es2015/utils/duration.js","./node_modules/@progress/kendo-recurrence/dist/es2015/utils/has-modifiers.js","./node_modules/@progress/kendo-recurrence/dist/es2015/utils/parse-date-time.js","./node_modules/@progress/kendo-recurrence/dist/es2015/utils/serialize-date-time.js","./node_modules/@progress/pako-esm/dist/pako-esm2015.js","./node_modules/@telerik/kendo-draggable/dist/es2015/main.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/set-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/pad.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/round.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/error-details.js","./node_modules/@telerik/kendo-intl/dist/es2015/errors.js","./node_modules/@telerik/kendo-intl/dist/es2015/format.js","./node_modules/@telerik/kendo-intl/dist/es2015/main.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/hammerjs/hammer.js","./node_modules/prosemirror-commands/dist/index.es.js","./node_modules/prosemirror-dropcursor/dist/index.es.js","./node_modules/prosemirror-gapcursor/dist/index.es.js","./node_modules/prosemirror-history/dist/index.es.js","./node_modules/prosemirror-inputrules/dist/index.es.js","./node_modules/prosemirror-keymap/dist/index.es.js","./node_modules/prosemirror-model/dist/index.es.js","./node_modules/prosemirror-schema-list/dist/index.es.js","./node_modules/prosemirror-state/dist/index.es.js","./node_modules/prosemirror-tables/dist/index.es.js","./node_modules/prosemirror-transform/dist/index.es.js","./node_modules/prosemirror-view/dist/index.es.js","./node_modules/rope-sequence/dist/index.es.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/of.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/buffer.js","./node_modules/rxjs/_esm2015/internal/operators/bufferCount.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/partition.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/skipWhile.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/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/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/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/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/not.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/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/google-maps/fesm2020/google-maps.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/orderedmap/dist/index-es.js","./node_modules/w3c-keyname/index.es.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { InjectionToken, Injectable, Inject, VERSION, Component, NgModule } from '@angular/core';\nimport { Location, DOCUMENT, CommonModule } from '@angular/common';\nimport { WrapperSKU, InteractionStatus, EventMessageUtils, InteractionType, BrowserConfigurationAuthError, UrlString, BrowserUtils, StringUtils, NavigationClient } from '@azure/msal-browser';\nimport { from, Subject, BehaviorSubject, of, EMPTY } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { map, concatMap, catchError, switchMap } from 'rxjs/operators';\nimport { __awaiter } from 'tslib';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/router';\nconst MSAL_INSTANCE = new InjectionToken(\"MSAL_INSTANCE\");\nconst MSAL_GUARD_CONFIG = new InjectionToken(\"MSAL_GUARD_CONFIG\");\nconst MSAL_INTERCEPTOR_CONFIG = new InjectionToken(\"MSAL_INTERCEPTOR_CONFIG\");\n\n/* eslint-disable header/header */\nconst name = \"@azure/msal-angular\";\nconst version = \"2.3.1\";\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalService {\n constructor(instance, location) {\n this.instance = instance;\n this.location = location;\n const hash = this.location.path(true).split(\"#\").pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\n }\n initialize() {\n return from(this.instance.initialize());\n }\n acquireTokenPopup(request) {\n return from(this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request) {\n return from(this.instance.acquireTokenRedirect(request));\n }\n acquireTokenSilent(silentRequest) {\n return from(this.instance.acquireTokenSilent(silentRequest));\n }\n handleRedirectObservable(hash) {\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\n }\n loginPopup(request) {\n return from(this.instance.loginPopup(request));\n }\n loginRedirect(request) {\n return from(this.instance.loginRedirect(request));\n }\n logout(logoutRequest) {\n return from(this.instance.logout(logoutRequest));\n }\n logoutRedirect(logoutRequest) {\n return from(this.instance.logoutRedirect(logoutRequest));\n }\n logoutPopup(logoutRequest) {\n return from(this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request) {\n return from(this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger() {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(name, version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger) {\n this.logger = logger.clone(name, version);\n this.instance.setLogger(logger);\n }\n}\nMsalService.ɵfac = function MsalService_Factory(t) { return new (t || MsalService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalService, factory: MsalService.ɵfac });\nMsalService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\n { type: Location }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalBroadcastService {\n constructor(msalInstance, authService) {\n this.msalInstance = msalInstance;\n this.authService = authService;\n this._msalSubject = new Subject();\n this.msalSubject$ = this._msalSubject.asObservable();\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject(InteractionStatus.Startup);\n this.inProgress$ = this._inProgress.asObservable();\n this.msalInstance.addEventCallback((message) => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, this._inProgress.value);\n if (status !== null) {\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`);\n this._inProgress.next(status);\n }\n });\n }\n}\nMsalBroadcastService.ɵfac = function MsalBroadcastService_Factory(t) { return new (t || MsalBroadcastService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(MsalService)); };\nMsalBroadcastService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalBroadcastService, factory: MsalBroadcastService.ɵfac });\nMsalBroadcastService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\n { type: MsalService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalBroadcastService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: MsalService }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalGuard {\n constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {\n this.msalGuardConfig = msalGuardConfig;\n this.msalBroadcastService = msalBroadcastService;\n this.authService = authService;\n this.location = location;\n this.router = router;\n // Subscribing so events in MsalGuard will set inProgress$ observable\n this.msalBroadcastService.inProgress$.subscribe();\n }\n /**\n * Parses url string to UrlTree\n * @param url\n */\n parseUrl(url) {\n return this.router.parseUrl(url);\n }\n /**\n * Builds the absolute url for the destination page\n * @param path Relative path of requested page\n * @returns Full destination url\n */\n getDestinationUrl(path) {\n this.authService.getLogger().verbose(\"Guard - getting destination url\");\n // Absolute base url for the application (default to origin if base element not present)\n const baseElements = document.getElementsByTagName(\"base\");\n const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin);\n // Path of page (including hash, if using hash routing)\n const pathUrl = this.location.prepareExternalUrl(path);\n // Hash location strategy\n if (pathUrl.startsWith(\"#\")) {\n this.authService.getLogger().verbose(\"Guard - destination by hash routing\");\n return `${baseUrl}/${pathUrl}`;\n }\n /*\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\n */\n return `${baseUrl}${path}`;\n }\n /**\n * Interactively prompt the user to login\n * @param url Path of the requested page\n */\n loginInteractively(state) {\n const authRequest = typeof this.msalGuardConfig.authRequest === \"function\"\n ? this.msalGuardConfig.authRequest(this.authService, state)\n : Object.assign({}, this.msalGuardConfig.authRequest);\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Guard - logging in by popup\");\n return this.authService.loginPopup(authRequest)\n .pipe(map((response) => {\n this.authService.getLogger().verbose(\"Guard - login by popup successful, can activate, setting active account\");\n this.authService.instance.setActiveAccount(response.account);\n return true;\n }));\n }\n this.authService.getLogger().verbose(\"Guard - logging in by redirect\");\n const redirectStartPage = this.getDestinationUrl(state.url);\n return this.authService.loginRedirect(Object.assign({ redirectStartPage }, authRequest))\n .pipe(map(() => false));\n }\n /**\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as reidrect, and calls handleRedirectObservable\n * @param state\n */\n activateHelper(state) {\n if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Guard activated\");\n /*\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\n * short-circuit to prevent redirecting or popups.\n */\n if (typeof window !== \"undefined\") {\n if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) {\n this.authService.getLogger().warning(\"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\");\n return of(false);\n }\n }\n else {\n this.authService.getLogger().info(\"Guard - window is undefined, MSAL does not support server-side token acquisition\");\n return of(true);\n }\n /**\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\n */\n if (this.msalGuardConfig.loginFailedRoute) {\n this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute);\n }\n // Capture current path before it gets changed by handleRedirectObservable\n const currentPath = this.location.path(true);\n return this.authService.handleRedirectObservable()\n .pipe(concatMap(() => {\n if (!this.authService.instance.getAllAccounts().length) {\n if (state) {\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, log in required to activate\");\n return this.loginInteractively(state);\n }\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, no state, cannot load\");\n return of(false);\n }\n this.authService.getLogger().verbose(\"Guard - at least 1 account exists, can activate or load\");\n // Prevent navigating the app to /#code= or /code=\n if (state) {\n /*\n * Path routing:\n * state.url: /#code=...\n * state.root.fragment: code=...\n */\n /*\n * Hash routing:\n * state.url: /code\n * state.root.fragment: null\n */\n const urlContainsCode = this.includesCode(state.url);\n const fragmentContainsCode = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`);\n const hashRouting = this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\n this.authService.getLogger().info(\"Guard - Hash contains known code response, stopping navigation.\");\n // Path routing (navigate to current path without hash)\n if (currentPath.indexOf(\"#\") > -1) {\n return of(this.parseUrl(this.location.path()));\n }\n // Hash routing (navigate to root path)\n return of(this.parseUrl(\"\"));\n }\n }\n return of(true);\n }), catchError((error) => {\n this.authService.getLogger().error(\"Guard - error while logging in, unable to activate\");\n this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);\n /**\n * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route\n * Apps using Angular 9 will receive of(false) in canLoad interface, as it does not support UrlTree return types\n */\n if (this.loginFailedRoute && parseInt(VERSION.major, 10) > 9 && state) {\n this.authService.getLogger().verbose(\"Guard - loginFailedRoute set, redirecting\");\n return of(this.loginFailedRoute);\n }\n return of(false);\n }));\n }\n includesCode(path) {\n return (path.lastIndexOf(\"/code\") > -1 &&\n path.lastIndexOf(\"/code\") === path.length - \"/code\".length) || // path.endsWith(\"/code\")\n path.indexOf(\"#code=\") > -1 ||\n path.indexOf(\"&code=\") > -1;\n }\n canActivate(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivate\");\n return this.activateHelper(state);\n }\n canActivateChild(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivateChild\");\n return this.activateHelper(state);\n }\n canLoad() {\n this.authService.getLogger().verbose(\"Guard - canLoad\");\n // @ts-ignore\n return this.activateHelper();\n }\n}\nMsalGuard.ɵfac = function MsalGuard_Factory(t) { return new (t || MsalGuard)(ɵngcc0.ɵɵinject(MSAL_GUARD_CONFIG), ɵngcc0.ɵɵinject(MsalBroadcastService), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\nMsalGuard.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalGuard, factory: MsalGuard.ɵfac });\nMsalGuard.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_GUARD_CONFIG,] }] },\n { type: MsalBroadcastService },\n { type: MsalService },\n { type: Location },\n { type: Router }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalGuard, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_GUARD_CONFIG]\n }] }, { type: MsalBroadcastService }, { type: MsalService }, { type: ɵngcc1.Location }, { type: ɵngcc2.Router }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalInterceptor {\n constructor(msalInterceptorConfig, authService, location, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n document) {\n this.msalInterceptorConfig = msalInterceptorConfig;\n this.authService = authService;\n this.location = location;\n this._document = document;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req, next) {\n if (this.msalInterceptorConfig.interactionType !== InteractionType.Popup && this.msalInterceptorConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\");\n const scopes = this.getScopesForEndpoint(req.url, req.method);\n // If no scopes for endpoint, does not acquire token\n if (!scopes || scopes.length === 0) {\n this.authService.getLogger().verbose(\"Interceptor - no scopes for endpoint\");\n return next.handle(req);\n }\n // Sets account as active account or first account\n let account;\n if (!!this.authService.instance.getActiveAccount()) {\n this.authService.getLogger().verbose(\"Interceptor - active account selected\");\n account = this.authService.instance.getActiveAccount();\n }\n else {\n this.authService.getLogger().verbose(\"Interceptor - no active account, fallback to first account\");\n account = this.authService.instance.getAllAccounts()[0];\n }\n const authRequest = typeof this.msalInterceptorConfig.authRequest === \"function\"\n ? this.msalInterceptorConfig.authRequest(this.authService, req, { account: account })\n : Object.assign(Object.assign({}, this.msalInterceptorConfig.authRequest), { account });\n this.authService.getLogger().info(`Interceptor - ${scopes.length} scopes found for endpoint`);\n this.authService.getLogger().infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`);\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\n return this.authService.acquireTokenSilent(Object.assign(Object.assign({}, authRequest), { scopes, account }))\n .pipe(catchError(() => {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\");\n return this.acquireTokenInteractively(authRequest, scopes);\n }), switchMap((result) => {\n if (!result.accessToken) {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\");\n return this.acquireTokenInteractively(authRequest, scopes);\n }\n return of(result);\n }), switchMap((result) => {\n this.authService.getLogger().verbose(\"Interceptor - setting authorization headers\");\n const headers = req.headers\n .set(\"Authorization\", `Bearer ${result.accessToken}`);\n const requestClone = req.clone({ headers });\n return next.handle(requestClone);\n }));\n }\n /**\n * Invoke interaction for the given set of scopes\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @returns Result from the interactive request\n */\n acquireTokenInteractively(authRequest, scopes) {\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by popup\");\n return this.authService.acquireTokenPopup(Object.assign(Object.assign({}, authRequest), { scopes }));\n }\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by redirect\");\n const redirectStartPage = window.location.href;\n this.authService.acquireTokenRedirect(Object.assign(Object.assign({}, authRequest), { scopes, redirectStartPage }));\n return EMPTY;\n }\n /**\n * Looks up the scopes for the given endpoint from the protectedResourceMap\n * @param endpoint Url of the request\n * @param httpMethod Http method of the request\n * @returns Array of scopes, or null if not found\n *\n */\n getScopesForEndpoint(endpoint, httpMethod) {\n this.authService.getLogger().verbose(\"Interceptor - getting scopes for endpoint\");\n // Ensures endpoints and protected resources compared are normalized\n const normalizedEndpoint = this.location.normalize(endpoint);\n const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());\n const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);\n // Check absolute urls of resources first before checking relative to prevent incorrect matching where multiple resources have similar relative urls\n if (matchingProtectedResources.absoluteResources.length > 0) {\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.absoluteResources, httpMethod);\n }\n else if (matchingProtectedResources.relativeResources.length > 0) {\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.relativeResources, httpMethod);\n }\n return null;\n }\n /**\n * Finds resource endpoints that match request endpoint\n * @param protectedResourcesEndpoints\n * @param endpoint\n * @returns\n */\n matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {\n const matchingResources = { absoluteResources: [], relativeResources: [] };\n protectedResourcesEndpoints.forEach(key => {\n // Normalizes and adds resource to matchingResources.absoluteResources if key matches endpoint. StringUtils.matchPattern accounts for wildcards\n const normalizedKey = this.location.normalize(key);\n if (StringUtils.matchPattern(normalizedKey, endpoint)) {\n matchingResources.absoluteResources.push(key);\n }\n // Get url components for relative urls\n const absoluteKey = this.getAbsoluteUrl(key);\n const keyComponents = new UrlString(absoluteKey).getUrlComponents();\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\n const endpointComponents = new UrlString(absoluteEndpoint).getUrlComponents();\n // Normalized key should include query strings if applicable\n const relativeNormalizedKey = keyComponents.QueryString ? `${keyComponents.AbsolutePath}?${keyComponents.QueryString}` : this.location.normalize(keyComponents.AbsolutePath);\n // Add resource to matchingResources.relativeResources if same origin, relativeKey matches endpoint, and is not empty\n if (keyComponents.HostNameAndPort === endpointComponents.HostNameAndPort && StringUtils.matchPattern(relativeNormalizedKey, absoluteEndpoint) && relativeNormalizedKey !== \"\" && relativeNormalizedKey !== \"/*\") {\n matchingResources.relativeResources.push(key);\n }\n });\n return matchingResources;\n }\n /**\n * Transforms relative urls to absolute urls\n * @param url\n * @returns\n */\n getAbsoluteUrl(url) {\n const link = this._document.createElement(\"a\");\n link.href = url;\n return link.href;\n }\n /**\n * Finds scopes from first matching endpoint with HTTP method that matches request\n * @param protectedResourceMap Protected resource map\n * @param endpointArray Array of resources that match request endpoint\n * @param httpMethod Http method of the request\n * @returns\n */\n matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {\n const allMatchedScopes = [];\n // Check each matched endpoint for matching HttpMethod and scopes\n endpointArray.forEach(matchedEndpoint => {\n const scopesForEndpoint = [];\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\n // Return if resource is unprotected\n if (methodAndScopesArray === null) {\n allMatchedScopes.push(null);\n return;\n }\n methodAndScopesArray.forEach(entry => {\n // Entry is either array of scopes or ProtectedResourceScopes object\n if (typeof entry === \"string\") {\n scopesForEndpoint.push(entry);\n }\n else {\n // Ensure methods being compared are normalized\n const normalizedRequestMethod = httpMethod.toLowerCase();\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\n // Method in protectedResourceMap matches request http method\n if (normalizedResourceMethod === normalizedRequestMethod) {\n // Validate if scopes comes null to unprotect the resource in a certain http method \n if (entry.scopes === null) {\n allMatchedScopes.push(null);\n }\n else {\n entry.scopes.forEach((scope) => {\n scopesForEndpoint.push(scope);\n });\n }\n }\n }\n });\n // Only add to all scopes if scopes for endpoint and method is found\n if (scopesForEndpoint.length > 0) {\n allMatchedScopes.push(scopesForEndpoint);\n }\n });\n if (allMatchedScopes.length > 0) {\n if (allMatchedScopes.length > 1) {\n this.authService.getLogger().warning(\"Interceptor - More than 1 matching scopes for endpoint found.\");\n }\n // Returns scopes for first matching endpoint\n return allMatchedScopes[0];\n }\n return null;\n }\n}\nMsalInterceptor.ɵfac = function MsalInterceptor_Factory(t) { return new (t || MsalInterceptor)(ɵngcc0.ɵɵinject(MSAL_INTERCEPTOR_CONFIG), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(DOCUMENT)); };\nMsalInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalInterceptor, factory: MsalInterceptor.ɵfac });\nMsalInterceptor.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INTERCEPTOR_CONFIG,] }] },\n { type: MsalService },\n { type: Location },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalInterceptor, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INTERCEPTOR_CONFIG]\n }] }, { type: MsalService }, { type: ɵngcc1.Location }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalRedirectComponent {\n constructor(authService) {\n this.authService = authService;\n }\n ngOnInit() {\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\");\n this.authService.initialize().pipe(concatMap(() => {\n return this.authService.handleRedirectObservable();\n })).subscribe();\n }\n}\nMsalRedirectComponent.ɵfac = function MsalRedirectComponent_Factory(t) { return new (t || MsalRedirectComponent)(ɵngcc0.ɵɵdirectiveInject(MsalService)); };\nMsalRedirectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MsalRedirectComponent, selectors: [[\"app-redirect\"]], decls: 0, vars: 0, template: function MsalRedirectComponent_Template(rf, ctx) { }, encapsulation: 2 });\nMsalRedirectComponent.ctorParameters = () => [\n { type: MsalService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalRedirectComponent, [{\n type: Component,\n args: [{\n selector: \"app-redirect\",\n template: \"\"\n }]\n }], function () { return [{ type: MsalService }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalModule {\n static forRoot(msalInstance, guardConfig, interceptorConfig) {\n return {\n ngModule: MsalModule,\n providers: [\n {\n provide: MSAL_INSTANCE,\n useValue: msalInstance\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useValue: guardConfig\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useValue: interceptorConfig\n },\n MsalService\n ]\n };\n }\n}\nMsalModule.ɵfac = function MsalModule_Factory(t) { return new (t || MsalModule)(); };\nMsalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MsalModule });\nMsalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n MsalGuard,\n MsalBroadcastService\n ], imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalModule, [{\n type: NgModule,\n args: [{\n declarations: [MsalRedirectComponent],\n imports: [\n CommonModule\n ],\n providers: [\n MsalGuard,\n MsalBroadcastService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MsalModule, { declarations: function () { return [MsalRedirectComponent]; }, imports: function () { return [CommonModule]; } }); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Custom navigation used for Angular client-side navigation.\n * See performance doc for details:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/v2-docs/performance.md\n */\nclass MsalCustomNavigationClient extends NavigationClient {\n constructor(authService, router, location) {\n super();\n this.authService = authService;\n this.router = router;\n this.location = location;\n }\n navigateInternal(url, options) {\n const _super = Object.create(null, {\n navigateInternal: { get: () => super.navigateInternal }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\");\n this.authService.getLogger().verbose(\"MsalCustomNavigationClient - navigating\");\n this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`);\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\n if (options.noHistory) {\n return _super.navigateInternal.call(this, url, options);\n }\n else {\n // Normalizing newUrl if no query string\n const urlComponents = new UrlString(url).getUrlComponents();\n const newUrl = urlComponents.QueryString ? `${urlComponents.AbsolutePath}?${urlComponents.QueryString}` : this.location.normalize(urlComponents.AbsolutePath);\n this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });\n }\n return Promise.resolve(options.noHistory);\n });\n }\n}\nMsalCustomNavigationClient.ɵfac = function MsalCustomNavigationClient_Factory(t) { return new (t || MsalCustomNavigationClient)(ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc2.Router), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalCustomNavigationClient.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalCustomNavigationClient, factory: MsalCustomNavigationClient.ɵfac });\nMsalCustomNavigationClient.ctorParameters = () => [\n { type: MsalService },\n { type: Router },\n { type: Location }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalCustomNavigationClient, [{\n type: Injectable\n }], function () { return [{ type: MsalService }, { type: ɵngcc2.Router }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalCustomNavigationClient, MsalGuard, MsalInterceptor, MsalModule, MsalRedirectComponent, MsalService, version };\n\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __spread };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { CryptoOps } from '../crypto/CryptoOps.js';\nimport { Constants, PerformanceEvents, PromptValue, StringUtils, Logger, StubPerformanceClient, DEFAULT_CRYPTO_IMPLEMENTATION, ServerError, InteractionRequiredAuthError } from '@azure/msal-common';\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.js';\nimport { buildConfiguration } from '../config/Configuration.js';\nimport { InteractionType, ApiId, TemporaryCacheKeys, BrowserCacheLocation, BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { name, version } from '../packageMetadata.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { EventHandler } from '../event/EventHandler.js';\nimport { PopupClient } from '../interaction_client/PopupClient.js';\nimport { RedirectClient } from '../interaction_client/RedirectClient.js';\nimport { SilentIframeClient } from '../interaction_client/SilentIframeClient.js';\nimport { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.js';\nimport { TokenCache } from '../cache/TokenCache.js';\nimport { NativeInteractionClient } from '../interaction_client/NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { SilentCacheClient } from '../interaction_client/SilentCacheClient.js';\nimport { SilentAuthCodeClient } from '../interaction_client/SilentAuthCodeClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserPerformanceClient } from '../telemetry/BrowserPerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ClientApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n function ClientApplication(configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n }\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n ClientApplication.prototype.initialize = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.info(\"initialize has already been called, exiting early.\");\r\n return [2 /*return*/];\r\n }\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n if (!this.config.system.allowNativeBroker) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n _a = this;\r\n return [4 /*yield*/, NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout)];\r\n case 2:\r\n _a.nativeExtensionProvider = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n this.logger.verbose(e_1);\r\n return [3 /*break*/, 4];\r\n case 4:\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // #region Redirect Flow\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n ClientApplication.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var loggedInAccounts, redirectResponseKey, response, request, redirectResponse, nativeClient, correlationId, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n request = this.browserStorage.getCachedNativeRequest();\r\n redirectResponse = void 0;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, request.correlationId);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n }\r\n else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n response = redirectResponse.then(function (result) {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n return result;\r\n }).catch(function (e) {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return [2 /*return*/, null];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, isLoggedIn, result, nativeClient, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), request.correlationId);\r\n result = nativeClient.acquireTokenRedirect(request).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n return [2 /*return*/, result.catch(function (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Flow\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenPopup = function (request) {\r\n var _this = this;\r\n var correlationId = this.getRequestCorrelationId(request);\r\n var atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n // If logged in, emit acquire token events\r\n var loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n var result;\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then(function (response) {\r\n _this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n var popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n return result.then(function (result) {\r\n // If logged in, emit acquire token events\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return result;\r\n }).catch(function (e) {\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n };\r\n // #endregion\r\n // #region Silent Flow\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.ssoSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, validRequest, ssoSilentMeasurement, result, silentIframeClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n validRequest = __assign(__assign({}, request), { prompt: PromptValue.NONE, correlationId: correlationId });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var silentIframeClient = _this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n ssoSilentMeasurement.endMeasurement({\r\n success: true\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n ssoSilentMeasurement.endMeasurement({\r\n success: false\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByCode = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atbcMeasurement, hybridAuthCode_1, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n try {\r\n if (request.code) {\r\n hybridAuthCode_1 = request.code;\r\n response = this.hybridAuthCodeResponses.get(hybridAuthCode_1);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync(__assign(__assign({}, request), { correlationId: correlationId }))\r\n .then(function (result) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n atbcMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode_1, response);\r\n }\r\n else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return [2 /*return*/, this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n })];\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n }\r\n catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n ClientApplication.prototype.acquireTokenByCodeAsync = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentAuthCodeClient, silentTokenResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n return [4 /*yield*/, silentAuthCodeClient.acquireToken(request)];\r\n case 1:\r\n silentTokenResult = _a.sent();\r\n return [2 /*return*/, silentTokenResult];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a refresh token.\r\n *\r\n * @param {@link SilentRequest}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atbrtMeasurement, silentRefreshClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n atbrtMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, request.correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\r\n silentRefreshClient = this.createSilentRefreshClient(request.correlationId);\r\n return [2 /*return*/, silentRefreshClient.acquireToken(request)\r\n .then(function (result) {\r\n atbrtMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n var isServerError = e instanceof ServerError;\r\n var isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\r\n var isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\r\n _this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\r\n var silentIframeClient = _this.createSilentIframeClient(request.correlationId);\r\n return silentIframeClient.acquireToken(request)\r\n .then(function (result) {\r\n atbrtMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n atbrtMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n atbrtMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n ClientApplication.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return [2 /*return*/, this.logoutRedirect(__assign({ correlationId: correlationId }, logoutRequest))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutRedirect = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, redirectClient;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n redirectClient = this.createRedirectClient(correlationId);\r\n return [2 /*return*/, redirectClient.logout(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutPopup = function (logoutRequest) {\r\n try {\r\n var correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n var popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n // #endregion\r\n // #region Account APIs\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n ClientApplication.prototype.getAllAccounts = function () {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n };\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByUsername = function (userName) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching username: \" + userName);\r\n return allAccounts.filter(function (accountObj) { return accountObj.username.toLowerCase() === userName.toLowerCase(); })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByHomeId = function (homeAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching homeAccountId: \" + homeAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.homeAccountId === homeAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByLocalId = function (localAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching localAccountId: \" + localAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.localAccountId === localAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n ClientApplication.prototype.setActiveAccount = function (account) {\r\n this.browserStorage.setActiveAccount(account);\r\n };\r\n /**\r\n * Gets the currently active account\r\n */\r\n ClientApplication.prototype.getActiveAccount = function () {\r\n return this.browserStorage.getActiveAccount();\r\n };\r\n // #endregion\r\n // #region Helpers\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n * * @param interactionType\r\n */\r\n ClientApplication.prototype.preflightBrowserEnvironmentCheck = function (interactionType) {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest();\r\n }\r\n };\r\n /**\r\n * Helper to validate app environment before making a request.\r\n * @param request\r\n * @param interactionType\r\n */\r\n ClientApplication.prototype.preflightInteractiveRequest = function () {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n this.browserStorage.setInteractionInProgress(true);\r\n };\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenNative = function (request, apiId, accountId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeClient;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), request.correlationId);\r\n return [2 /*return*/, nativeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n ClientApplication.prototype.canUseNative = function (request, accountId) {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"canUseNative: prompt = \" + request.prompt + \" is not compatible with native flow, returning false\");\r\n return false;\r\n }\r\n }\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n ClientApplication.prototype.getNativeAccountId = function (request) {\r\n var account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n return account && account.nativeAccountId || \"\";\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createPopupClient = function (correlationId) {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createRedirectClient = function (correlationId) {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createSilentIframeClient = function (correlationId) {\r\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentCacheClient = function (correlationId) {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentRefreshClient = function (correlationId) {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentAuthCodeClient = function (correlationId) {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n ClientApplication.prototype.addEventCallback = function (callback) {\r\n return this.eventHandler.addEventCallback(callback);\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n ClientApplication.prototype.removeEventCallback = function (callbackId) {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n };\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.addPerformanceCallback = function (callback) {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n ClientApplication.prototype.removePerformanceCallback = function (callbackId) {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.enableAccountStorageEvents = function () {\r\n this.eventHandler.enableAccountStorageEvents();\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.disableAccountStorageEvents = function () {\r\n this.eventHandler.disableAccountStorageEvents();\r\n };\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n ClientApplication.prototype.getTokenCache = function () {\r\n return this.tokenCache;\r\n };\r\n /**\r\n * Returns the logger instance\r\n */\r\n ClientApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n ClientApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n ClientApplication.prototype.initializeWrapperLibrary = function (sku, version) {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n };\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n ClientApplication.prototype.setNavigationClient = function (navigationClient) {\r\n this.navigationClient = navigationClient;\r\n };\r\n /**\r\n * Returns the configuration object\r\n */\r\n ClientApplication.prototype.getConfiguration = function () {\r\n return this.config;\r\n };\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial} [request]\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.getRequestCorrelationId = function (request) {\r\n if (request === null || request === void 0 ? void 0 : request.correlationId) {\r\n return request.correlationId;\r\n }\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n };\r\n return ClientApplication;\r\n}());\n\nexport { ClientApplication };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, Constants } from '@azure/msal-common';\nimport { DEFAULT_REQUEST, InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { ClientApplication } from './ClientApplication.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nvar PublicClientApplication = /** @class */ (function (_super) {\r\n __extends(PublicClientApplication, _super);\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n function PublicClientApplication(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n _this.activeSilentTokenRequests = new Map();\r\n return _this;\r\n }\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n PublicClientApplication.prototype.loginRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return [2 /*return*/, this.acquireTokenRedirect(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PublicClientApplication.prototype.loginPopup = function (request) {\r\n var correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)));\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atsMeasurement, account, thumbprint, silentRequestKey, cachedResponse, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n thumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n silentRequestKey = JSON.stringify(thumbprint);\r\n cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n response = this.acquireTokenSilentAsync(__assign(__assign({}, request), { correlationId: correlationId }), account)\r\n .then(function (result) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n atsMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atsMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return [2 /*return*/, response];\r\n }\r\n else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return [2 /*return*/, cachedResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilentAsync = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var astsAsyncMeasurement, result, silentRequest, silentCacheClient, silentRequest_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n if (!(NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId)) return [3 /*break*/, 1];\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n silentRequest = __assign(__assign({}, request), { account: account });\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt \r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n }\r\n throw e;\r\n });\r\n }); });\r\n return [3 /*break*/, 3];\r\n case 1:\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n return [4 /*yield*/, silentCacheClient.initializeSilentRequest(request, account)];\r\n case 2:\r\n silentRequest_1 = _a.sent();\r\n result = silentCacheClient.acquireToken(silentRequest_1).catch(function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.acquireTokenByRefreshToken(silentRequest_1)];\r\n });\r\n }); });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n astsAsyncMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache\r\n });\r\n return response;\r\n }).catch(function (tokenRenewalError) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n astsAsyncMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n return PublicClientApplication;\r\n}(ClientApplication));\n\nexport { PublicClientApplication };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../../_virtual/_tslib.js';\nimport { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.js';\nimport { AuthError, AuthenticationScheme } from '@azure/msal-common';\nimport { NativeAuthError } from '../../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeMessageHandler = /** @class */ (function () {\r\n function NativeMessageHandler(logger, handshakeTimeoutMs, extensionId) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n }\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n NativeMessageHandler.prototype.sendMessage = function (body) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Sending request to browser extension: \" + JSON.stringify(req));\r\n this.messageChannel.port1.postMessage(req);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.resolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param logger\r\n * @param handshakeTimeoutMs\r\n */\r\n NativeMessageHandler.createProvider = function (logger, handshakeTimeoutMs) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var preferredProvider, backupProvider;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 5]);\r\n preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\r\n return [4 /*yield*/, preferredProvider.sendHandshakeRequest()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, preferredProvider];\r\n case 3:\r\n _a.sent();\r\n backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\r\n return [4 /*yield*/, backupProvider.sendHandshakeRequest()];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, backupProvider];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Send handshake request helper.\r\n */\r\n NativeMessageHandler.prototype.sendHandshakeRequest = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.messageChannel.port1.onmessage = function (event) {\r\n _this.onChannelMessage(event);\r\n };\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.handshakeResolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n _this.timeoutId = window.setTimeout(function () {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", _this.windowListener, false);\r\n _this.messageChannel.port1.close();\r\n _this.messageChannel.port2.close();\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n _this.handshakeResolvers.delete(req.responseId);\r\n }, _this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onWindowMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n var request = event.data;\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? \"Extension with id: \" + request.extensionId + \" not installed\" : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n };\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onChannelMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n var request = event.data;\r\n var resolver = this.resolvers.get(request.responseId);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n try {\r\n var method = request.body.method;\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n var response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Received response from browser extension: \" + JSON.stringify(response));\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n }\r\n else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n }\r\n else {\r\n resolver.resolve(response.result);\r\n }\r\n }\r\n else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n }\r\n else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.logger.verbose(\"NativeMessageHandler - Received HandshakeResponse from extension: \" + this.extensionId);\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n }\r\n catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(\"Error parsing response from WAM Extension: \" + err.toString());\r\n this.logger.errorPii(\"Unable to parse \" + event);\r\n if (resolver) {\r\n resolver.reject(err);\r\n }\r\n else if (handshakeResolver) {\r\n handshakeResolver.reject(err);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n NativeMessageHandler.isNativeAvailable = function (config, logger, nativeExtensionProvider, authenticationScheme) {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n if (authenticationScheme) {\r\n switch (authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return NativeMessageHandler;\r\n}());\n\nexport { NativeMessageHandler };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { DatabaseStorage } from './DatabaseStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nvar AsyncMemoryStorage = /** @class */ (function () {\r\n function AsyncMemoryStorage(logger, storeName) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n AsyncMemoryStorage.prototype.handleDatabaseAccessError = function (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n }\r\n else {\r\n throw error;\r\n }\r\n };\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var item, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n item = this.inMemoryCache.getItem(key);\r\n if (!!item) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getItem(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.handleDatabaseAccessError(e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, item];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key\r\n * @param value\r\n */\r\n AsyncMemoryStorage.prototype.setItem = function (key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.setItem(key, value);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.setItem(key, value)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.handleDatabaseAccessError(e_2);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.removeItem(key);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.removeItem(key)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _a.sent();\r\n this.handleDatabaseAccessError(e_3);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\r\n * asynchronous storage object.\r\n */\r\n AsyncMemoryStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cacheKeys, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cacheKeys = this.inMemoryCache.getKeys();\r\n if (!(cacheKeys.length === 0)) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getKeys()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.handleDatabaseAccessError(e_4);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, cacheKeys];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var containsKey, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n containsKey = this.inMemoryCache.containsKey(key);\r\n if (!!containsKey) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.containsKey(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_5 = _a.sent();\r\n this.handleDatabaseAccessError(e_5);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, containsKey];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears in-memory Map and tries to delete the IndexedDB database.\r\n */\r\n AsyncMemoryStorage.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dbDeleted, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(\"Deleting in-memory keystore \" + this.storeName);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(\"In-memory keystore \" + this.storeName + \" deleted\");\r\n this.logger.verbose(\"Deleting persistent keystore \" + this.storeName);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.deleteDatabase()];\r\n case 2:\r\n dbDeleted = _a.sent();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore \" + this.storeName + \" deleted\");\r\n }\r\n return [2 /*return*/, dbDeleted];\r\n case 3:\r\n e_6 = _a.sent();\r\n this.handleDatabaseAccessError(e_6);\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return AsyncMemoryStorage;\r\n}());\n\nexport { AsyncMemoryStorage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ClientAuthError, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserCacheLocation, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';\nimport { BrowserStorage } from './BrowserStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nvar BrowserCacheManager = /** @class */ (function (_super) {\r\n __extends(BrowserCacheManager, _super);\r\n function BrowserCacheManager(clientId, cacheConfig, cryptoImpl, logger) {\r\n var _this = _super.call(this, clientId, cryptoImpl) || this;\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n _this.COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n _this.cacheConfig = cacheConfig;\r\n _this.logger = logger;\r\n _this.internalStorage = new MemoryStorage();\r\n _this.browserStorage = _this.setupBrowserStorage(_this.cacheConfig.cacheLocation);\r\n _this.temporaryCacheStorage = _this.setupTemporaryCacheStorage(_this.cacheConfig.cacheLocation);\r\n // Migrate any cache entries from older versions of MSAL.\r\n _this.migrateCacheEntries();\r\n return _this;\r\n }\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupBrowserStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n };\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupTemporaryCacheStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n };\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntries = function () {\r\n var _this = this;\r\n var idTokenKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ID_TOKEN;\r\n var clientInfoKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR;\r\n var errorDescKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR_DESC;\r\n var idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n var clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n var errorValue = this.browserStorage.getItem(errorKey);\r\n var errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n var values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.migrateCacheEntry(cacheKey, values[index]); });\r\n };\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntry = function (newKey, value) {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n };\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n BrowserCacheManager.prototype.validateAndParseJson = function (jsonValue) {\r\n try {\r\n var parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getItem = function (key) {\r\n return this.browserStorage.getItem(key);\r\n };\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setItem = function (key, value) {\r\n this.browserStorage.setItem(key, value);\r\n };\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n BrowserCacheManager.prototype.getAccount = function (accountKey) {\r\n var account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n var parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n };\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setAccount = function (account) {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n var key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n };\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n BrowserCacheManager.prototype.getIdTokenCredential = function (idTokenKey) {\r\n var value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n };\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n BrowserCacheManager.prototype.setIdTokenCredential = function (idToken) {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n var idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n };\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getAccessTokenCredential = function (accessTokenKey) {\r\n var value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n };\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n BrowserCacheManager.prototype.setAccessTokenCredential = function (accessToken) {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n var accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n };\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n BrowserCacheManager.prototype.getRefreshTokenCredential = function (refreshTokenKey) {\r\n var value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n };\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n BrowserCacheManager.prototype.setRefreshTokenCredential = function (refreshToken) {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n var refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n };\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n BrowserCacheManager.prototype.getAppMetadata = function (appMetadataKey) {\r\n var value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n BrowserCacheManager.prototype.setAppMetadata = function (appMetadata) {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n var appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n };\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n BrowserCacheManager.prototype.getServerTelemetry = function (serverTelemetryKey) {\r\n var value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n BrowserCacheManager.prototype.setServerTelemetry = function (serverTelemetryKey, serverTelemetry) {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadata = function (key) {\r\n var value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadataKeys = function () {\r\n var _this = this;\r\n var allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter(function (key) {\r\n return _this.isAuthorityMetadata(key);\r\n });\r\n };\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n BrowserCacheManager.prototype.setWrapperMetadata = function (wrapperSKU, wrapperVersion) {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n };\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n BrowserCacheManager.prototype.getWrapperMetadata = function () {\r\n var sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n var version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n BrowserCacheManager.prototype.setAuthorityMetadata = function (key, entity) {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n };\r\n /**\r\n * Gets the active account\r\n */\r\n BrowserCacheManager.prototype.getActiveAccount = function () {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n var activeAccountId = this.browserStorage.getItem(activeAccountIdKey);\r\n if (!activeAccountId) {\r\n return null;\r\n }\r\n return this.getAccountInfoByFilter({ localAccountId: activeAccountId })[0] || null;\r\n };\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.setActiveAccount = function (account) {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n this.browserStorage.setItem(activeAccountIdKey, account.localAccountId);\r\n }\r\n else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountIdKey);\r\n }\r\n };\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByFilter = function (accountFilter) {\r\n var allAccounts = this.getAllAccounts();\r\n return allAccounts.filter(function (accountObj) {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByHints = function (loginHint, sid) {\r\n var matchingAccounts = this.getAllAccounts().filter(function (accountInfo) {\r\n if (sid) {\r\n var accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n return false;\r\n });\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n }\r\n else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n return null;\r\n };\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n BrowserCacheManager.prototype.getThrottlingCache = function (throttlingCacheKey) {\r\n var value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n };\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n BrowserCacheManager.prototype.setThrottlingCache = function (throttlingCacheKey, throttlingCache) {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n };\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getTemporaryCache = function (cacheKey, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n var itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n var value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n var item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n };\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setTemporaryCache = function (cacheKey, value, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeItem = function (key) {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n };\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.containsKey = function (key) {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n };\r\n /**\r\n * Gets all keys in window.\r\n */\r\n BrowserCacheManager.prototype.getKeys = function () {\r\n return __spread(this.browserStorage.getKeys(), this.temporaryCacheStorage.getKeys());\r\n };\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n BrowserCacheManager.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Removes all accounts and their credentials\r\n return [4 /*yield*/, this.removeAllAccounts()];\r\n case 1:\r\n // Removes all accounts and their credentials\r\n _a.sent();\r\n this.removeAppMetadata();\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach(function (cacheKey) {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((_this.browserStorage.containsKey(cacheKey) || _this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(_this.clientId) !== -1))) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n this.internalStorage.clear();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n BrowserCacheManager.prototype.setItemCookie = function (cookieName, cookieValue, expires) {\r\n var cookieStr = encodeURIComponent(cookieName) + \"=\" + encodeURIComponent(cookieValue) + \";path=/;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.getItemCookie = function (cookieName) {\r\n var name = encodeURIComponent(cookieName) + \"=\";\r\n var cookieList = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieList.length; i++) {\r\n var cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n BrowserCacheManager.prototype.clearMsalCookies = function () {\r\n var _this = this;\r\n var cookiePrefix = Constants.CACHE_PREFIX + \".\" + this.clientId;\r\n var cookieList = document.cookie.split(\";\");\r\n cookieList.forEach(function (cookie) {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n var cookieKey = cookie.split(\"=\")[0];\r\n _this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.clearItemCookie = function (cookieName) {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserCacheManager.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n };\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n BrowserCacheManager.prototype.getCache = function () {\r\n return this.browserStorage;\r\n };\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n BrowserCacheManager.prototype.setCache = function () {\r\n // sets nothing\r\n };\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n BrowserCacheManager.prototype.generateCacheKey = function (key) {\r\n var generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return Constants.CACHE_PREFIX + \".\" + this.clientId + \".\" + key;\r\n }\r\n return JSON.stringify(key);\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateAuthorityKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.AUTHORITY + \".\" + stateId);\r\n };\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateNonceKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN + \".\" + stateId);\r\n };\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n BrowserCacheManager.prototype.generateStateKey = function (stateString) {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.REQUEST_STATE + \".\" + stateId);\r\n };\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n BrowserCacheManager.prototype.getCachedAuthority = function (cachedState) {\r\n var stateCacheKey = this.generateStateKey(cachedState);\r\n var state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n };\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.updateCacheEntries = function (state, nonce, authorityInstance, loginHint, account) {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n var stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n // Cache the nonce\r\n var nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n // Cache authorityKey\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n if (account) {\r\n var ccsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n else if (!StringUtils.isEmpty(loginHint)) {\r\n var ccsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.resetRequestCache = function (state) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(function (key) {\r\n if (key.indexOf(state) !== -1) {\r\n _this.removeItem(key);\r\n }\r\n });\r\n }\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByState = function (stateString) {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n var stateKey = this.generateStateKey(stateString);\r\n var cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(\"BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: \" + cachedState);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n };\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByInteractionType = function (interactionType) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach(function (key) {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n // Retrieve state value, return if not a valid value\r\n var stateValue = _this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n var parsedState = BrowserProtocolUtils.extractBrowserRequestState(_this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n _this.logger.infoPii(\"BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: \" + stateValue);\r\n _this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n };\r\n BrowserCacheManager.prototype.cacheCodeRequest = function (authCodeRequest, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n var encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n };\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n BrowserCacheManager.prototype.getCachedRequest = function (state, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n var encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n var parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest));\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n var cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n return parsedRequest;\r\n };\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n BrowserCacheManager.prototype.getCachedNativeRequest = function () {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n var cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n var parsedRequest = this.validateAndParseJson(cachedRequest);\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n return parsedRequest;\r\n };\r\n BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n BrowserCacheManager.prototype.getInteractionInProgress = function () {\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n return this.getTemporaryCache(key, false);\r\n };\r\n BrowserCacheManager.prototype.setInteractionInProgress = function (inProgress) {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n }\r\n else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n };\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n BrowserCacheManager.prototype.getLegacyLoginHint = function () {\r\n // Only check for adal/msal token if no SSO params are being used\r\n var adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n // Check for cached MSAL v1 id token\r\n var msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n var cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n var cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n BrowserCacheManager.prototype.updateCredentialCacheKey = function (currentCacheKey, credential) {\r\n var updatedCacheKey = credential.generateCredentialKey();\r\n if (currentCacheKey !== updatedCacheKey) {\r\n var cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(\"Updated an outdated \" + credential.credentialType + \" cache key\");\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(\"Attempted to update an outdated \" + credential.credentialType + \" cache key but no item matching the outdated key was found in storage\");\r\n }\r\n }\r\n return currentCacheKey;\r\n };\r\n return BrowserCacheManager;\r\n}(CacheManager));\r\nvar DEFAULT_BROWSER_CACHE_MANAGER = function (clientId, logger) {\r\n var cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\n\nexport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n BrowserStorage.prototype.validateWindowStorage = function (cacheLocation) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n var storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n };\r\n BrowserStorage.prototype.getItem = function (key) {\r\n return this.windowStorage.getItem(key);\r\n };\r\n BrowserStorage.prototype.setItem = function (key, value) {\r\n this.windowStorage.setItem(key, value);\r\n };\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n this.windowStorage.removeItem(key);\r\n };\r\n BrowserStorage.prototype.getKeys = function () {\r\n return Object.keys(this.windowStorage);\r\n };\r\n BrowserStorage.prototype.containsKey = function (key) {\r\n return this.windowStorage.hasOwnProperty(key);\r\n };\r\n return BrowserStorage;\r\n}());\n\nexport { BrowserStorage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nvar DatabaseStorage = /** @class */ (function () {\r\n function DatabaseStorage() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n DatabaseStorage.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var openDB = window.indexedDB.open(_this.dbName, _this.version);\r\n openDB.addEventListener(\"upgradeneeded\", function (e) {\r\n var event = e;\r\n event.target.result.createObjectStore(_this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.db = event.target.result;\r\n _this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n DatabaseStorage.prototype.closeConnection = function () {\r\n var db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n };\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n DatabaseStorage.prototype.validateDbIsOpen = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.dbOpen) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.open()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key\r\n * @param payload\r\n */\r\n DatabaseStorage.prototype.setItem = function (key, payload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbPut.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbDelete = objectStore.delete(key);\r\n dbDelete.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbDelete.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n DatabaseStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGetKeys = objectStore.getAllKeys();\r\n dbGetKeys.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGetKeys.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n DatabaseStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbContainsKey = objectStore.count(key);\r\n dbContainsKey.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n dbContainsKey.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n DatabaseStorage.prototype.deleteDatabase = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var existingDatabases, database;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check if database being deleted exists\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n return [4 /*yield*/, window.indexedDB.databases()];\r\n case 1:\r\n existingDatabases = _a.sent();\r\n database = existingDatabases.find(function (database) { return database.name === DB_NAME; });\r\n // If database exists, delete it\r\n if (database) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"error\", function () { return reject(false); });\r\n })];\r\n }\r\n // Database doesn't exist, return true\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n return DatabaseStorage;\r\n}());\n\nexport { DatabaseStorage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache = new Map();\r\n }\r\n MemoryStorage.prototype.getItem = function (key) {\r\n return this.cache.get(key) || null;\r\n };\r\n MemoryStorage.prototype.setItem = function (key, value) {\r\n this.cache.set(key, value);\r\n };\r\n MemoryStorage.prototype.removeItem = function (key) {\r\n this.cache.delete(key);\r\n };\r\n MemoryStorage.prototype.getKeys = function () {\r\n var cacheKeys = [];\r\n this.cache.forEach(function (value, key) {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n };\r\n MemoryStorage.prototype.containsKey = function (key) {\r\n return this.cache.has(key);\r\n };\r\n MemoryStorage.prototype.clear = function () {\r\n this.cache.clear();\r\n };\r\n return MemoryStorage;\r\n}());\n\nexport { MemoryStorage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Authority, IdTokenEntity, AuthToken, AccountEntity, ScopeSet, AccessTokenEntity } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Token cache manager\r\n */\r\nvar TokenCache = /** @class */ (function () {\r\n function TokenCache(configuration, storage, logger, cryptoObj) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n // Move getAllAccounts here and cache utility APIs\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n */\r\n TokenCache.prototype.loadExternalTokens = function (request, response, options) {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n if (request.account) {\r\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n }\r\n else if (request.authority) {\r\n var authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n var authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n };\r\n var authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions);\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @param options\r\n */\r\n TokenCache.prototype.loadIdToken = function (idToken, homeAccountId, environment, tenantId, options) {\r\n var idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\r\n var idAuthToken = new AuthToken(idToken, this.cryptoObj);\r\n var accountEntity = options.clientInfo ?\r\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setAccount(accountEntity);\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns\r\n */\r\n TokenCache.prototype.loadAccessToken = function (request, response, homeAccountId, environment, tenantId, options) {\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return;\r\n }\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n var scopes = new ScopeSet(request.scopes).printScopes();\r\n var expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\r\n var extendedExpiresOn = options.extendedExpiresOn;\r\n var accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n return TokenCache;\r\n}());\n\nexport { TokenCache };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __assign } from '../_virtual/_tslib.js';\nimport { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { NavigationClient } from '../navigation/NavigationClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Default timeout for popup windows and iframes in milliseconds\r\nvar DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nvar DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nvar DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nvar DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nfunction buildConfiguration(_a, isBrowserEnvironment) {\r\n var userInputAuth = _a.auth, userInputCache = _a.cache, userInputSystem = _a.system, userInputTelemetry = _a.telemetry;\r\n // Default auth options for browser\r\n var DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: \"\" + Constants.DEFAULT_AUTHORITY,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n };\r\n // Default cache options for browser\r\n var DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n // Default logger options for browser\r\n var DEFAULT_LOGGER_OPTIONS = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: function () { },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n // Default system options for browser\r\n var DEFAULT_BROWSER_SYSTEM_OPTIONS = __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), { loggerOptions: DEFAULT_LOGGER_OPTIONS, networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule, navigationClient: new NavigationClient(), loadFrameTimeout: 0, \r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS, iframeHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS, navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0, redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, asyncPopups: false, allowRedirectInIframe: false, allowNativeBroker: false, nativeBrokerHandshakeTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.nativeBrokerHandshakeTimeout) || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS });\r\n var DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), userInputAuth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userInputCache),\r\n system: __assign(__assign({}, DEFAULT_BROWSER_SYSTEM_OPTIONS), userInputSystem),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), userInputTelemetry)\r\n };\r\n return overlayedConfig;\r\n}\n\nexport { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nvar PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nvar S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nvar MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nvar PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nvar BrowserCrypto = /** @class */ (function () {\r\n function BrowserCrypto(logger) {\r\n this.logger = logger;\r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString\r\n */\r\n BrowserCrypto.prototype.sha256Digest = function (dataString) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data;\r\n return __generator(this, function (_a) {\r\n data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n return [2 /*return*/, this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer\r\n */\r\n BrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n var cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n };\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.generateKeyPair = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, (this.hasIECrypto() ?\r\n this.msCryptoGenerateKey(extractable, usages)\r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages))];\r\n });\r\n });\r\n };\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.exportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.importJwk = function (key, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyString, keyBuffer;\r\n return __generator(this, function (_a) {\r\n keyString = BrowserCrypto.getJwkString(key);\r\n keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoImportKey(keyBuffer, extractable, usages)\r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Signs given data with given key\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.sign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n BrowserCrypto.prototype.hasCryptoAPI = function () {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n };\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n BrowserCrypto.prototype.hasIECrypto = function () {\r\n return \"msCrypto\" in window;\r\n };\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n BrowserCrypto.prototype.hasBrowserCrypto = function () {\r\n return \"crypto\" in window;\r\n };\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getSubtleCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getMSCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoGenerateKey = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msGenerateKey = window[\"msCrypto\"].subtle.generateKey(_this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msGenerateKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.msCryptoExportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", function (e) {\r\n var resultBuffer = e.target.result;\r\n var resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n try {\r\n resolve(JSON.parse(resultString));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n msExportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for importKey\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoImportKey = function (keyBuffer, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, _this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msImportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.msCryptoSign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msSign = window[\"msCrypto\"].subtle.sign(_this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msSign.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk\r\n */\r\n BrowserCrypto.getJwkString = function (jwk) {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\r\n };\r\n return BrowserCrypto;\r\n}());\n\nexport { BrowserCrypto };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, JoseHeader } from '@azure/msal-common';\nimport { GuidGenerator } from './GuidGenerator.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\nimport { Base64Decode } from '../encode/Base64Decode.js';\nimport { PkceGenerator } from './PkceGenerator.js';\nimport { BrowserCrypto } from './BrowserCrypto.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { AsyncMemoryStorage } from '../cache/AsyncMemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CryptoKeyStoreNames;\r\n(function (CryptoKeyStoreNames) {\r\n CryptoKeyStoreNames[\"asymmetricKeys\"] = \"asymmetricKeys\";\r\n CryptoKeyStoreNames[\"symmetricKeys\"] = \"symmetricKeys\";\r\n})(CryptoKeyStoreNames || (CryptoKeyStoreNames = {}));\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nvar CryptoOps = /** @class */ (function () {\r\n function CryptoOps(logger, performanceClient) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = {\r\n asymmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys),\r\n symmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys)\r\n };\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n CryptoOps.prototype.createNewGuid = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n /**\r\n * Encodes input string to base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Encode = function (input) {\r\n return this.b64Encode.encode(input);\r\n };\r\n /**\r\n * Decodes input string from base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Decode = function (input) {\r\n return this.b64Decode.decode(input);\r\n };\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n CryptoOps.prototype.generatePkceCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.pkceGenerator.generateCodes()];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n CryptoOps.prototype.getPublicKeyThumbprint = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var publicKeyThumbMeasurement, keyPair, publicKeyJwk, pubKeyThumprintObj, publicJwkString, publicJwkHash, privateKeyJwk, unextractablePrivateKey;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n publicKeyThumbMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES)];\r\n case 1:\r\n keyPair = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n pubKeyThumprintObj = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n publicJwkString = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n return [4 /*yield*/, this.hashString(publicJwkString)];\r\n case 3:\r\n publicJwkHash = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.privateKey)];\r\n case 4:\r\n privateKeyJwk = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"])];\r\n case 5:\r\n unextractablePrivateKey = _b.sent();\r\n // Store Keypair data in keystore\r\n return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n })];\r\n case 6:\r\n // Store Keypair data in keystore\r\n _b.sent();\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, publicJwkHash];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid\r\n */\r\n CryptoOps.prototype.removeTokenBindingKey = function (kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyFound;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];\r\n case 2:\r\n keyFound = _a.sent();\r\n return [2 /*return*/, !keyFound];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n CryptoOps.prototype.clearKeystore = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 4]);\r\n this.logger.verbose(\"Deleting in-memory and persistent asymmetric key stores\");\r\n return [4 /*yield*/, this.cache.asymmetricKeys.clear()];\r\n case 1:\r\n _a.sent();\r\n this.logger.verbose(\"Successfully deleted asymmetric key stores\");\r\n this.logger.verbose(\"Deleting in-memory and persistent symmetric key stores\");\r\n return [4 /*yield*/, this.cache.symmetricKeys.clear()];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Successfully deleted symmetric key stores\");\r\n return [2 /*return*/, true];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof Error) {\r\n this.logger.error(\"Clearing keystore failed with error: \" + e_1.message);\r\n }\r\n else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload\r\n * @param kid\r\n */\r\n CryptoOps.prototype.signJwt = function (payload, kid, correlationId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var signJwtMeasurement, cachedKeyPair, publicKeyJwk, publicKeyJwkString, encodedKeyIdThumbprint, shrHeader, encodedShrHeader, encodedPayload, tokenString, tokenBuffer, signatureBuffer, encodedSignature, signedJwt;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n signJwtMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];\r\n case 1:\r\n cachedKeyPair = _b.sent();\r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(cachedKeyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\r\n shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\r\n encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n tokenString = encodedShrHeader + \".\" + encodedPayload;\r\n tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n return [4 /*yield*/, this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer)];\r\n case 3:\r\n signatureBuffer = _b.sent();\r\n encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n signedJwt = tokenString + \".\" + encodedSignature;\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, signedJwt];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n CryptoOps.prototype.hashString = function (plainText) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var hashBuffer, hashBytes;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.browserCrypto.sha256Digest(plainText)];\r\n case 1:\r\n hashBuffer = _a.sent();\r\n hashBytes = new Uint8Array(hashBuffer);\r\n return [2 /*return*/, this.b64Encode.urlEncodeArr(hashBytes)];\r\n }\r\n });\r\n });\r\n };\r\n CryptoOps.POP_KEY_USAGES = [\"sign\", \"verify\"];\r\n CryptoOps.EXTRACTABLE = true;\r\n return CryptoOps;\r\n}());\n\nexport { CryptoKeyStoreNames, CryptoOps };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { MathUtils } from '../utils/MathUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar GuidGenerator = /** @class */ (function () {\r\n function GuidGenerator(cryptoObj) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n GuidGenerator.prototype.generateGuid = function () {\r\n try {\r\n var buffer = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = Constants.EMPTY_STRING;\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n GuidGenerator.prototype.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n return GuidGenerator;\r\n}());\n\nexport { GuidGenerator };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Constant byte array length\r\nvar RANDOM_BYTE_ARR_LENGTH = 32;\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nvar PkceGenerator = /** @class */ (function () {\r\n function PkceGenerator(cryptoObj) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n PkceGenerator.prototype.generateCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var codeVerifier, codeChallenge;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n codeVerifier = this.generateCodeVerifier();\r\n return [4 /*yield*/, this.generateCodeChallengeFromVerifier(codeVerifier)];\r\n case 1:\r\n codeChallenge = _a.sent();\r\n return [2 /*return*/, {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n PkceGenerator.prototype.generateCodeVerifier = function () {\r\n try {\r\n // Generate random values as utf-8\r\n var buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n var pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n }\r\n catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n };\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n PkceGenerator.prototype.generateCodeChallengeFromVerifier = function (pkceCodeVerifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pkceHashedCodeVerifier, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.cryptoObj.sha256Digest(pkceCodeVerifier)];\r\n case 1:\r\n pkceHashedCodeVerifier = _a.sent();\r\n // encode hash as base64\r\n return [2 /*return*/, this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier))];\r\n case 2:\r\n e_1 = _a.sent();\r\n throw BrowserAuthError.createPkceNotGeneratedError(e_1);\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PkceGenerator;\r\n}());\n\nexport { PkceGenerator };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Decode = /** @class */ (function () {\r\n function Base64Decode() {\r\n }\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input\r\n */\r\n Base64Decode.prototype.decode = function (input) {\r\n var encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n var inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n };\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String\r\n * @param nBlockSize\r\n */\r\n Base64Decode.prototype.base64DecToArr = function (base64String, nBlockSize) {\r\n var sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n var nInLen = sB64Enc.length;\r\n var nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n var aBytes = new Uint8Array(nOutLen);\r\n for (var nMod3 = void 0, nMod4 = void 0, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum\r\n */\r\n Base64Decode.prototype.b64ToUint6 = function (charNum) {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ?\r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n };\r\n return Base64Decode;\r\n}());\n\nexport { Base64Decode };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Encode = /** @class */ (function () {\r\n function Base64Encode() {\r\n }\r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.urlEncode = function (input) {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n };\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr\r\n */\r\n Base64Encode.prototype.urlEncodeArr = function (inputArr) {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n };\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.encode = function (input) {\r\n var inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n };\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes\r\n */\r\n Base64Encode.prototype.base64EncArr = function (aBytes) {\r\n var eqLen = (3 - (aBytes.length % 3)) % 3;\r\n var sB64Enc = Constants.EMPTY_STRING;\r\n for (var nMod3 = void 0, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(this.uint6ToB64(nUint24 >>> 18 & 63), this.uint6ToB64(nUint24 >>> 12 & 63), this.uint6ToB64(nUint24 >>> 6 & 63), this.uint6ToB64(nUint24 & 63));\r\n nUint24 = 0;\r\n }\r\n }\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n };\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6\r\n */\r\n Base64Encode.prototype.uint6ToB64 = function (nUint6) {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n };\r\n return Base64Encode;\r\n}());\n\nexport { Base64Encode };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { StringUtils, AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserAuthError, _super);\r\n function BrowserAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n Object.setPrototypeOf(_this, BrowserAuthError.prototype);\r\n _this.name = \"BrowserAuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPkceNotGeneratedError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code, BrowserAuthErrorMessage.pkceNotGenerated.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createCryptoNotAvailableError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code, BrowserAuthErrorMessage.cryptoDoesNotExist.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n BrowserAuthError.createHttpMethodNotImplementedError = function (method) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code, BrowserAuthErrorMessage.httpMethodNotImplementedError.desc + \" Given Method: \" + method);\r\n };\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n BrowserAuthError.createEmptyNavigationUriError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n BrowserAuthError.createEmptyHashError = function (hashValue) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, BrowserAuthErrorMessage.hashEmptyError.desc + \" Given Url: \" + hashValue);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createHashDoesNotContainStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n BrowserAuthError.createHashDoesNotContainKnownPropertiesError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createUnableToParseStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n BrowserAuthError.createStateInteractionTypeMismatchError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n BrowserAuthError.createInteractionInProgressError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPopupWindowError = function (errDetail) {\r\n var errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? errorMessage + \" Details: \" + errDetail : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n };\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createEmptyWindowCreatedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n BrowserAuthError.createUserCancelledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code, BrowserAuthErrorMessage.userCancelledError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n BrowserAuthError.createMonitorPopupTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code, BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n BrowserAuthError.createMonitorIframeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code, BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe.\r\n * @param windowParentCheck\r\n */\r\n BrowserAuthError.createRedirectInIframeError = function (windowParentCheck) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, BrowserAuthErrorMessage.redirectInIframeError.desc + \" (window.parent !== window) => \" + windowParentCheck);\r\n };\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n BrowserAuthError.createBlockReloadInHiddenIframeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code, BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n BrowserAuthError.createBlockAcquireTokenInPopupsError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n BrowserAuthError.createIframeClosedPrematurelyError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n BrowserAuthError.createSilentLogoutUnsupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n BrowserAuthError.createNoAccountError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n BrowserAuthError.createSilentPromptValueError = function (givenPrompt) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, BrowserAuthErrorMessage.silentPromptValueError.desc + \" Given value: \" + givenPrompt);\r\n };\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createUnableToParseTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code, BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code, BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n BrowserAuthError.createAuthRequestNotSetError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code, BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoCachedAuthorityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code, BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n };\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n BrowserAuthError.createInvalidCacheTypeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, \"\" + BrowserAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n BrowserAuthError.createNonBrowserEnvironmentError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n };\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n BrowserAuthError.createDatabaseNotOpenError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n BrowserAuthError.createNoNetworkConnectivityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createPostRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, BrowserAuthErrorMessage.postRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createGetRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, BrowserAuthErrorMessage.getRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n BrowserAuthError.createFailedToParseNetworkResponseError = function (endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, BrowserAuthErrorMessage.failedToParseNetworkResponse.desc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n BrowserAuthError.createUnableToLoadTokenError = function (errorDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, BrowserAuthErrorMessage.unableToLoadTokenError.desc + \" | \" + errorDetail);\r\n };\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n BrowserAuthError.createSigningKeyNotFoundInStorageError = function (keyId) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc + \" | No match found for KeyId: \" + keyId);\r\n };\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n };\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n };\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n BrowserAuthError.createDatabaseUnavailableError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n };\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n };\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n BrowserAuthError.createNativeHandshakeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n };\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n BrowserAuthError.createNativeExtensionNotInstalledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n };\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n BrowserAuthError.createNativeConnectionNotEstablishedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n };\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n BrowserAuthError.createNativeBrokerCalledBeforeInitialize = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n };\r\n /**\r\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n BrowserAuthError.createNativePromptParameterNotSupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n };\r\n return BrowserAuthError;\r\n}(AuthError));\n\nexport { BrowserAuthError, BrowserAuthErrorMessage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserConfigurationAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserConfigurationAuthError, _super);\r\n function BrowserConfigurationAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"BrowserConfigurationAuthError\";\r\n Object.setPrototypeOf(_this, BrowserConfigurationAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code, BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code, BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation\r\n */\r\n BrowserConfigurationAuthError.createStorageNotSupportedError = function (givenStorageLocation) {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc + \" Given Location: \" + givenStorageLocation);\r\n };\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n BrowserConfigurationAuthError.createRedirectCallbacksNotSetError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n BrowserConfigurationAuthError.createStubPcaInstanceCalledError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code, BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n };\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n };\r\n return BrowserConfigurationAuthError;\r\n}(AuthError));\n\nexport { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { InteractionRequiredAuthError, AuthError } from '@azure/msal-common';\nimport { BrowserAuthError } from './BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeStatusCode;\r\n(function (NativeStatusCode) {\r\n NativeStatusCode[\"USER_INTERACTION_REQUIRED\"] = \"USER_INTERACTION_REQUIRED\";\r\n NativeStatusCode[\"USER_CANCEL\"] = \"USER_CANCEL\";\r\n NativeStatusCode[\"NO_NETWORK\"] = \"NO_NETWORK\";\r\n NativeStatusCode[\"TRANSIENT_ERROR\"] = \"TRANSIENT_ERROR\";\r\n NativeStatusCode[\"PERSISTENT_ERROR\"] = \"PERSISTENT_ERROR\";\r\n NativeStatusCode[\"DISABLED\"] = \"DISABLED\";\r\n})(NativeStatusCode || (NativeStatusCode = {}));\r\nvar NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\r\n }\r\n};\r\nvar NativeAuthError = /** @class */ (function (_super) {\r\n __extends(NativeAuthError, _super);\r\n function NativeAuthError(errorCode, description, ext) {\r\n var _this = _super.call(this, errorCode, description) || this;\r\n Object.setPrototypeOf(_this, NativeAuthError.prototype);\r\n _this.name = \"NativeAuthError\";\r\n _this.ext = ext;\r\n return _this;\r\n }\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n NativeAuthError.prototype.isFatal = function () {\r\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\r\n return true;\r\n }\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n };\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n NativeAuthError.createError = function (code, description, ext) {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n return new NativeAuthError(code, description, ext);\r\n };\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n NativeAuthError.createUserSwitchError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n };\r\n return NativeAuthError;\r\n}(AuthError));\n\nexport { NativeAuthError, NativeAuthErrorMessage, NativeStatusCode };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { AccountEntity, CacheManager } from '@azure/msal-common';\nimport { EventType } from './EventType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventHandler = /** @class */ (function () {\r\n function EventHandler(logger, browserCrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n EventHandler.prototype.addEventCallback = function (callback) {\r\n if (typeof window !== \"undefined\") {\r\n var callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(\"Event callback registered with id: \" + callbackId);\r\n return callbackId;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n EventHandler.prototype.removeEventCallback = function (callbackId) {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(\"Event callback \" + callbackId + \" removed.\");\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.enableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n }\r\n else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.disableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n }\r\n else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n };\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n EventHandler.prototype.emitEvent = function (eventType, interactionType, payload, error) {\r\n var _this = this;\r\n if (typeof window !== \"undefined\") {\r\n var message_1 = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n this.logger.info(\"Emitting event: \" + eventType);\r\n this.eventCallbacks.forEach(function (callback, callbackId) {\r\n _this.logger.verbose(\"Emitting event to callback \" + callbackId + \": \" + eventType);\r\n callback.apply(null, [message_1]);\r\n });\r\n }\r\n };\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n EventHandler.prototype.handleAccountCacheChange = function (e) {\r\n try {\r\n var cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n var parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n }\r\n else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n }\r\n catch (e) {\r\n return;\r\n }\r\n };\r\n return EventHandler;\r\n}());\n\nexport { EventHandler };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { EventType } from './EventType.js';\nimport { InteractionType, InteractionStatus } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventMessageUtils = /** @class */ (function () {\r\n function EventMessageUtils() {\r\n }\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n * @param currentStatus\r\n */\r\n EventMessageUtils.getInteractionStatusFromEvent = function (message, currentStatus) {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\r\n // Prevent this event from clearing any status other than ssoSilent\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGOUT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\r\n // Prevent this event from clearing any status other than logout\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.HANDLE_REDIRECT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\r\n // Prevent this event from clearing any status other than handleRedirect\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\r\n // Prevent this event from clearing any status other than login or acquireToken\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n }\r\n return null;\r\n };\r\n return EventMessageUtils;\r\n}());\n\nexport { EventMessageUtils };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[\"INITIALIZE_START\"] = \"msal:initializeStart\";\r\n EventType[\"INITIALIZE_END\"] = \"msal:initializeEnd\";\r\n EventType[\"ACCOUNT_ADDED\"] = \"msal:accountAdded\";\r\n EventType[\"ACCOUNT_REMOVED\"] = \"msal:accountRemoved\";\r\n EventType[\"LOGIN_START\"] = \"msal:loginStart\";\r\n EventType[\"LOGIN_SUCCESS\"] = \"msal:loginSuccess\";\r\n EventType[\"LOGIN_FAILURE\"] = \"msal:loginFailure\";\r\n EventType[\"ACQUIRE_TOKEN_START\"] = \"msal:acquireTokenStart\";\r\n EventType[\"ACQUIRE_TOKEN_SUCCESS\"] = \"msal:acquireTokenSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_FAILURE\"] = \"msal:acquireTokenFailure\";\r\n EventType[\"ACQUIRE_TOKEN_NETWORK_START\"] = \"msal:acquireTokenFromNetworkStart\";\r\n EventType[\"SSO_SILENT_START\"] = \"msal:ssoSilentStart\";\r\n EventType[\"SSO_SILENT_SUCCESS\"] = \"msal:ssoSilentSuccess\";\r\n EventType[\"SSO_SILENT_FAILURE\"] = \"msal:ssoSilentFailure\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_START\"] = \"msal:acquireTokenByCodeStart\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_SUCCESS\"] = \"msal:acquireTokenByCodeSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_FAILURE\"] = \"msal:acquireTokenByCodeFailure\";\r\n EventType[\"HANDLE_REDIRECT_START\"] = \"msal:handleRedirectStart\";\r\n EventType[\"HANDLE_REDIRECT_END\"] = \"msal:handleRedirectEnd\";\r\n EventType[\"POPUP_OPENED\"] = \"msal:popupOpened\";\r\n EventType[\"LOGOUT_START\"] = \"msal:logoutStart\";\r\n EventType[\"LOGOUT_SUCCESS\"] = \"msal:logoutSuccess\";\r\n EventType[\"LOGOUT_FAILURE\"] = \"msal:logoutFailure\";\r\n EventType[\"LOGOUT_END\"] = \"msal:logoutEnd\";\r\n})(EventType || (EventType = {}));\n\nexport { EventType };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';\nimport { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common';\nimport { version } from '../packageMetadata.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BaseInteractionClient = /** @class */ (function () {\r\n function BaseInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n BaseInteractionClient.prototype.clearCacheOnLogout = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!account) return [3 /*break*/, 5];\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account))];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n return [3 /*break*/, 4];\r\n case 4: return [3 /*break*/, 9];\r\n case 5:\r\n _a.trys.push([5, 8, , 9]);\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n return [4 /*yield*/, this.browserStorage.clear()];\r\n case 6:\r\n // Clear all accounts and tokens\r\n _a.sent();\r\n // Clear any stray keys from IndexedDB\r\n return [4 /*yield*/, this.browserCrypto.clearKeystore()];\r\n case 7:\r\n // Clear any stray keys from IndexedDB\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n BaseInteractionClient.prototype.initializeBaseRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, scopes, validatedRequest, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n authority = request.authority || this.config.auth.authority;\r\n scopes = __spread(((request && request.scopes) || []));\r\n validatedRequest = __assign(__assign({}, request), { correlationId: this.correlationId, authority: authority,\r\n scopes: scopes });\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n }\r\n else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if (!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(\"Authentication Scheme set to \\\"\" + validatedRequest.authenticationScheme + \"\\\" as configured in Auth request\");\r\n }\r\n if (!(request.claims && !StringUtils.isEmpty(request.claims))) return [3 /*break*/, 2];\r\n _a = validatedRequest;\r\n return [4 /*yield*/, this.browserCrypto.hashString(request.claims)];\r\n case 1:\r\n _a.requestedClaimsHash = _b.sent();\r\n _b.label = 2;\r\n case 2: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n BaseInteractionClient.prototype.getRedirectUri = function (requestRedirectUri) {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n var redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n };\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n BaseInteractionClient.prototype.initializeServerTelemetryManager = function (apiId, forceRefresh) {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n var telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n BaseInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authorityOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n if (!requestAuthority) return [3 /*break*/, 2];\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions)];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return BaseInteractionClient;\r\n}());\n\nexport { BaseInteractionClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthorizationCodeClient } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar HybridSpaAuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(HybridSpaAuthorizationCodeClient, _super);\r\n function HybridSpaAuthorizationCodeClient(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.includeRedirectUri = false;\r\n return _this;\r\n }\r\n return HybridSpaAuthorizationCodeClient;\r\n}(AuthorizationCodeClient));\n\nexport { HybridSpaAuthorizationCodeClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { TimeUtils, PerformanceEvents, AuthenticationScheme, PopTokenGenerator, ClientAuthError, AccountEntity, Constants, AuthorityType, ScopeSet, AuthToken, PromptValue, UrlString, OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { TemporaryCacheKeys, NativeExtensionMethod, ApiId } from '../utils/BrowserConstants.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeInteractionClient = /** @class */ (function (_super) {\r\n __extends(NativeInteractionClient, _super);\r\n function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, correlationId) {\r\n var _this = _super.call(this, config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.accountId = accountId;\r\n _this.nativeMessageHandler = provider;\r\n return _this;\r\n }\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeATMeasurement, nativeRequest, messageBody, reqTimestamp, response, validatedResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n validatedResponse = this.validateNativeResponse(response);\r\n return [2 /*return*/, this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then(function (result) {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeRequest, messageBody, response, e_1, navigationOptions, redirectUri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 3:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e_1 instanceof NativeAuthError && e_1.isFatal()) {\r\n throw e_1;\r\n }\r\n return [3 /*break*/, 5];\r\n case 5:\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(redirectUri, navigationOptions)];\r\n case 6:\r\n _a.sent(); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n NativeInteractionClient.prototype.handleRedirectPromise = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, messageBody, reqTimestamp, response, result, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: cachedRequest\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n result = this.handleNativeResponse(response, cachedRequest, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e_2;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.logout = function () {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n };\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n NativeInteractionClient.prototype.handleNativeResponse = function (response, request, reqTimestamp) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authority, authorityPreferredCache, homeAccountIdentifier, accountEntity, responseScopes, accountProperties, uid, tid, responseAccessToken, responseTokenType, _a, popTokenGenerator, shrParameters, result;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n if (response.account.id !== request.accountId) {\r\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(request.authority)];\r\n case 1:\r\n authority = _b.sent();\r\n authorityPreferredCache = authority.getPreferredCache();\r\n homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\r\n this.browserStorage.setAccount(accountEntity);\r\n responseScopes = response.scopes ? ScopeSet.fromString(response.scopes) : ScopeSet.fromString(request.scopes);\r\n accountProperties = response.account.properties || {};\r\n uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n responseTokenType = AuthenticationScheme.BEARER;\r\n _a = request.tokenType;\r\n switch (_a) {\r\n case AuthenticationScheme.POP: return [3 /*break*/, 2];\r\n }\r\n return [3 /*break*/, 4];\r\n case 2:\r\n // Set the token type to POP in the response\r\n responseTokenType = AuthenticationScheme.POP;\r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n responseAccessToken = response.shr;\r\n return [3 /*break*/, 5];\r\n }\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n shrParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n /**\r\n * KeyID must be present in the native request from when the PoP key was generated in order for\r\n * PopTokenGenerator to query the full key for signing\r\n */\r\n if (!request.keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters)];\r\n case 3:\r\n responseAccessToken = _b.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n {\r\n responseAccessToken = response.access_token;\r\n }\r\n _b.label = 5;\r\n case 5:\r\n result = {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: responseTokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n // Remove any existing cached tokens for this account\r\n this.browserStorage.removeAccountContext(accountEntity).catch(function (e) {\r\n _this.logger.error(\"Error occurred while removing account context from browser storage. \" + e);\r\n });\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n NativeInteractionClient.prototype.validateNativeResponse = function (response) {\r\n if (response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scopes\") &&\r\n response.hasOwnProperty(\"expires_in\")) {\r\n return response;\r\n }\r\n else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n };\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.initializeNativeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, canonicalAuthority, scopes, scopeSet, validatedRequest, shrParameters, popTokenGenerator, reqCnfData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n authority = request.authority || this.config.auth.authority;\r\n canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n scopes = request && request.scopes || [];\r\n scopeSet = new ScopeSet(scopes);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"initializeNativeRequest: prompt = \" + request.prompt + \" is not compatible with native flow\");\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n }\r\n validatedRequest = __assign(__assign({}, request), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scopes: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), correlationId: this.correlationId, tokenType: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), extendedExpiryToken: false // Make this configurable?\r\n });\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n shrParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(shrParameters)];\r\n case 1:\r\n reqCnfData = _a.sent();\r\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\r\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\r\n validatedRequest.keyId = reqCnfData.kid;\r\n _a.label = 2;\r\n case 2:\r\n if (this.apiId === ApiId.ssoSilent || this.apiId === ApiId.acquireTokenSilent_silentFlow) {\r\n validatedRequest.prompt = PromptValue.NONE;\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return NativeInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { NativeInteractionClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { OIDC_DEFAULT_SCOPES, StringUtils, UrlString, Constants, AuthError, ThrottlingUtils, ProtocolUtils, PerformanceEvents } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConstants, InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionHandler } from '../interaction_handler/InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PopupClient = /** @class */ (function (_super) {\r\n __extends(PopupClient, _super);\r\n function PopupClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n // Properly sets this reference for the unload event.\r\n _this.unloadWindow = _this.unloadWindow.bind(_this);\r\n return _this;\r\n }\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n PopupClient.prototype.acquireToken = function (request) {\r\n try {\r\n var popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\r\n var popupWindowAttributes = request.popupWindowAttributes || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n PopupClient.prototype.logout = function (logoutRequest) {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n var validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n var popupName = this.generateLogoutPopupName(validLogoutRequest);\r\n var authority = logoutRequest && logoutRequest.authority;\r\n var mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n var popupWindowAttributes = (logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.popupWindowAttributes) || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n }\r\n catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PopupClient.prototype.acquireTokenPopupAsync = function (request, popupName, popupWindowAttributes, popup) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, validRequest, authCodeRequest, authClient, isNativeBroker, fetchNativeAccountIdMeasurement, navigateUrl, interactionHandler, popupParameters, popupWindow, hash, serverParams, state_1, nativeInteractionClient, userRequestState, result, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Popup)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 8, , 9]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n fetchNativeAccountIdMeasurement = void 0;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: isNativeBroker }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\r\n popupParameters = {\r\n popup: popup,\r\n popupName: popupName,\r\n popupWindowAttributes: popupWindowAttributes\r\n };\r\n popupWindow = this.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.monitorPopupForHash(popupWindow)];\r\n case 6:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state_1 = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, validRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state_1).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, validRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state_1);\r\n })];\r\n }\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state_1, authClient.authority, this.networkClient)];\r\n case 7:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 8:\r\n e_1 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n PopupClient.prototype.logoutPopupAsync = function (validRequest, popupName, popupWindowAttributes, requestAuthority, popup, mainWindowRedirectUri) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, authClient, logoutUri, popupWindow, navigationOptions, absoluteUrl, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 5, , 6]);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, requestAuthority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n popupWindow = this.openPopup(logoutUri, { popupName: popupName, popupWindowAttributes: popupWindowAttributes, popup: popup });\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.waitForLogoutPopup(popupWindow)];\r\n case 4:\r\n _a.sent();\r\n if (mainWindowRedirectUri) {\r\n navigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(\"Redirecting main window to: \" + absoluteUrl);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n }\r\n else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_2 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e_2);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n throw e_2;\r\n case 6:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n PopupClient.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.logger.infoPii(\"Navigate to: \" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.openPopup(requestUrl, params);\r\n }\r\n else {\r\n // Throw error if request URL is empty.\r\n this.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n };\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - timeout for processing hash once popup is redirected back to application\r\n */\r\n PopupClient.prototype.monitorPopupForHash = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n var maxTicks = _this.config.system.windowHashTimeout / BrowserConstants.POLL_INTERVAL_MS;\r\n var ticks = 0;\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var hash = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n hash = popupWindow.location.hash;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n if (hash) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n if (UrlString.hashContainsKnownProperties(hash)) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\r\n resolve(hash);\r\n }\r\n else {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\r\n _this.logger.errorPii(\"PopupHandler.monitorPopupForHash - hash found: \" + hash);\r\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\r\n }\r\n }\r\n else if (ticks > maxTicks) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * Waits for user interaction in logout popup window\r\n * @param popupWindow\r\n * @returns\r\n */\r\n PopupClient.prototype.waitForLogoutPopup = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n resolve();\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n PopupClient.prototype.openPopup = function (urlNavigate, popupParams) {\r\n try {\r\n var popupWindow = void 0;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(\"Navigating popup window to: \" + urlNavigate);\r\n popupWindow.location.assign(urlNavigate);\r\n }\r\n else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(\"Opening popup window to: \" + urlNavigate);\r\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\r\n }\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n return popupWindow;\r\n }\r\n catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n };\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n PopupClient.prototype.openSizedPopup = function (urlNavigate, popupName, popupWindowAttributes) {\r\n var _a, _b, _c, _d;\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n var winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n var winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n var winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n var width = (_a = popupWindowAttributes.popupSize) === null || _a === void 0 ? void 0 : _a.width;\r\n var height = (_b = popupWindowAttributes.popupSize) === null || _b === void 0 ? void 0 : _b.height;\r\n var top = (_c = popupWindowAttributes.popupPosition) === null || _c === void 0 ? void 0 : _c.top;\r\n var left = (_d = popupWindowAttributes.popupPosition) === null || _d === void 0 ? void 0 : _d.left;\r\n if (!width || width < 0 || width > winWidth) {\r\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n if (!height || height < 0 || height > winHeight) {\r\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n if (!top || top < 0 || top > winHeight) {\r\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n if (!left || left < 0 || left > winWidth) {\r\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n return window.open(urlNavigate, popupName, \"width=\" + width + \", height=\" + height + \", top=\" + top + \", left=\" + left + \", scrollbars=yes\");\r\n };\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n PopupClient.prototype.unloadWindow = function (e) {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n };\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n PopupClient.prototype.cleanPopup = function (popupWindow) {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generatePopupName = function (scopes, authority) {\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + scopes.join(\"-\") + \".\" + authority + \".\" + this.correlationId;\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generateLogoutPopupName = function (request) {\r\n var homeAccountId = request.account && request.account.homeAccountId;\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + homeAccountId + \".\" + this.correlationId;\r\n };\r\n return PopupClient;\r\n}(StandardInteractionClient));\n\nexport { PopupClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, AuthError, Constants, ThrottlingUtils, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { TemporaryCacheKeys, ApiId, InteractionType } from '../utils/BrowserConstants.js';\nimport { RedirectHandler } from '../interaction_handler/RedirectHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectClient = /** @class */ (function (_super) {\r\n __extends(RedirectClient, _super);\r\n function RedirectClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n RedirectClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validRequest, serverTelemetryManager, handleBackButton, authCodeRequest, authClient, interactionHandler, navigateUrl, redirectStartPage, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Redirect)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n handleBackButton = function (event) {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n _this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n _this.browserStorage.cleanRequestByState(validRequest.state);\r\n }\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme) }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(\"Redirect start page: \" + redirectStartPage);\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n return [4 /*yield*/, interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n })];\r\n case 6: \r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return [2 /*return*/, _a.sent()];\r\n case 7:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n RedirectClient.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, responseHash, state, serverParams, loginRequestUrl, loginRequestUrlNormalized, currentUrlNormalized, handleHashResult, navigationOptions, processHashOnRedirect, homepage, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n state = void 0;\r\n try {\r\n serverParams = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n }\r\n catch (e) {\r\n this.logger.info(\"handleRedirectPromise was unable to extract state due to: \" + e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n if (!(loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl)) return [3 /*break*/, 3];\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n return [4 /*yield*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 2:\r\n handleHashResult = _a.sent();\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n return [2 /*return*/, handleHashResult];\r\n case 3:\r\n if (!!this.config.auth.navigateToLoginRequestUrl) return [3 /*break*/, 4];\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 4:\r\n if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n navigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n processHashOnRedirect = true;\r\n if (!(!loginRequestUrl || loginRequestUrl === \"null\")) return [3 /*break*/, 6];\r\n homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(homepage, navigationOptions)];\r\n case 5:\r\n processHashOnRedirect = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 6:\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(\"Navigating to loginRequestUrl: \" + loginRequestUrl);\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions)];\r\n case 7:\r\n processHashOnRedirect = _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n }\r\n _a.label = 9;\r\n case 9: return [2 /*return*/, null];\r\n case 10:\r\n e_2 = _a.sent();\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e_2;\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n RedirectClient.prototype.getRedirectResponseHash = function (hash) {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n var isResponseHash = UrlString.hashContainsKnownProperties(hash);\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n var cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n };\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n RedirectClient.prototype.handleHash = function (hash, state, serverTelemetryManager) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, serverParams, nativeInteractionClient, userRequestState, currentAuthority, authClient, interactionHandler;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, cachedRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, cachedRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, currentAuthority)];\r\n case 1:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n RedirectClient.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validLogoutRequest, serverTelemetryManager, navigationOptions, authClient, logoutUri, navigate, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutRedirect called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validLogoutRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n navigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validLogoutRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n if (!(logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\")) return [3 /*break*/, 7];\r\n navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n if (!(navigate !== false)) return [3 /*break*/, 5];\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 5:\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 9];\r\n case 7:\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 8:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 9: return [3 /*break*/, 11];\r\n case 10:\r\n e_3 = _a.sent();\r\n if (e_3 instanceof AuthError) {\r\n e_3.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e_3;\r\n case 11:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n RedirectClient.prototype.getRedirectStartPage = function (requestStartPage) {\r\n var redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n };\r\n return RedirectClient;\r\n}(StandardInteractionClient));\n\nexport { RedirectClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentAuthCodeClient = /** @class */ (function (_super) {\r\n __extends(SilentAuthCodeClient, _super);\r\n function SilentAuthCodeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n SilentAuthCodeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, serverTelemetryManager, authCodeRequest, clientConfig, authClient, silentHandler, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n authCodeRequest = __assign(__assign({}, silentRequest), { code: request.code });\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, silentRequest.authority)];\r\n case 3:\r\n clientConfig = _a.sent();\r\n authClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\r\n // Handle auth code parameters from request\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromServer({\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n }, silentRequest.state, authClient.authority, this.networkClient, false)];\r\n case 4:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentAuthCodeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n return SilentAuthCodeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentAuthCodeClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { PerformanceEvents, SilentFlowClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentCacheClient = /** @class */ (function (_super) {\r\n __extends(SilentCacheClient, _super);\r\n function SilentCacheClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n SilentCacheClient.prototype.acquireToken = function (silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, serverTelemetryManager, silentAuthClient, cachedToken, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 1:\r\n silentAuthClient = _a.sent();\r\n this.logger.verbose(\"Silent auth client created\");\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, silentAuthClient.acquireCachedToken(silentRequest)];\r\n case 3:\r\n cachedToken = _a.sent();\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, cachedToken];\r\n case 4:\r\n error_1 = _a.sent();\r\n if (error_1 instanceof BrowserAuthError && error_1.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentCacheClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentCacheClient.prototype.createSilentFlowClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new SilentFlowClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n SilentCacheClient.prototype.initializeSilentRequest = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { account: account, forceRefresh: request.forceRefresh || false }])];\r\n }\r\n });\r\n });\r\n };\r\n return SilentCacheClient;\r\n}(StandardInteractionClient));\n\nexport { SilentCacheClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants, PerformanceEvents, StringUtils, PromptValue, UrlString, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentIframeClient = /** @class */ (function (_super) {\r\n __extends(SilentIframeClient, _super);\r\n function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\r\n * @param request\r\n */\r\n SilentIframeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, silentRequest, serverTelemetryManager, authClient, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n // Check that prompt is set to none, throw error if it is set to anything else.\r\n if (request.prompt && request.prompt !== PromptValue.NONE) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(__assign(__assign({}, request), { prompt: PromptValue.NONE }), InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n return [4 /*yield*/, this.silentTokenHelper(authClient, silentRequest).then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false\r\n });\r\n return result;\r\n })];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e_1;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentIframeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n SilentIframeClient.prototype.silentTokenHelper = function (authClient, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authCodeRequest, navigateUrl, silentHandler, msalFrame, hash, serverParams, state, nativeInteractionClient, userRequestState;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];\r\n case 1:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, silentRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme) }))];\r\n case 2:\r\n navigateUrl = _a.sent();\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\r\n return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];\r\n case 3:\r\n msalFrame = _a.sent();\r\n return [4 /*yield*/, silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout)];\r\n case 4:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, silentRequest), { state: userRequestState, prompt: PromptValue.NONE })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n // Handle response from hash string\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentIframeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentIframeClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { AuthError, PerformanceEvents, RefreshTokenClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentRefreshClient = /** @class */ (function (_super) {\r\n __extends(SilentRefreshClient, _super);\r\n function SilentRefreshClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n SilentRefreshClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, _a, acquireTokenMeasurement, serverTelemetryManager, refreshTokenClient;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n silentRequest = __assign.apply(void 0, _a.concat([_b.sent()]));\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 2:\r\n refreshTokenClient = _b.sent();\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(_this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentRefreshClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentRefreshClient.prototype.createRefreshTokenClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new RefreshTokenClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentRefreshClient;\r\n}(StandardInteractionClient));\n\nexport { SilentRefreshClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, Constants, AuthorizationCodeClient, PerformanceEvents, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { version } from '../packageMetadata.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nvar StandardInteractionClient = /** @class */ (function (_super) {\r\n __extends(StandardInteractionClient, _super);\r\n function StandardInteractionClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationCodeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var generatedPkceParams, authCodeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];\r\n case 1:\r\n generatedPkceParams = _a.sent();\r\n authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: Constants.EMPTY_STRING, codeVerifier: generatedPkceParams.verifier });\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n return [2 /*return*/, authCodeRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if (logoutRequest.account) {\r\n var logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n return validLogoutRequest;\r\n };\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n StandardInteractionClient.prototype.getLogoutHintFromIdTokenClaims = function (account) {\r\n var idTokenClaims = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n }\r\n else {\r\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n return null;\r\n };\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n StandardInteractionClient.prototype.createAuthCodeClient = function (serverTelemetryManager, authorityUrl, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new AuthorizationCodeClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getClientConfiguration = function (serverTelemetryManager, requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var discoveredAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions)];\r\n case 1:\r\n discoveredAuthority = _a.sent();\r\n return [2 /*return*/, {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\r\n logLevel: this.config.system.loggerOptions.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n var platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getAuthorityMeasurement, authorityOptions, userAuthority, builtAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n };\r\n userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\r\n .then(function (result) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationRequest = function (request, interactionType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var redirectUri, browserState, state, validatedRequest, _a, account, legacyLoginHint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n redirectUri = this.getRedirectUri(request.redirectUri);\r\n browserState = {\r\n interactionType: interactionType\r\n };\r\n state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);\r\n _a = [{}];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n validatedRequest = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT }]);\r\n account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(\"Setting validated request account: \" + account.homeAccountId, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return StandardInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { StandardInteractionClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nvar InteractionHandler = /** @class */ (function () {\r\n function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, logger) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.logger = logger;\r\n }\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];\r\n });\r\n });\r\n };\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse\r\n * @param state\r\n * @param authority\r\n * @param networkModule\r\n * @returns\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromServer = function (authCodeResponse, state, authority, networkModule, validateNonce) {\r\n if (validateNonce === void 0) { validateNonce = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname\r\n * @param authority\r\n * @param networkModule\r\n */\r\n InteractionHandler.prototype.updateTokenEndpointAuthority = function (cloudInstanceHostname, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cloudInstanceAuthorityUri, cloudInstanceAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cloudInstanceAuthorityUri = \"https://\" + cloudInstanceHostname + \"/\" + authority.tenant + \"/\";\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options)];\r\n case 1:\r\n cloudInstanceAuthority = _a.sent();\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n InteractionHandler.prototype.checkCcsCredentials = function () {\r\n // Look up ccs credential in temp cache\r\n var cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred);\r\n }\r\n catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(\"Cache credential could not be parsed: \" + cachedCcsCred);\r\n }\r\n }\r\n return null;\r\n };\r\n return InteractionHandler;\r\n}());\n\nexport { InteractionHandler };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.js';\nimport { InteractionHandler } from './InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectHandler = /** @class */ (function (_super) {\r\n __extends(RedirectHandler, _super);\r\n function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, logger, browserCrypto) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;\r\n _this.browserCrypto = browserCrypto;\r\n return _this;\r\n }\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n RedirectHandler.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var navigationOptions, navigate;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n if (!!StringUtils.isEmpty(requestUrl)) return [3 /*break*/, 7];\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.logger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to: \" + requestUrl);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n if (!(typeof params.onRedirectNavigate === \"function\")) return [3 /*break*/, 4];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n navigate = params.onRedirectNavigate(requestUrl);\r\n if (!(navigate !== false)) return [3 /*break*/, 2];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return [2 /*return*/];\r\n case 3: return [3 /*break*/, 6];\r\n case 4:\r\n // Navigate window to request URL\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n return RedirectHandler;\r\n}(InteractionHandler));\n\nexport { RedirectHandler };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, Constants, UrlString } from '@azure/msal-common';\nimport { InteractionHandler } from './InteractionHandler.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentHandler = /** @class */ (function (_super) {\r\n __extends(SilentHandler, _super);\r\n function SilentHandler(authCodeModule, storageImpl, authCodeRequest, logger, navigateFrameWait) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;\r\n _this.navigateFrameWait = navigateFrameWait;\r\n return _this;\r\n }\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n SilentHandler.prototype.initiateAuthRequest = function (requestUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n if (!this.navigateFrameWait) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.loadFrame(requestUrl)];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = this.loadFrameSync(requestUrl);\r\n _b.label = 3;\r\n case 3: return [2 /*return*/, _a];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n SilentHandler.prototype.monitorIframeForHash = function (iframe, timeout) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n _this.logger.warning(\"system.loadFrameTimeout or system.iframeHashTimeout set to lower (\" + timeout + \"ms) than the default (\" + DEFAULT_IFRAME_TIMEOUT_MS + \"ms). This may result in timeouts.\");\r\n }\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n var nowMark = window.performance.now();\r\n var timeoutMark = nowMark + timeout;\r\n var intervalId = setInterval(function () {\r\n if (window.performance.now() > timeoutMark) {\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n }\r\n catch (e) { }\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n var contentHash = contentWindow ? contentWindow.location.hash : Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n SilentHandler.prototype.loadFrame = function (urlNavigate) {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var frameHandle = _this.createHiddenIframe();\r\n setTimeout(function () {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n frameHandle.src = urlNavigate;\r\n resolve(frameHandle);\r\n }, _this.navigateFrameWait);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n SilentHandler.prototype.loadFrameSync = function (urlNavigate) {\r\n var frameHandle = this.createHiddenIframe();\r\n frameHandle.src = urlNavigate;\r\n return frameHandle;\r\n };\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.createHiddenIframe = function () {\r\n var authFrame = document.createElement(\"iframe\");\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n return authFrame;\r\n };\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.removeHiddenIframe = function (iframe) {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n };\r\n return SilentHandler;\r\n}(InteractionHandler));\n\nexport { SilentHandler };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NavigationClient = /** @class */ (function () {\r\n function NavigationClient() {\r\n }\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateInternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateExternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.defaultNavigateWindow = function (url, options) {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n }\r\n else {\r\n window.location.assign(url);\r\n }\r\n return new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n };\r\n return NavigationClient;\r\n}());\n\nexport { NavigationClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nvar FetchClient = /** @class */ (function () {\r\n function FetchClient() {\r\n }\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n })];\r\n case 1:\r\n response = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e_1, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 4: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 5:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqBody, response, e_3, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e_3, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 5: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 6:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders\r\n */\r\n FetchClient.prototype.getFetchHeaders = function (options) {\r\n var headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n var optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach(function (key) {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n };\r\n FetchClient.prototype.getHeaderDict = function (headers) {\r\n var headerDict = {};\r\n headers.forEach(function (value, key) {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n };\r\n return FetchClient;\r\n}());\n\nexport { FetchClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nvar XhrClient = /** @class */ (function () {\r\n function XhrClient() {\r\n }\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url\r\n * @param method\r\n * @param options\r\n */\r\n XhrClient.prototype.sendRequestAsync = function (url, method, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n _this.setXhrHeaders(xhr, options);\r\n xhr.onload = function () {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n try {\r\n var jsonResponse = JSON.parse(xhr.responseText);\r\n var networkResponse = {\r\n headers: _this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n }\r\n catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n }\r\n else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n }\r\n else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n };\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr\r\n * @param options\r\n */\r\n XhrClient.prototype.setXhrHeaders = function (xhr, options) {\r\n if (options && options.headers) {\r\n var headers_1 = options.headers;\r\n Object.keys(headers_1).forEach(function (key) {\r\n xhr.setRequestHeader(key, headers_1[key]);\r\n });\r\n }\r\n };\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n *\r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr\r\n */\r\n XhrClient.prototype.getHeaderDict = function (xhr) {\r\n var headerString = xhr.getAllResponseHeaders();\r\n var headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n var headerDict = {};\r\n headerArr.forEach(function (value) {\r\n var parts = value.split(\": \");\r\n var headerName = parts.shift();\r\n var headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n return headerDict;\r\n };\r\n return XhrClient;\r\n}());\n\nexport { XhrClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-browser\";\r\nvar version = \"2.25.0\";\n\nexport { name, version };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { __extends, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceClient } from '@azure/msal-common';\nimport { BrowserCrypto } from '../crypto/BrowserCrypto.js';\nimport { GuidGenerator } from '../crypto/GuidGenerator.js';\nimport { BrowserPerformanceMeasurement } from './BrowserPerformanceMeasurement.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceClient = /** @class */ (function (_super) {\r\n __extends(BrowserPerformanceClient, _super);\r\n function BrowserPerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n var _this = _super.call(this, clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) || this;\r\n _this.browserCrypto = new BrowserCrypto(_this.logger);\r\n _this.guidGenerator = new GuidGenerator(_this.browserCrypto);\r\n return _this;\r\n }\r\n BrowserPerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n };\r\n BrowserPerformanceClient.prototype.generateId = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n BrowserPerformanceClient.prototype.getPageVisibility = function () {\r\n var _a;\r\n return ((_a = document.visibilityState) === null || _a === void 0 ? void 0 : _a.toString()) || null;\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial) => PerformanceEvent| null)}\r\n */\r\n BrowserPerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n // Capture page visibilityState and then invoke start/end measurement\r\n var startPageVisibility = this.getPageVisibility();\r\n var inProgressEvent = _super.prototype.startMeasurement.call(this, measureName, correlationId);\r\n return __assign(__assign({}, inProgressEvent), { endMeasurement: function (event) {\r\n return inProgressEvent.endMeasurement(__assign({ startPageVisibility: startPageVisibility, endPageVisibility: _this.getPageVisibility() }, event));\r\n } });\r\n };\r\n return BrowserPerformanceClient;\r\n}(PerformanceClient));\n\nexport { BrowserPerformanceClient };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceMeasurement = /** @class */ (function () {\r\n function BrowserPerformanceMeasurement(name, correlationId) {\r\n this.correlationId = correlationId;\r\n this.measureName = \"msal.measure.\" + name + \".\" + this.correlationId;\r\n this.startMark = \"msal.start.\" + name + \".\" + this.correlationId;\r\n this.endMark = \"msal.end.\" + name + \".\" + this.correlationId;\r\n }\r\n BrowserPerformanceMeasurement.supportsBrowserPerformance = function () {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n };\r\n BrowserPerformanceMeasurement.prototype.startMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.endMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n var entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n var durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n }\r\n catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n };\r\n return BrowserPerformanceMeasurement;\r\n}());\n\nexport { BrowserPerformanceMeasurement };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constants\r\n */\r\nvar BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n POLL_INTERVAL_MS: 50,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\nvar NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\"\r\n};\r\nvar NativeExtensionMethod;\r\n(function (NativeExtensionMethod) {\r\n NativeExtensionMethod[\"HandshakeRequest\"] = \"Handshake\";\r\n NativeExtensionMethod[\"HandshakeResponse\"] = \"HandshakeResponse\";\r\n NativeExtensionMethod[\"GetToken\"] = \"GetToken\";\r\n NativeExtensionMethod[\"Response\"] = \"Response\";\r\n})(NativeExtensionMethod || (NativeExtensionMethod = {}));\r\nvar BrowserCacheLocation;\r\n(function (BrowserCacheLocation) {\r\n BrowserCacheLocation[\"LocalStorage\"] = \"localStorage\";\r\n BrowserCacheLocation[\"SessionStorage\"] = \"sessionStorage\";\r\n BrowserCacheLocation[\"MemoryStorage\"] = \"memoryStorage\";\r\n})(BrowserCacheLocation || (BrowserCacheLocation = {}));\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nvar HTTP_REQUEST_TYPE;\r\n(function (HTTP_REQUEST_TYPE) {\r\n HTTP_REQUEST_TYPE[\"GET\"] = \"GET\";\r\n HTTP_REQUEST_TYPE[\"POST\"] = \"POST\";\r\n})(HTTP_REQUEST_TYPE || (HTTP_REQUEST_TYPE = {}));\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nvar TemporaryCacheKeys;\r\n(function (TemporaryCacheKeys) {\r\n TemporaryCacheKeys[\"AUTHORITY\"] = \"authority\";\r\n TemporaryCacheKeys[\"ACQUIRE_TOKEN_ACCOUNT\"] = \"acquireToken.account\";\r\n TemporaryCacheKeys[\"SESSION_STATE\"] = \"session.state\";\r\n TemporaryCacheKeys[\"REQUEST_STATE\"] = \"request.state\";\r\n TemporaryCacheKeys[\"NONCE_IDTOKEN\"] = \"nonce.id_token\";\r\n TemporaryCacheKeys[\"ORIGIN_URI\"] = \"request.origin\";\r\n TemporaryCacheKeys[\"RENEW_STATUS\"] = \"token.renew.status\";\r\n TemporaryCacheKeys[\"URL_HASH\"] = \"urlHash\";\r\n TemporaryCacheKeys[\"REQUEST_PARAMS\"] = \"request.params\";\r\n TemporaryCacheKeys[\"SCOPES\"] = \"scopes\";\r\n TemporaryCacheKeys[\"INTERACTION_STATUS_KEY\"] = \"interaction.status\";\r\n TemporaryCacheKeys[\"CCS_CREDENTIAL\"] = \"ccs.credential\";\r\n TemporaryCacheKeys[\"CORRELATION_ID\"] = \"request.correlationId\";\r\n TemporaryCacheKeys[\"NATIVE_REQUEST\"] = \"request.native\";\r\n})(TemporaryCacheKeys || (TemporaryCacheKeys = {}));\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nvar InMemoryCacheKeys;\r\n(function (InMemoryCacheKeys) {\r\n InMemoryCacheKeys[\"WRAPPER_SKU\"] = \"wrapper.sku\";\r\n InMemoryCacheKeys[\"WRAPPER_VER\"] = \"wrapper.version\";\r\n})(InMemoryCacheKeys || (InMemoryCacheKeys = {}));\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nvar ApiId;\r\n(function (ApiId) {\r\n ApiId[ApiId[\"acquireTokenRedirect\"] = 861] = \"acquireTokenRedirect\";\r\n ApiId[ApiId[\"acquireTokenPopup\"] = 862] = \"acquireTokenPopup\";\r\n ApiId[ApiId[\"ssoSilent\"] = 863] = \"ssoSilent\";\r\n ApiId[ApiId[\"acquireTokenSilent_authCode\"] = 864] = \"acquireTokenSilent_authCode\";\r\n ApiId[ApiId[\"handleRedirectPromise\"] = 865] = \"handleRedirectPromise\";\r\n ApiId[ApiId[\"acquireTokenByCode\"] = 866] = \"acquireTokenByCode\";\r\n ApiId[ApiId[\"acquireTokenSilent_silentFlow\"] = 61] = \"acquireTokenSilent_silentFlow\";\r\n ApiId[ApiId[\"logout\"] = 961] = \"logout\";\r\n ApiId[ApiId[\"logoutPopup\"] = 962] = \"logoutPopup\";\r\n})(ApiId || (ApiId = {}));\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nvar InteractionType;\r\n(function (InteractionType) {\r\n InteractionType[\"Redirect\"] = \"redirect\";\r\n InteractionType[\"Popup\"] = \"popup\";\r\n InteractionType[\"Silent\"] = \"silent\";\r\n InteractionType[\"None\"] = \"none\";\r\n})(InteractionType || (InteractionType = {}));\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nvar InteractionStatus;\r\n(function (InteractionStatus) {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n InteractionStatus[\"Startup\"] = \"startup\";\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n InteractionStatus[\"Login\"] = \"login\";\r\n /**\r\n * Status set when logout call occuring\r\n */\r\n InteractionStatus[\"Logout\"] = \"logout\";\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n InteractionStatus[\"AcquireToken\"] = \"acquireToken\";\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n InteractionStatus[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n InteractionStatus[\"HandleRedirect\"] = \"handleRedirect\";\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n InteractionStatus[\"None\"] = \"none\";\r\n})(InteractionStatus || (InteractionStatus = {}));\r\nvar DEFAULT_REQUEST = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nvar KEY_FORMAT_JWK = \"jwk\";\r\n// Supported wrapper SKUs\r\nvar WrapperSKU;\r\n(function (WrapperSKU) {\r\n WrapperSKU[\"React\"] = \"@azure/msal-react\";\r\n WrapperSKU[\"Angular\"] = \"@azure/msal-angular\";\r\n})(WrapperSKU || (WrapperSKU = {}));\r\n// DatabaseStorage Constants\r\nvar DB_NAME = \"msal.db\";\r\nvar DB_VERSION = 1;\r\nvar DB_TABLE_NAME = DB_NAME + \".keys\";\n\nexport { ApiId, BrowserCacheLocation, BrowserConstants, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, NativeConstants, NativeExtensionMethod, TemporaryCacheKeys, WrapperSKU };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserProtocolUtils = /** @class */ (function () {\r\n function BrowserProtocolUtils() {\r\n }\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto\r\n * @param state\r\n */\r\n BrowserProtocolUtils.extractBrowserRequestState = function (browserCrypto, state) {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n try {\r\n var requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta;\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n BrowserProtocolUtils.parseServerResponseFromHash = function (locationHash) {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n var hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n };\r\n return BrowserProtocolUtils;\r\n}());\n\nexport { BrowserProtocolUtils };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar BrowserStringUtils = /** @class */ (function () {\r\n function BrowserStringUtils() {\r\n }\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr\r\n */\r\n BrowserStringUtils.stringToUtf8Arr = function (sDOMStr) {\r\n var nChr;\r\n var nArrLen = 0;\r\n var nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n var aBytes = new Uint8Array(nArrLen);\r\n /* transcription... */\r\n for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n }\r\n else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString\r\n */\r\n BrowserStringUtils.stringToArrayBuffer = function (dataString) {\r\n var data = new ArrayBuffer(dataString.length);\r\n var dataView = new Uint8Array(data);\r\n for (var i = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n };\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes\r\n */\r\n BrowserStringUtils.utf8ArrToString = function (aBytes) {\r\n var sView = Constants.EMPTY_STRING;\r\n for (var nPart = void 0, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart);\r\n }\r\n return sView;\r\n };\r\n return BrowserStringUtils;\r\n}());\n\nexport { BrowserStringUtils };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\nimport { Constants, UrlString } from '@azure/msal-common';\nimport { FetchClient } from '../network/FetchClient.js';\nimport { XhrClient } from '../network/XhrClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserConstants, InteractionType } from './BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nvar BrowserUtils = /** @class */ (function () {\r\n function BrowserUtils() {\r\n }\r\n // #region Window Navigation and URL management\r\n /**\r\n * Clears hash from window url.\r\n */\r\n BrowserUtils.clearHash = function (contentWindow) {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, \"\" + contentWindow.location.origin + contentWindow.location.pathname + contentWindow.location.search);\r\n }\r\n };\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n BrowserUtils.replaceHash = function (url) {\r\n var urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n BrowserUtils.isInIframe = function () {\r\n return window.parent !== window;\r\n };\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n BrowserUtils.isInPopup = function () {\r\n return typeof window !== \"undefined\" && !!window.opener &&\r\n window.opener !== window &&\r\n typeof window.name === \"string\" &&\r\n window.name.indexOf(BrowserConstants.POPUP_NAME_PREFIX + \".\") === 0;\r\n };\r\n // #endregion\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n BrowserUtils.getCurrentUri = function () {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n };\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n BrowserUtils.getHomepage = function () {\r\n var currentUrl = new UrlString(window.location.href);\r\n var urlComponents = currentUrl.getUrlComponents();\r\n return urlComponents.Protocol + \"//\" + urlComponents.HostNameAndPort + \"/\";\r\n };\r\n /**\r\n * Returns best compatible network client object.\r\n */\r\n BrowserUtils.getBrowserNetworkClient = function () {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n }\r\n else {\r\n return new XhrClient();\r\n }\r\n };\r\n /**\r\n * Throws error if we have completed an auth and are\r\n * attempting another auth request inside an iframe.\r\n */\r\n BrowserUtils.blockReloadInHiddenIframes = function () {\r\n var isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n };\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n BrowserUtils.blockRedirectInIframe = function (interactionType, allowRedirectInIframe) {\r\n var isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n };\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n BrowserUtils.blockAcquireTokenInPopups = function () {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n };\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n BrowserUtils.blockNonBrowserEnvironment = function (isBrowserEnvironment) {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n };\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker\r\n * @param initialized\r\n */\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized = function (allowNativeBroker, initialized) {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n };\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n BrowserUtils.detectIEOrEdge = function () {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf(\"MSIE \");\r\n var msie11 = ua.indexOf(\"Trident/\");\r\n var msedge = ua.indexOf(\"Edge/\");\r\n var isIE = msie > 0 || msie11 > 0;\r\n var isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n };\r\n return BrowserUtils;\r\n}());\n\nexport { BrowserUtils };\n","/*! @azure/msal-browser v2.25.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nvar MathUtils = /** @class */ (function () {\r\n function MathUtils() {\r\n }\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n MathUtils.decimalToHex = function (num) {\r\n var hex = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n };\r\n return MathUtils;\r\n}());\n\nexport { MathUtils };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __spreadArrays };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nvar AuthToken = /** @class */ (function () {\r\n function AuthToken(rawToken, crypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n AuthToken.extractTokenClaims = function (encodedToken, crypto) {\r\n var decodedToken = StringUtils.decodeAuthToken(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n var base64TokenPayload = decodedToken.JWSPayload;\r\n // base64Decode() should throw an error if there is an issue\r\n var base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n };\r\n return AuthToken;\r\n}());\n\nexport { AuthToken };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CcsCredentialType;\r\n(function (CcsCredentialType) {\r\n CcsCredentialType[\"HOME_ACCOUNT_ID\"] = \"home_account_id\";\r\n CcsCredentialType[\"UPN\"] = \"UPN\";\r\n})(CcsCredentialType || (CcsCredentialType = {}));\n\nexport { CcsCredentialType };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants, Separators } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, crypto) {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n try {\r\n var decodedClientInfo = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n var clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthorityType } from './AuthorityType.js';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes } from '../utils/Constants.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ProtocolMode } from './ProtocolMode.js';\nimport { AuthorityMetadataEntity } from '../cache/entities/AuthorityMetadataEntity.js';\nimport { AzureCloudInstance } from './AuthorityOptions.js';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.js';\nimport { RegionDiscovery } from './RegionDiscovery.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, networkInterface, cacheManager, authorityOptions, proxyUrl) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\r\n }\r\n Object.defineProperty(Authority.prototype, \"authorityType\", {\r\n // See above for AuthorityType\r\n get: function () {\r\n var pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n return AuthorityType.Default;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"protocolMode\", {\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get: function () {\r\n return this.authorityOptions.protocolMode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"options\", {\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get: function () {\r\n return this.authorityOptions;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this._canonicalAuthority.urlString;\r\n },\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set: function (url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthorityUrlComponents\", {\r\n /**\r\n * Get authority components.\r\n */\r\n get: function () {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"hostnameAndPort\", {\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tenant\", {\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"authorizationEndpoint\", {\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tokenEndpoint\", {\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"deviceCodeEndpoint\", {\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"endSessionEndpoint\", {\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n var endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"selfSignedJwtAudience\", {\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n Authority.prototype.replaceTenant = function (urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n };\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n Authority.prototype.replacePath = function (urlString) {\r\n var endpoint = urlString;\r\n var cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n var cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n var currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach(function (currentPart, index) {\r\n var cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(\"/\" + cachedPart + \"/\", \"/\" + currentPart + \"/\");\r\n }\r\n });\r\n return endpoint;\r\n };\r\n Object.defineProperty(Authority.prototype, \"defaultOpenIdConfigurationEndpoint\", {\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get: function () {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return this.canonicalAuthority + \".well-known/openid-configuration\";\r\n }\r\n return this.canonicalAuthority + \"v2.0/.well-known/openid-configuration\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n Authority.prototype.discoveryComplete = function () {\r\n return !!this.metadata;\r\n };\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadataEntity, cloudDiscoverySource, endpointSource, cacheKey;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n return [4 /*yield*/, this.updateCloudDiscoveryMetadata(metadataEntity)];\r\n case 1:\r\n cloudDiscoverySource = _a.sent();\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n return [4 /*yield*/, this.updateEndpointMetadata(metadataEntity)];\r\n case 2:\r\n endpointSource = _a.sent();\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.updateEndpointMetadata = function (metadataEntity) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, autodetectedRegionName, azureRegion;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getEndpointMetadataFromNetwork()];\r\n case 1:\r\n metadata = _b.sent();\r\n if (!metadata) return [3 /*break*/, 4];\r\n if (!((_a = this.authorityOptions.azureRegionConfiguration) === null || _a === void 0 ? void 0 : _a.azureRegion)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl)];\r\n case 2:\r\n autodetectedRegionName = _b.sent();\r\n azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\r\n ? autodetectedRegionName\r\n : this.authorityOptions.azureRegionConfiguration.azureRegion;\r\n if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n }\r\n else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n _b.label = 3;\r\n case 3:\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n case 4: throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.isAuthoritySameType = function (metadataEntity) {\r\n var cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n var cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n };\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n Authority.prototype.getEndpointMetadataFromConfig = function () {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n Authority.prototype.getEndpointMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var options, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, isOpenIdConfigResponse(response.body) ? response.body : null];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata\r\n * @param newMetadata\r\n */\r\n Authority.prototype.updateCloudDiscoveryMetadata = function (metadataEntity) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getCloudDiscoveryMetadataFromNetwork()];\r\n case 1:\r\n metadata = _a.sent();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromConfig = function () {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n var parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n var metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var instanceDiscoveryEndpoint, options, match, response, metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n instanceDiscoveryEndpoint = \"\" + Constants.AAD_INSTANCE_DISCOVERY_ENDPT + this.canonicalAuthority + \"oauth2/v2.0/authorize\";\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n match = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n if (metadata.length === 0) {\r\n // If no metadata is returned, authority is untrusted\r\n return [2 /*return*/, null];\r\n }\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 4:\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return [2 /*return*/, match];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n Authority.prototype.isInKnownAuthorities = function () {\r\n var _this = this;\r\n var matches = this.authorityOptions.knownAuthorities.filter(function (authority) {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === _this.hostnameAndPort;\r\n });\r\n return matches.length > 0;\r\n };\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n Authority.generateAuthority = function (authorityString, azureCloudOptions) {\r\n var authorityAzureCloudInstance;\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n var tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = azureCloudOptions.azureCloudInstance + \"/\" + tenant + \"/\";\r\n }\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n };\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n Authority.createCloudDiscoveryMetadataFromHost = function (host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n };\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n Authority.getCloudDiscoveryMetadataFromNetworkResponse = function (response, authority) {\r\n for (var i = 0; i < response.length; i++) {\r\n var metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n Authority.prototype.getPreferredCache = function () {\r\n if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n };\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n Authority.prototype.isAlias = function (host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n };\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n Authority.isPublicCloudAuthority = function (host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n };\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n Authority.buildRegionalAuthorityString = function (host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n var authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n var authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n var hostNameAndPort = region + \".\" + authorityUrlParts.HostNameAndPort;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = region + \".\" + Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX;\r\n }\r\n // Include the query string portion of the url\r\n var url = UrlString.constructAuthorityUriFromObject(__assign(__assign({}, authorityUrlInstance.getUrlComponents()), { HostNameAndPort: hostNameAndPort })).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return url + \"?\" + queryString;\r\n return url;\r\n };\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n Authority.replaceWithRegionalInformation = function (metadata, azureRegion) {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n return metadata;\r\n };\r\n return Authority;\r\n}());\n\nexport { Authority };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Authority } from './Authority.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenAuthority, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, acquireTokenAuthority.resolveEndpointsAsync()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, acquireTokenAuthority];\r\n case 3:\r\n e_1 = _a.sent();\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e_1);\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl) {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\r\n };\r\n return AuthorityFactory;\r\n}());\n\nexport { AuthorityFactory };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AzureCloudInstance;\r\n(function (AzureCloudInstance) {\r\n // AzureCloudInstance is not specified.\r\n AzureCloudInstance[AzureCloudInstance[\"None\"] = 0] = \"None\";\r\n // Microsoft Azure public cloud\r\n AzureCloudInstance[\"AzurePublic\"] = \"https://login.microsoftonline.com\";\r\n // Microsoft PPE\r\n AzureCloudInstance[\"AzurePpe\"] = \"https://login.windows-ppe.net\";\r\n // Microsoft Chinese national cloud\r\n AzureCloudInstance[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureCloudInstance[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\r\n // US Government cloud\r\n AzureCloudInstance[\"AzureUsGovernment\"] = \"https://login.microsoftonline.us\";\r\n})(AzureCloudInstance || (AzureCloudInstance = {}));\n\nexport { AzureCloudInstance };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nvar AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n})(AuthorityType || (AuthorityType = {}));\n\nexport { AuthorityType };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nvar ProtocolMode;\r\n(function (ProtocolMode) {\r\n ProtocolMode[\"AAD\"] = \"AAD\";\r\n ProtocolMode[\"OIDC\"] = \"OIDC\";\r\n})(ProtocolMode || (ProtocolMode = {}));\n\nexport { ProtocolMode };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { RegionDiscoverySources, ResponseCodes, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RegionDiscovery = /** @class */ (function () {\r\n function RegionDiscovery(networkInterface) {\r\n this.networkInterface = networkInterface;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var autodetectedRegionName, options, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n autodetectedRegionName = environmentRegion;\r\n if (!!autodetectedRegionName) return [3 /*break*/, 8];\r\n options = RegionDiscovery.IMDS_OPTIONS;\r\n if (proxyUrl) {\r\n options.proxyUrl = proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION, options)];\r\n case 2:\r\n localIMDSVersionResponse = _a.sent();\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n if (!(localIMDSVersionResponse.status === ResponseCodes.httpBadRequest)) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getCurrentVersion(options)];\r\n case 3:\r\n currentIMDSVersion = _a.sent();\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n }\r\n return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion, options)];\r\n case 4:\r\n currentIMDSVersionResponse = _a.sent();\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n _a.sent();\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n _a.label = 9;\r\n case 9:\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return [2 /*return*/, autodetectedRegionName || null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n RegionDiscovery.prototype.getRegionFromIMDS = function (version, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?api-version=\" + version + \"&format=text\", options, Constants.IMDS_TIMEOUT)];\r\n });\r\n });\r\n };\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.getCurrentVersion = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?format=json\", options)];\r\n case 1:\r\n response = _a.sent();\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return [2 /*return*/, response.body[\"newest-versions\"][0]];\r\n }\r\n return [2 /*return*/, null];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // Options for the IMDS endpoint request\r\n RegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n return RegionDiscovery;\r\n}());\n\nexport { RegionDiscovery };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator, __extends } from '../_virtual/_tslib.js';\nimport { Constants, CredentialType, AuthenticationScheme, CacheSchemaType, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.js';\nimport { CredentialEntity } from './entities/CredentialEntity.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from './entities/AccountEntity.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthToken } from '../account/AuthToken.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nvar CacheManager = /** @class */ (function () {\r\n function CacheManager(clientId, cryptoImpl) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n CacheManager.prototype.getAllAccounts = function () {\r\n var _this = this;\r\n var currentAccounts = this.getAccountsFilteredBy();\r\n var accountValues = Object.keys(currentAccounts).map(function (accountKey) { return currentAccounts[accountKey]; });\r\n var numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n }\r\n else {\r\n var allAccounts = accountValues.map(function (value) {\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n var idToken = _this.readIdTokenFromCache(_this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, _this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n });\r\n return allAccounts;\r\n }\r\n };\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n CacheManager.prototype.saveCacheRecord = function (cacheRecord) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!!cacheRecord.accessToken) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.saveAccessToken(cacheRecord.accessToken)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n CacheManager.prototype.saveAccessToken = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var currentTokenCache, currentScopes, currentAccessTokens, removedAccessTokens_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n });\r\n currentScopes = ScopeSet.fromString(credential.target);\r\n currentAccessTokens = Object.keys(currentTokenCache.accessTokens).map(function (key) { return currentTokenCache.accessTokens[key]; });\r\n if (!currentAccessTokens) return [3 /*break*/, 2];\r\n removedAccessTokens_1 = [];\r\n currentAccessTokens.forEach(function (tokenEntity) {\r\n var tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens_1.push(_this.removeCredential(tokenEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccessTokens_1)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n this.setAccessTokenCredential(credential);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {\r\n return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING, accountFilter ? accountFilter.environment : Constants.EMPTY_STRING, accountFilter ? accountFilter.realm : Constants.EMPTY_STRING);\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredByInternal = function (homeAccountId, environment, realm) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAccounts = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n return matchingAccounts;\r\n };\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n CacheManager.prototype.getCredentialsFilteredBy = function (filter) {\r\n return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.oboAssertion, filter.tokenType, filter.keyId, filter.requestedClaimsHash);\r\n };\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n * @param oboAssertion\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, oboAssertion, tokenType, keyId, requestedClaimsHash) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingCredentials = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!oboAssertion && !_this.matchOboAssertion(entity, oboAssertion)) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n if (!!credentialType && !_this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n if (!!familyId && !_this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !_this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\r\n return;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!tokenType && !_this.matchTokenType(entity, tokenType)) {\r\n return;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (tokenType === AuthenticationScheme.SSH) {\r\n if (keyId && !_this.matchKeyId(entity, keyId)) {\r\n return;\r\n }\r\n }\r\n }\r\n // At this point, the entity matches the request, update cache key if key schema has changed\r\n var updatedCacheKey = _this.updateCredentialCacheKey(cacheKey, entity);\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n matchingCredentials.accessTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[updatedCacheKey] = entity;\r\n break;\r\n }\r\n });\r\n return matchingCredentials;\r\n };\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredBy = function (filter) {\r\n return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\r\n };\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredByInternal = function (environment, clientId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAppMetadata = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!_this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n };\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAuthorityMetadataByAlias = function (host) {\r\n var _this = this;\r\n var allCacheKeys = this.getAuthorityMetadataKeys();\r\n var matchedEntity = null;\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!_this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(_this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n };\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n CacheManager.prototype.removeAllAccounts = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, removedAccounts;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n removedAccounts = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n removedAccounts.push(_this.removeAccount(cacheKey));\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccounts)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccount = function (accountKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return [4 /*yield*/, this.removeAccountContext(account)];\r\n case 1: return [2 /*return*/, ((_a.sent()) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT))];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccountContext = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, accountId, removedCredentials;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n accountId = account.generateAccountId();\r\n removedCredentials = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n var cacheEntity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n removedCredentials.push(_this.removeCredential(cacheEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedCredentials)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n CacheManager.prototype.removeCredential = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, accessTokenWithAuthSchemeEntity, kid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = credential.generateCredentialKey();\r\n if (!(credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())) return [3 /*break*/, 4];\r\n if (!(credential.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 4];\r\n accessTokenWithAuthSchemeEntity = credential;\r\n kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (!kid) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.cryptoImpl.removeTokenBindingKey(kid)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n case 4: return [2 /*return*/, this.removeItem(key, CacheSchemaType.CREDENTIAL)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n CacheManager.prototype.removeAppMetadata = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n if (_this.isAppMetadata(cacheKey)) {\r\n _this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readCacheRecord = function (account, clientId, request, environment) {\r\n var cachedAccount = this.readAccountFromCache(account);\r\n var cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\r\n var cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n var cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n CacheManager.prototype.readAccountFromCache = function (account) {\r\n var accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n };\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.readIdTokenFromCache = function (clientId, account) {\r\n var idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n var idTokens = Object.keys(credentialCache.idTokens).map(function (key) { return credentialCache.idTokens[key]; });\r\n var numIdTokens = idTokens.length;\r\n if (numIdTokens < 1) {\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return idTokens[0];\r\n };\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, request) {\r\n var scopes = new ScopeSet(request.scopes || []);\r\n var authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n var credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n var accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n CacheManager.prototype.readRefreshTokenFromCache = function (clientId, account, familyRT) {\r\n var id = familyRT ? THE_FAMILY_ID : undefined;\r\n var refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n var refreshTokens = Object.keys(credentialCache.refreshTokens).map(function (key) { return credentialCache.refreshTokens[key]; });\r\n var numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n return refreshTokens[0];\r\n };\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n CacheManager.prototype.readAppMetadataFromCache = function (environment, clientId) {\r\n var appMetadataFilter = {\r\n environment: environment,\r\n clientId: clientId,\r\n };\r\n var appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n var appMetadataEntries = Object.keys(appMetadata).map(function (key) { return appMetadata[key]; });\r\n var numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n return appMetadataEntries[0];\r\n };\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.isAppMetadataFOCI = function (environment, clientId) {\r\n var appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n CacheManager.prototype.matchHomeAccountId = function (entity, homeAccountId) {\r\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\r\n };\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n CacheManager.prototype.matchOboAssertion = function (entity, oboAssertion) {\r\n return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\r\n };\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n CacheManager.prototype.matchEnvironment = function (entity, environment) {\r\n var cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n CacheManager.prototype.matchCredentialType = function (entity, credentialType) {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n };\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n CacheManager.prototype.matchClientId = function (entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n };\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n CacheManager.prototype.matchFamilyId = function (entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n };\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n CacheManager.prototype.matchRealm = function (entity, realm) {\r\n return !!(entity.realm && realm === entity.realm);\r\n };\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n CacheManager.prototype.matchTarget = function (entity, target) {\r\n var isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n var entityScopeSet = ScopeSet.fromString(entity.target);\r\n var requestTargetScopeSet = ScopeSet.fromString(target);\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n }\r\n else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n };\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchTokenType = function (entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n };\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchKeyId = function (entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n };\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAppMetadata = function (key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n };\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAuthorityMetadata = function (key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n };\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n CacheManager.prototype.generateAuthorityMetadataCacheKey = function (authority) {\r\n return AUTHORITY_METADATA_CONSTANTS.CACHE_KEY + \"-\" + this.clientId + \"-\" + authority;\r\n };\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n CacheManager.prototype.getSpecificCredential = function (key, credType) {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n };\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n CacheManager.toObject = function (obj, json) {\r\n for (var propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n };\r\n return CacheManager;\r\n}());\r\nvar DefaultStorageClass = /** @class */ (function (_super) {\r\n __extends(DefaultStorageClass, _super);\r\n function DefaultStorageClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultStorageClass.prototype.setAccount = function () {\r\n var notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccount = function () {\r\n var notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAppMetadata = function () {\r\n var notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAppMetadata = function () {\r\n var notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadataKeys = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.removeItem = function () {\r\n var notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.containsKey = function () {\r\n var notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getKeys = function () {\r\n var notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n };\r\n DefaultStorageClass.prototype.updateCredentialCacheKey = function () {\r\n var notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n return DefaultStorageClass;\r\n}(CacheManager));\n\nexport { CacheManager, DefaultStorageClass };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType, AuthenticationScheme } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { AuthToken } from '../../account/AuthToken.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nvar AccessTokenEntity = /** @class */ (function (_super) {\r\n __extends(AccessTokenEntity, _super);\r\n function AccessTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n AccessTokenEntity.createAccessTokenEntity = function (homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, cryptoUtils, refreshOn, tokenType, oboAssertion, keyId, requestedClaims, requestedClaimsHash) {\r\n var _a, _b;\r\n var atEntity = new AccessTokenEntity();\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n var currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.oboAssertion = oboAssertion;\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (((_a = atEntity.tokenType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n var tokenClaims = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!((_b = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _b === void 0 ? void 0 : _b.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccessTokenEntity.isAccessTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n };\r\n return AccessTokenEntity;\r\n}(CredentialEntity));\n\nexport { AccessTokenEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { Separators, CacheAccountType, CacheType, Constants } from '../../utils/Constants.js';\nimport { buildClientInfo } from '../../account/ClientInfo.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\nimport { AuthorityType } from '../../authority/AuthorityType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * oboAssertion: access token passed in as part of OBO request\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nvar AccountEntity = /** @class */ (function () {\r\n function AccountEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n AccountEntity.prototype.generateAccountId = function () {\r\n var accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n AccountEntity.prototype.generateAccountKey = function () {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n };\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n AccountEntity.prototype.generateType = function () {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n AccountEntity.prototype.getAccountInfo = function () {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n };\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n AccountEntity.generateAccountCacheKey = function (accountInterface) {\r\n var accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n AccountEntity.createAccount = function (clientInfo, homeAccountId, idToken, authority, oboAssertion, cloudGraphHostName, msGraphHost, environment, nativeAccountId) {\r\n var _a, _b, _c, _d, _e, _f;\r\n var account = new AccountEntity();\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n var env = environment || (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.tid) || Constants.EMPTY_STRING;\r\n account.oboAssertion = oboAssertion;\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.oid) || ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.sub) || Constants.EMPTY_STRING;\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\r\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\r\n */\r\n account.username = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.preferred_username) || (((_e = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _e === void 0 ? void 0 : _e.emails) ? idToken.claims.emails[0] : Constants.EMPTY_STRING);\r\n account.name = (_f = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _f === void 0 ? void 0 : _f.name;\r\n }\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n return account;\r\n };\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n AccountEntity.createGenericAccount = function (homeAccountId, idToken, authority, oboAssertion, cloudGraphHostName, msGraphHost, environment) {\r\n var _a, _b, _c, _d;\r\n var account = new AccountEntity();\r\n account.authorityType = (authority && authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n account.oboAssertion = oboAssertion;\r\n var env = environment || authority && authority.getPreferredCache();\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.oid) || ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.sub) || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.upn) || Constants.EMPTY_STRING;\r\n account.name = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.name) || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken === null || idToken === void 0 ? void 0 : idToken.claims;\r\n }\r\n account.environment = env;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n return account;\r\n };\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n AccountEntity.generateHomeAccountId = function (serverClientInfo, authType, logger, cryptoObj, idToken) {\r\n var _a;\r\n var accountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.sub) ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs) {\r\n return accountId;\r\n }\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n var clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccountEntity.isAccountEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n };\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n AccountEntity.accountInfoIsEqual = function (accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n var claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n var accountAClaims = (accountA.idTokenClaims || {});\r\n var accountBClaims = (accountB.idTokenClaims || {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n };\r\n return AccountEntity;\r\n}());\n\nexport { AccountEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { Separators, APP_METADATA } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nvar AppMetadataEntity = /** @class */ (function () {\r\n function AppMetadataEntity() {\r\n }\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n AppMetadataEntity.prototype.generateAppMetadataKey = function () {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n };\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n AppMetadataEntity.generateAppMetadataCacheKey = function (environment, clientId) {\r\n var appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n AppMetadataEntity.createAppMetadataEntity = function (clientId, environment, familyId) {\r\n var appMetadata = new AppMetadataEntity();\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n return appMetadata;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AppMetadataEntity.isAppMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n };\r\n return AppMetadataEntity;\r\n}());\n\nexport { AppMetadataEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityMetadataEntity = /** @class */ (function () {\r\n function AuthorityMetadataEntity() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateCloudDiscoveryMetadata = function (metadata, fromNetwork) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateEndpointMetadata = function (metadata, fromNetwork) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority\r\n */\r\n AuthorityMetadataEntity.prototype.updateCanonicalAuthority = function (authority) {\r\n this.canonical_authority = authority;\r\n };\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n AuthorityMetadataEntity.prototype.resetExpiresAt = function () {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n };\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n AuthorityMetadataEntity.prototype.isExpired = function () {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AuthorityMetadataEntity.isAuthorityMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\"));\r\n };\r\n return AuthorityMetadataEntity;\r\n}());\n\nexport { AuthorityMetadataEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CacheRecord = /** @class */ (function () {\r\n function CacheRecord(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n return CacheRecord;\r\n}());\n\nexport { CacheRecord };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { CredentialType, CacheType, Constants, Separators, AuthenticationScheme } from '../../utils/Constants.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -------\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * oboAssertion: access token passed in as part of OBO request\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * }\r\n */\r\nvar CredentialEntity = /** @class */ (function () {\r\n function CredentialEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n CredentialEntity.prototype.generateAccountId = function () {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n };\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n CredentialEntity.prototype.generateCredentialId = function () {\r\n return CredentialEntity.generateCredentialIdForCacheKey(this.credentialType, this.clientId, this.realm, this.familyId);\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.prototype.generateTarget = function () {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.prototype.generateCredentialKey = function () {\r\n return CredentialEntity.generateCredentialCacheKey(this.homeAccountId, this.environment, this.credentialType, this.clientId, this.realm, this.target, this.familyId, this.tokenType, this.requestedClaimsHash);\r\n };\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n CredentialEntity.prototype.generateType = function () {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n CredentialEntity.getCredentialType = function (key) {\r\n // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\r\n // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\r\n return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n }\r\n return CredentialType.ACCESS_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ID_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.REFRESH_TOKEN;\r\n }\r\n return Constants.NOT_DEFINED;\r\n };\r\n /**\r\n * generates credential key\r\n * -\\-----\r\n */\r\n CredentialEntity.generateCredentialCacheKey = function (homeAccountId, environment, credentialType, clientId, realm, target, familyId, tokenType, requestedClaimsHash) {\r\n var credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n CredentialEntity.generateAccountIdForCacheKey = function (homeAccountId, environment) {\r\n var accountId = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n CredentialEntity.generateCredentialIdForCacheKey = function (credentialType, clientId, realm, familyId) {\r\n var clientOrFamilyId = credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n var credentialId = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.generateTargetForCacheKey = function (scopes) {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate requested claims key component as per schema: \r\n */\r\n CredentialEntity.generateClaimsHashForCacheKey = function (requestedClaimsHash) {\r\n return (requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate scheme key componenet as per schema: \r\n */\r\n CredentialEntity.generateSchemeForCacheKey = function (tokenType) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n };\r\n return CredentialEntity;\r\n}());\n\nexport { CredentialEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nvar IdTokenEntity = /** @class */ (function (_super) {\r\n __extends(IdTokenEntity, _super);\r\n function IdTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n IdTokenEntity.createIdTokenEntity = function (homeAccountId, environment, idToken, clientId, tenantId, oboAssertion) {\r\n var idTokenEntity = new IdTokenEntity();\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n idTokenEntity.oboAssertion = oboAssertion;\r\n return idTokenEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n IdTokenEntity.isIdTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n };\r\n return IdTokenEntity;\r\n}(CredentialEntity));\n\nexport { IdTokenEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nvar RefreshTokenEntity = /** @class */ (function (_super) {\r\n __extends(RefreshTokenEntity, _super);\r\n function RefreshTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n RefreshTokenEntity.createRefreshTokenEntity = function (homeAccountId, environment, refreshToken, clientId, familyId, oboAssertion) {\r\n var rtEntity = new RefreshTokenEntity();\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.oboAssertion = oboAssertion;\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n return rtEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n RefreshTokenEntity.isRefreshTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n };\r\n return RefreshTokenEntity;\r\n}(CredentialEntity));\n\nexport { RefreshTokenEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryEntity = /** @class */ (function () {\r\n function ServerTelemetryEntity() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ServerTelemetryEntity.isServerTelemetryEntity = function (key, entity) {\r\n var validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ServerTelemetryEntity;\r\n}());\n\nexport { ServerTelemetryEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ThrottlingConstants } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingEntity = /** @class */ (function () {\r\n function ThrottlingEntity() {\r\n }\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ThrottlingEntity.isThrottlingEntity = function (key, entity) {\r\n var validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ThrottlingEntity;\r\n}());\n\nexport { ThrottlingEntity };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ var TokenCacheContext = /** @class */ (function () {\r\n function TokenCacheContext(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n Object.defineProperty(TokenCacheContext.prototype, \"cacheHasChanged\", {\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get: function () {\r\n return this.hasChanged;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TokenCacheContext.prototype, \"tokenCache\", {\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get: function () {\r\n return this.cache;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return TokenCacheContext;\r\n}());\n\nexport { TokenCacheContext };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign, __spreadArrays } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { Separators, AADServerParamKeys, AuthenticationScheme, GrantType, PromptValue } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from '../request/RequestValidator.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nvar AuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(AuthorizationCodeClient, _super);\r\n function AuthorizationCodeClient(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n _this.includeRedirectUri = true;\r\n return _this;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.getAuthCodeUrl = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createAuthCodeUrlQueryString(request)];\r\n case 1:\r\n queryString = _a.sent();\r\n return [2 /*return*/, UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.acquireToken = function (request, authCodePayload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.info(\"in acquireToken call\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n AuthorizationCodeClient.prototype.handleFragmentResponse = function (hashFragment, cachedState) {\r\n // Handle responses.\r\n var responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Deserialize hash fragment response parameters.\r\n var hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n var serverParams = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return __assign(__assign({}, serverParams), { \r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code });\r\n };\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n AuthorizationCodeClient.prototype.getLogoutUri = function (logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n var queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI.\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.executeTokenRequest = function (authority, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thumbprint, requestBody, queryParameters, ccsCredential, clientInfo, headers, endpoint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : authority.tokenEndpoint + \"?\" + queryParameters;\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, clientAssertion, popTokenGenerator, reqCnfData, correlationId, ccsCred, clientInfo, clientInfo;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n clientAssertion = request.clientAssertion || this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _b.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _b.label = 3;\r\n case 3:\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters((_a = {},\r\n _a[AADServerParamKeys.RETURN_SPA_CODE] = \"1\",\r\n _a));\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createAuthCodeUrlQueryString = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, requestScopes, correlationId, accountSid, clientInfo, clientInfo, popTokenGenerator, reqCnfData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n requestScopes = __spreadArrays(request.scopes || [], request.extraScopesToConsent || []);\r\n parameterBuilder.addScopes(requestScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n accountSid = this.extractAccountSid(request.account);\r\n // If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n if (accountSid && request.prompt === PromptValue.NONE) {\r\n // SessionId is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n if (!request.nativeBroker) return [3 /*break*/, 2];\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _a.sent();\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createLogoutUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n AuthorizationCodeClient.prototype.extractAccountSid = function (account) {\r\n if (account.idTokenClaims) {\r\n var tokenClaims = account.idTokenClaims;\r\n return tokenClaims.sid || null;\r\n }\r\n return null;\r\n };\r\n return AuthorizationCodeClient;\r\n}(BaseClient));\n\nexport { AuthorizationCodeClient };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.js';\nimport { NetworkManager } from '../network/NetworkManager.js';\nimport { Logger } from '../logger/Logger.js';\nimport { HeaderNames, Constants } from '../utils/Constants.js';\nimport { name, version } from '../packageMetadata.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nvar BaseClient = /** @class */ (function () {\r\n function BaseClient(configuration) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n BaseClient.prototype.createTokenRequestHeaders = function (ccsCred) {\r\n var headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n var clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = \"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = \"UPN: \" + ccsCred.credential;\r\n break;\r\n }\r\n }\r\n return headers;\r\n };\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n BaseClient.prototype.executePostToTokenEndpoint = function (tokenEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl })];\r\n case 1:\r\n response = _a.sent();\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n BaseClient.prototype.updateAuthority = function (updatedAuthority) {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n };\r\n return BaseClient;\r\n}());\n\nexport { BaseClient };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { AuthenticationScheme, GrantType, Errors } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from '../error/InteractionRequiredAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nvar RefreshTokenClient = /** @class */ (function (_super) {\r\n __extends(RefreshTokenClient, _super);\r\n function RefreshTokenClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n RefreshTokenClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, undefined, true)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isFOCI, noFamilyRTInCache, clientMismatchErrorWithFamilyRT;\r\n return __generator(this, function (_a) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, true)];\r\n }\r\n catch (e) {\r\n noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n });\r\n });\r\n };\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenWithCachedRefreshToken = function (request, foci) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var refreshToken, refreshTokenRequest;\r\n return __generator(this, function (_a) {\r\n refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n // no refresh Token\r\n if (!refreshToken) {\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n refreshTokenRequest = __assign(__assign({}, request), { refreshToken: refreshToken.secret, authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n } });\r\n return [2 /*return*/, this.acquireToken(refreshTokenRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n RefreshTokenClient.prototype.executeTokenRequest = function (request, authority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, queryParameters, headers, thumbprint, endpoint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, correlationId, clientAssertion, popTokenGenerator, reqCnfData, clientInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n clientAssertion = request.clientAssertion || this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _a.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n return RefreshTokenClient;\r\n}(BaseClient));\n\nexport { RefreshTokenClient };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { RefreshTokenClient } from './RefreshTokenClient.js';\nimport { ClientAuthError, ClientAuthErrorMessage } from '../error/ClientAuthError.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { CacheOutcome } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentFlowClient = /** @class */ (function (_super) {\r\n __extends(SilentFlowClient, _super);\r\n function SilentFlowClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, refreshTokenClient;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireCachedToken(request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof ClientAuthError && e_1.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n refreshTokenClient = new RefreshTokenClient(this.config);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(request)];\r\n }\r\n else {\r\n throw e_1;\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireCachedToken = function (request) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var environment, cacheRecord;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n (_a = this.serverTelemetryManager) === null || _a === void 0 ? void 0 : _a.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n environment = request.authority || this.authority.getPreferredCache();\r\n cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n (_b = this.serverTelemetryManager) === null || _b === void 0 ? void 0 : _b.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired access_token.\r\n (_c = this.serverTelemetryManager) === null || _c === void 0 ? void 0 : _c.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within \" + this.config.systemOptions.tokenRenewalOffsetSeconds + \" seconds.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n (_d = this.serverTelemetryManager) === null || _d === void 0 ? void 0 : _d.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [4 /*yield*/, this.generateResultFromCacheRecord(cacheRecord, request)];\r\n case 1: return [2 /*return*/, _e.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n SilentFlowClient.prototype.generateResultFromCacheRecord = function (cacheRecord, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenObj)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return SilentFlowClient;\r\n}(BaseClient));\n\nexport { SilentFlowClient };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __assign, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { LogLevel } from '../logger/Logger.js';\nimport { Constants } from '../utils/Constants.js';\nimport { version } from '../packageMetadata.js';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.js';\nimport { DefaultStorageClass } from '../cache/CacheManager.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Token renewal offset default in seconds\r\nvar DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n proxyUrl: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_NETWORK_IMPLEMENTATION = {\r\n sendGetRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n sendPostRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\r\nvar DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\nvar DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: \"\" + Constants.DEFAULT_COMMON_TENANT\r\n};\r\nvar DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration(_a) {\r\n var userAuthOptions = _a.authOptions, userSystemOptions = _a.systemOptions, userLoggerOption = _a.loggerOptions, storageImplementation = _a.storageInterface, networkImplementation = _a.networkInterface, cryptoImplementation = _a.cryptoInterface, clientCredentials = _a.clientCredentials, libraryInfo = _a.libraryInfo, telemetry = _a.telemetry, serverTelemetryManager = _a.serverTelemetryManager, persistencePlugin = _a.persistencePlugin, serializableCache = _a.serializableCache;\r\n var loggerOptions = __assign(__assign({}, DEFAULT_LOGGER_IMPLEMENTATION), userLoggerOption);\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), userSystemOptions),\r\n loggerOptions: loggerOptions,\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: __assign(__assign({}, DEFAULT_LIBRARY_INFO), libraryInfo),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), telemetry),\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return __assign({ clientCapabilities: [], azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS }, authOptions);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: function () {\r\n var notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: function () {\r\n var notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: function () {\r\n var notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n generatePkceCodes: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n getPublicKeyThumbprint: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n removeTokenBindingKey: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n clearKeystore: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n signJwt: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n hashString: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { JoseHeaderError } from '../error/JoseHeaderError.js';\nimport { JsonTypes } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar JoseHeader = /** @class */ (function () {\r\n function JoseHeader(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n JoseHeader.getShrHeaderString = function (shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw JoseHeaderError.createMissingKidError();\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw JoseHeaderError.createMissingAlgError();\r\n }\r\n var shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type JWT, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonTypes.Jwt,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg\r\n });\r\n return JSON.stringify(shrHeader);\r\n };\r\n return JoseHeader;\r\n}());\n\nexport { JoseHeader };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar KeyLocation;\r\n(function (KeyLocation) {\r\n KeyLocation[\"SW\"] = \"sw\";\r\n KeyLocation[\"UHW\"] = \"uhw\";\r\n})(KeyLocation || (KeyLocation = {}));\r\nvar PopTokenGenerator = /** @class */ (function () {\r\n function PopTokenGenerator(cryptoUtils) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateCnf = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqCnf, reqCnfString, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, this.generateKid(request)];\r\n case 1:\r\n reqCnf = _b.sent();\r\n reqCnfString = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n _a = {\r\n kid: reqCnf.kid,\r\n reqCnfString: reqCnfString\r\n };\r\n return [4 /*yield*/, this.cryptoUtils.hashString(reqCnfString)];\r\n case 2: return [2 /*return*/, (_a.reqCnfHash = _b.sent(),\r\n _a)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateKid = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var kidThumbprint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cryptoUtils.getPublicKeyThumbprint(request)];\r\n case 1:\r\n kidThumbprint = _a.sent();\r\n return [2 /*return*/, {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPopToken = function (accessToken, keyId, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.signPayload(accessToken, keyId, request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPayload = function (payload, keyId, request, claims) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, resourceUrlString, resourceUrlComponents;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n resourceRequestMethod = request.resourceRequestMethod, resourceRequestUri = request.resourceRequestUri, shrClaims = request.shrClaims, shrNonce = request.shrNonce;\r\n resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n resourceUrlComponents = resourceUrlString === null || resourceUrlString === void 0 ? void 0 : resourceUrlString.getUrlComponents();\r\n return [4 /*yield*/, this.cryptoUtils.signJwt(__assign({ at: payload, ts: TimeUtils.nowSeconds(), m: resourceRequestMethod === null || resourceRequestMethod === void 0 ? void 0 : resourceRequestMethod.toUpperCase(), u: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.HostNameAndPort, nonce: shrNonce || this.cryptoUtils.createNewGuid(), p: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.AbsolutePath, q: (resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined, client_claims: shrClaims || undefined }, claims), keyId, request.correlationId)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return PopTokenGenerator;\r\n}());\n\nexport { PopTokenGenerator };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage, suberror) {\r\n var _this = this;\r\n var errorString = errorMessage ? errorCode + \": \" + errorMessage : errorCode;\r\n _this = _super.call(this, errorString) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n _this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n _this.subError = suberror || Constants.EMPTY_STRING;\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n AuthError.prototype.setCorrelationId = function (correlationId) {\r\n this.correlationId = correlationId;\r\n };\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\n\nexport { AuthError, AuthErrorMessage };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n },\r\n keyIdMissing: {\r\n code: \"key_id_missing\",\r\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n ClientAuthError.createClientInfoEmptyError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code, \"\" + ClientAuthErrorMessage.clientInfoEmptyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n ClientAuthError.createTokenParsingError = function (caughtExtractionError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code, ClientAuthErrorMessage.tokenParsingError.desc + \" Failed with error: \" + caughtExtractionError);\r\n };\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n ClientAuthError.createTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code, ClientAuthErrorMessage.nullOrEmptyToken.desc + \" Raw Token Value: \" + invalidRawTokenString);\r\n };\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n ClientAuthError.createEndpointDiscoveryIncompleteError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, ClientAuthErrorMessage.endpointResolutionError.desc + \" Detail: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n ClientAuthError.createNetworkError = function (endpoint, errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code, ClientAuthErrorMessage.networkError.desc + \" | Fetch client threw: \" + errDetail + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n ClientAuthError.createUnableToGetOpenidConfigError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code, ClientAuthErrorMessage.unableToGetOpenidConfigError.desc + \" Attempted to retrieve endpoints from: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n ClientAuthError.createHashNotDeserializedError = function (hashParamObj) {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code, ClientAuthErrorMessage.hashNotDeserialized.desc + \" Given Object: \" + hashParamObj);\r\n };\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n ClientAuthError.createInvalidStateError = function (invalidState, errorString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" Invalid State: \" + invalidState + \", Root Err: \" + errorString);\r\n };\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n ClientAuthError.createStateMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code, ClientAuthErrorMessage.stateMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n ClientAuthError.createStateNotFoundError = function (missingState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code, ClientAuthErrorMessage.stateNotFoundError.desc + \": \" + missingState);\r\n };\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n ClientAuthError.createNonceMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createNonceNotFoundError = function (missingNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code, ClientAuthErrorMessage.nonceNotFoundError.desc + \": \" + missingNonce);\r\n };\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n ClientAuthError.createMultipleMatchingTokensInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code, ClientAuthErrorMessage.multipleMatchingTokens.desc + \".\");\r\n };\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n ClientAuthError.createMultipleMatchingAccountsInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code, ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n };\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n ClientAuthError.createMultipleMatchingAppMetadataInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code, ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n };\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n ClientAuthError.createTokenRequestCannotBeMadeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createAppendEmptyScopeToSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, ClientAuthErrorMessage.appendEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createRemoveEmptyScopeFromSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, ClientAuthErrorMessage.removeEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n ClientAuthError.createAppendScopeSetError = function (appendError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, ClientAuthErrorMessage.appendScopeSetError.desc + \" Detail Error: \" + appendError);\r\n };\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n ClientAuthError.createEmptyInputScopeSetError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, \"\" + ClientAuthErrorMessage.emptyInputScopeSetError.desc);\r\n };\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n ClientAuthError.createDeviceCodeCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, \"\" + ClientAuthErrorMessage.DeviceCodePollingCancelled.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeExpiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, \"\" + ClientAuthErrorMessage.DeviceCodeExpired.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeUnknownError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, \"\" + ClientAuthErrorMessage.DeviceCodeUnknownError.desc);\r\n };\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n ClientAuthError.createNoAccountInSilentRequestError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, \"\" + ClientAuthErrorMessage.NoAccountInSilentRequest.desc);\r\n };\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n ClientAuthError.createNullOrUndefinedCacheRecord = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n };\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n ClientAuthError.createInvalidCacheEnvironmentError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n };\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n ClientAuthError.createNoAccountFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n };\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n ClientAuthError.createCachePluginError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, \"\" + ClientAuthErrorMessage.CachePluginError.desc);\r\n };\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n ClientAuthError.createNoCryptoObjectError = function (operationName) {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, \"\" + ClientAuthErrorMessage.noCryptoObj.desc + operationName);\r\n };\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n ClientAuthError.createInvalidCacheTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, \"\" + ClientAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n ClientAuthError.createUnexpectedAccountTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, \"\" + ClientAuthErrorMessage.unexpectedAccountType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n ClientAuthError.createUnexpectedCredentialTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, \"\" + ClientAuthErrorMessage.unexpectedCredentialType.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidAssertionError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, \"\" + ClientAuthErrorMessage.invalidAssertion.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidCredentialError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, \"\" + ClientAuthErrorMessage.invalidClientCredential.desc);\r\n };\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n ClientAuthError.createRefreshRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n };\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n ClientAuthError.createUserTimeoutReachedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n };\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n ClientAuthError.createTokenClaimsRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n };\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n ClientAuthError.createNoAuthCodeInServerResponseError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n };\r\n ClientAuthError.createBindingKeyNotRemovedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n };\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n ClientAuthError.createLogoutNotSupportedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n };\r\n /**\r\n * Create an error when kid attribute is missing from a PoP token's cache record\r\n */\r\n ClientAuthError.createKeyIdMissingError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\n\nexport { ClientAuthError, ClientAuthErrorMessage };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { ClientAuthError } from './ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code, ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code, ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createInsecureAuthorityUriError = function (urlString) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code, ClientConfigurationErrorMessage.authorityUriInsecure.desc + \" Given URI: \" + urlString);\r\n };\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlParseError = function (urlParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code, ClientConfigurationErrorMessage.urlParseError.desc + \" Given Error: \" + urlParseError);\r\n };\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code, ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n };\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n ClientConfigurationError.createEmptyScopesArrayError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code, \"\" + ClientConfigurationErrorMessage.emptyScopesError.desc);\r\n };\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createClientIdSingleScopeError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code, ClientConfigurationErrorMessage.clientIdSingleScopeError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n ClientConfigurationError.createInvalidClaimsRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code, ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyLogoutRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.logoutRequestEmptyError.code, ClientConfigurationErrorMessage.logoutRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyTokenRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.tokenRequestEmptyError.code, ClientConfigurationErrorMessage.tokenRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeMethodError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code, ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc);\r\n };\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeParamsError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeParams.code, ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidCloudDiscoveryMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code, ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code, ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n };\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n ClientConfigurationError.createUntrustedAuthorityError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n };\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n ClientConfigurationError.createInvalidAzureCloudInstanceError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code, ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshJwkError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code, ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshKidError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code, ClientConfigurationErrorMessage.missingSshKid.desc);\r\n };\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n ClientConfigurationError.createMissingNonceAuthenticationHeadersError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code, ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n };\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n ClientConfigurationError.createInvalidAuthenticationHeaderError = function (invalidHeaderName, details) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code, ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc + \". Invalid header: \" + invalidHeaderName + \". Details: \" + details);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nvar InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\nvar InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nvar InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorCode, errorString, subError) {\r\n var isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n var isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n var isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some(function (irErrorCode) {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n };\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n InteractionRequiredAuthError.createNoTokensFoundError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n };\r\n return InteractionRequiredAuthError;\r\n}(AuthError));\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar JoseHeaderErrorMessage = {\r\n missingKidError: {\r\n code: \"missing_kid_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\r\n },\r\n missingAlgError: {\r\n code: \"missing_alg_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar JoseHeaderError = /** @class */ (function (_super) {\r\n __extends(JoseHeaderError, _super);\r\n function JoseHeaderError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(_this, JoseHeaderError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when keyId isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingKidError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when algorithm isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingAlgError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\r\n };\r\n return JoseHeaderError;\r\n}(AuthError));\n\nexport { JoseHeaderError, JoseHeaderErrorMessage };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n return ServerError;\r\n}(AuthError));\n\nexport { ServerError };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nvar Logger = /** @class */ (function () {\r\n function Logger(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n var defaultLoggerCallback = function () {\r\n return;\r\n };\r\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof (loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n Logger.prototype.clone = function (packageName, packageVersion, correlationId) {\r\n return new Logger({ loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId }, packageName, packageVersion);\r\n };\r\n /**\r\n * Log message with required options.\r\n */\r\n Logger.prototype.logMessage = function (logMessage, options) {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n var logHeader;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + options.correlationId + \"]\";\r\n }\r\n else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + this.correlationId + \"]\";\r\n }\r\n else {\r\n logHeader = \"[\" + timestamp + \"]\";\r\n }\r\n var log = logHeader + \" : \" + this.packageName + \"@\" + this.packageVersion + \" : \" + LogLevel[options.logLevel] + \" - \" + logMessage;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n };\r\n /**\r\n * Execute callback with message.\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * Logs error messages.\r\n */\r\n Logger.prototype.error = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n Logger.prototype.errorPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages.\r\n */\r\n Logger.prototype.warning = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n Logger.prototype.warningPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages.\r\n */\r\n Logger.prototype.info = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n Logger.prototype.infoPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages.\r\n */\r\n Logger.prototype.verbose = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n Logger.prototype.verbosePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages.\r\n */\r\n Logger.prototype.trace = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n Logger.prototype.tracePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled || false;\r\n };\r\n return Logger;\r\n}());\n\nexport { LogLevel, Logger };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubbedNetworkModule = {\r\n sendGetRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\n\nexport { StubbedNetworkModule };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { ThrottlingUtils } from './ThrottlingUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NetworkManager = /** @class */ (function () {\r\n function NetworkManager(networkClient, cacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n NetworkManager.prototype.sendPostRequest = function (thumbprint, tokenEndpoint, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkClient.sendPostRequestAsync(tokenEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n throw e_1;\r\n }\r\n else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e_1);\r\n }\r\n case 4:\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return NetworkManager;\r\n}());\n\nexport { NetworkManager };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ThrottlingConstants, CacheSchemaType, Constants, HeaderNames } from '../utils/Constants.js';\nimport { ServerError } from '../error/ServerError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingUtils = /** @class */ (function () {\r\n function ThrottlingUtils() {\r\n }\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.generateThrottlingStorageKey = function (thumbprint) {\r\n return ThrottlingConstants.THROTTLING_PREFIX + \".\" + JSON.stringify(thumbprint);\r\n };\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.preProcess = function (cacheManager, thumbprint) {\r\n var _a;\r\n var key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n var value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(((_a = value.errorCodes) === null || _a === void 0 ? void 0 : _a.join(\" \")) || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n };\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n ThrottlingUtils.postProcess = function (cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n var thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n };\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseStatus = function (response) {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n };\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseForRetryAfter = function (response) {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n ThrottlingUtils.calculateThrottleTime = function (throttleTime) {\r\n var time = throttleTime <= 0 ? 0 : throttleTime;\r\n var currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n };\r\n ThrottlingUtils.removeThrottle = function (cacheManager, clientId, request, homeAccountIdentifier) {\r\n var thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n var key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n };\r\n return ThrottlingUtils;\r\n}());\n\nexport { ThrottlingUtils };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-common\";\r\nvar version = \"6.4.0\";\n\nexport { name, version };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { AADServerParamKeys, Constants, ResponseMode, OIDC_DEFAULT_SCOPES, SSOTypes, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.js';\nimport { ScopeSet } from './ScopeSet.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from './RequestValidator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RequestParameterBuilder = /** @class */ (function () {\r\n function RequestParameterBuilder() {\r\n this.parameters = new Map();\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeCode = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_type = token id_token\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeForTokenAndIdToken = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.TOKEN_RESPONSE_TYPE + \" \" + Constants.ID_TOKEN_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n RequestParameterBuilder.prototype.addResponseMode = function (responseMode) {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY));\r\n };\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n RequestParameterBuilder.prototype.addNativeBroker = function () {\r\n this.parameters.set(AADServerParamKeys.NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n };\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n RequestParameterBuilder.prototype.addScopes = function (scopes, addOidcScopes) {\r\n if (addOidcScopes === void 0) { addOidcScopes = true; }\r\n var requestScopes = addOidcScopes ? __spreadArrays(scopes || [], OIDC_DEFAULT_SCOPES) : scopes || [];\r\n var scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n };\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n RequestParameterBuilder.prototype.addClientId = function (clientId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n };\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addPostLogoutRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n RequestParameterBuilder.prototype.addIdTokenHint = function (idTokenHint) {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n };\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n RequestParameterBuilder.prototype.addDomainHint = function (domainHint) {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n };\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addLoginHint = function (loginHint) {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsUpn = function (loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"UPN:\" + loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsOid = function (clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid));\r\n };\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n RequestParameterBuilder.prototype.addSid = function (sid) {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n };\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n RequestParameterBuilder.prototype.addClaims = function (claims, clientCapabilities) {\r\n var mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n };\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n RequestParameterBuilder.prototype.addCorrelationId = function (correlationId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n };\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n RequestParameterBuilder.prototype.addLibraryInfo = function (libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n };\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n RequestParameterBuilder.prototype.addApplicationTelemetry = function (appTelemetry) {\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n };\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n RequestParameterBuilder.prototype.addPrompt = function (prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(\"\" + AADServerParamKeys.PROMPT, encodeURIComponent(prompt));\r\n };\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n RequestParameterBuilder.prototype.addState = function (state) {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n };\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n RequestParameterBuilder.prototype.addNonce = function (nonce) {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n };\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestParameterBuilder.prototype.addCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addAuthorizationCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addDeviceCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n RequestParameterBuilder.prototype.addRefreshToken = function (refreshToken) {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n };\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n RequestParameterBuilder.prototype.addCodeVerifier = function (codeVerifier) {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n };\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n RequestParameterBuilder.prototype.addClientSecret = function (clientSecret) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n };\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertion = function (clientAssertion) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n };\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertionType = function (clientAssertionType) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n };\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addOboAssertion = function (oboAssertion) {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addRequestTokenUse = function (tokenUse) {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addGrantType = function (grantType) {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n };\r\n /**\r\n * add client info\r\n *\r\n */\r\n RequestParameterBuilder.prototype.addClientInfo = function () {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n };\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n RequestParameterBuilder.prototype.addExtraQueryParameters = function (eQparams) {\r\n var _this = this;\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach(function (key) {\r\n _this.parameters.set(key, eQparams[key]);\r\n });\r\n };\r\n RequestParameterBuilder.prototype.addClientCapabilitiesToClaims = function (claims, clientCapabilities) {\r\n var mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n };\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n RequestParameterBuilder.prototype.addUsername = function (username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n };\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n RequestParameterBuilder.prototype.addPassword = function (password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n };\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n RequestParameterBuilder.prototype.addPopToken = function (cnfString) {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n };\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n RequestParameterBuilder.prototype.addSshJwk = function (sshJwkString) {\r\n if (!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n };\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n RequestParameterBuilder.prototype.addServerTelemetry = function (serverTelemetryManager) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n };\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n RequestParameterBuilder.prototype.addThrottling = function () {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n };\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n RequestParameterBuilder.prototype.addLogoutHint = function (logoutHint) {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n };\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n RequestParameterBuilder.prototype.createQueryString = function () {\r\n var queryParameterArray = new Array();\r\n this.parameters.forEach(function (value, key) {\r\n queryParameterArray.push(key + \"=\" + value);\r\n });\r\n return queryParameterArray.join(\"&\");\r\n };\r\n return RequestParameterBuilder;\r\n}());\n\nexport { RequestParameterBuilder };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nvar RequestValidator = /** @class */ (function () {\r\n function RequestValidator() {\r\n }\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n RequestValidator.validateRedirectUri = function (redirectUri) {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n };\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n RequestValidator.validatePrompt = function (prompt) {\r\n var promptValues = [];\r\n for (var value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n };\r\n RequestValidator.validateClaims = function (claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeMethod = function (codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n };\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestValidator.sanitizeEQParams = function (eQParams, queryParams) {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach(function (value, key) {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n return eQParams;\r\n };\r\n return RequestValidator;\r\n}());\n\nexport { RequestValidator };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { OIDC_SCOPES, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet(inputScopes) {\r\n var _this = this;\r\n // Filter empty string and null/undefined array items\r\n var scopeArr = inputScopes ? StringUtils.trimArrayEntries(__spreadArrays(inputScopes)) : [];\r\n var filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(function (scope) { return _this.scopes.add(scope); });\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n ScopeSet.fromString = function (inputScopeString) {\r\n var scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n var inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n };\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n ScopeSet.prototype.validateInputScopes = function (inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n };\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.containsScope = function (scope) {\r\n var lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n var lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n };\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n ScopeSet.prototype.containsScopeSet = function (scopeSet) {\r\n var _this = this;\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(function (scope) { return _this.containsScope(scope); }));\r\n };\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n ScopeSet.prototype.containsOnlyOIDCScopes = function () {\r\n var _this = this;\r\n var defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n if (_this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n };\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n ScopeSet.prototype.appendScope = function (newScope) {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n };\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n ScopeSet.prototype.appendScopes = function (newScopes) {\r\n var _this = this;\r\n try {\r\n newScopes.forEach(function (newScope) { return _this.appendScope(newScope); });\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n };\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.removeScope = function (scope) {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n };\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n ScopeSet.prototype.removeOIDCScopes = function () {\r\n var _this = this;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n _this.scopes.delete(defaultScope);\r\n });\r\n };\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.unionScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n var unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n this.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n return unionScopes;\r\n };\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.intersectingScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n var unionScopes = this.unionScopeSets(otherScopes);\r\n var sizeOtherScopes = otherScopes.getScopeCount();\r\n var sizeThisScopes = this.getScopeCount();\r\n var sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n };\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n ScopeSet.prototype.getScopeCount = function () {\r\n return this.scopes.size;\r\n };\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n ScopeSet.prototype.asArray = function () {\r\n var array = [];\r\n this.scopes.forEach(function (val) { return array.push(val); });\r\n return array;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n ScopeSet.prototype.printScopes = function () {\r\n if (this.scopes) {\r\n var scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n ScopeSet.prototype.printScopesLowerCase = function () {\r\n return this.printScopes().toLowerCase();\r\n };\r\n return ScopeSet;\r\n}());\n\nexport { ScopeSet };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientInfo } from '../account/ClientInfo.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from '../cache/entities/AccountEntity.js';\nimport { AuthorityType } from '../authority/AuthorityType.js';\nimport { IdTokenEntity } from '../cache/entities/IdTokenEntity.js';\nimport { AccessTokenEntity } from '../cache/entities/AccessTokenEntity.js';\nimport { RefreshTokenEntity } from '../cache/entities/RefreshTokenEntity.js';\nimport { InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.js';\nimport { CacheRecord } from '../cache/entities/CacheRecord.js';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.js';\nimport { Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { AppMetadataEntity } from '../cache/entities/AppMetadataEntity.js';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nvar ResponseHandler = /** @class */ (function () {\r\n function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n };\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n var errString = serverResponse.error_codes + \" - [\" + serverResponse.timestamp + \"]: \" + serverResponse.error_description + \" - Correlation ID: \" + serverResponse.correlation_id + \" - Trace ID: \" + serverResponse.trace_id;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n };\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, oboAssertion, handlingRefreshTokenResponse) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, requestStateObj, cacheRecord, cacheContext, key, account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, oboAssertion, authCodePayload);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 8]);\r\n if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\r\n */\r\n if (handlingRefreshTokenResponse && cacheRecord.account) {\r\n key = cacheRecord.account.generateAccountKey();\r\n account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj)];\r\n }\r\n }\r\n return [4 /*yield*/, this.cacheStorage.saveCacheRecord(cacheRecord)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 5:\r\n if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 7];\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, request, idTokenObj, oboAssertion, authCodePayload) {\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n // IdToken: non AAD scenarios can have empty realm\r\n var cachedIdToken;\r\n var cachedAccount;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING, oboAssertion);\r\n cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, oboAssertion, authCodePayload);\r\n }\r\n // AccessToken\r\n var cachedAccessToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n // If scopes not returned in server response, use request scopes\r\n var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n var expiresIn = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n var refreshIn = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n var refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, oboAssertion, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n var cachedRefreshToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, oboAssertion);\r\n }\r\n // appMetadata\r\n var cachedAppMetadata = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n };\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, oboAssertion, authCodePayload) {\r\n var authorityType = authority.authorityType;\r\n var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\r\n };\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, code) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, _d, secret, keyId, uid, tid;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n accessToken = Constants.EMPTY_STRING;\r\n responseScopes = [];\r\n expiresOn = null;\r\n familyId = Constants.EMPTY_STRING;\r\n if (!cacheRecord.accessToken) return [3 /*break*/, 4];\r\n if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n _d = cacheRecord.accessToken, secret = _d.secret, keyId = _d.keyId;\r\n if (!keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(secret, keyId, request)];\r\n case 1:\r\n accessToken = _e.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n accessToken = cacheRecord.accessToken.secret;\r\n _e.label = 3;\r\n case 3:\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n _e.label = 4;\r\n case 4:\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return [2 /*return*/, {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: code,\r\n fromNativeBroker: false\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n return ResponseHandler;\r\n}());\n\nexport { ResponseHandler };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __assign } from '../../_virtual/_tslib.js';\nimport { PerformanceEventStatus } from './PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PerformanceClient = /** @class */ (function () {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n function PerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.measurementsById = new Map();\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n PerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n var _a, _b;\r\n // Generate a placeholder correlation if the request does not provide one\r\n var eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(\"PerformanceClient: No correlation id provided for \" + measureName + \", generating\", eventCorrelationId);\r\n }\r\n this.logger.trace(\"PerformanceClient: Performance measurement started for \" + measureName, eventCorrelationId);\r\n var performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n var inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n appName: (_a = this.applicationTelemetry) === null || _a === void 0 ? void 0 : _a.appName,\r\n appVersion: (_b = this.applicationTelemetry) === null || _b === void 0 ? void 0 : _b.appVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n this.cacheMeasurement(inProgressEvent, performanceMeasurement);\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: function (event) {\r\n var completedEvent = _this.endMeasurement(__assign(__assign({}, inProgressEvent), event));\r\n if (completedEvent) {\r\n // Cache event so that submeasurements can be added downstream\r\n _this.cacheEventByCorrelationId(completedEvent);\r\n }\r\n return completedEvent;\r\n },\r\n flushMeasurement: function () {\r\n return _this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\r\n },\r\n discardMeasurement: function () {\r\n return _this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n measurement: performanceMeasurement,\r\n event: inProgressEvent\r\n };\r\n };\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n PerformanceClient.prototype.endMeasurement = function (event) {\r\n var performanceMeasurement = this.measurementsById.get(event.eventId);\r\n if (performanceMeasurement) {\r\n // Immediately delete so that the same event isnt ended twice\r\n this.measurementsById.delete(event.eventId);\r\n performanceMeasurement.endMeasurement();\r\n var durationMs = performanceMeasurement.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (durationMs !== null) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement ended for \" + event.name + \": \" + durationMs + \" ms\", event.correlationId);\r\n var completedEvent = __assign(__assign({ \r\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\r\n durationMs: Math.round(durationMs) }, event), { status: PerformanceEventStatus.Completed });\r\n return completedEvent;\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Measurement not found for \" + event.eventId, event.correlationId);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n PerformanceClient.prototype.cacheEventByCorrelationId = function (event) {\r\n var existingEvents = this.eventsByCorrelationId.get(event.correlationId);\r\n if (existingEvents) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" added/updated\", event.correlationId);\r\n existingEvents.set(event.eventId, event);\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" started\", event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\r\n }\r\n };\r\n /**\r\n * Cache measurements by their id.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n */\r\n PerformanceClient.prototype.cacheMeasurement = function (event, measurement) {\r\n this.measurementsById.set(event.eventId, measurement);\r\n };\r\n /**\r\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.flushMeasurements = function (measureName, correlationId) {\r\n var _this = this;\r\n this.logger.trace(\"PerformanceClient: Performance measurements flushed for \" + measureName, correlationId);\r\n var eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\r\n if (eventsForCorrelationId) {\r\n this.discardMeasurements(correlationId);\r\n /*\r\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\r\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\r\n * IE only supports Map.forEach.\r\n */\r\n var completedEvents_1 = [];\r\n eventsForCorrelationId.forEach(function (event) {\r\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\r\n _this.logger.trace(\"PerformanceClient: Incomplete submeasurement \" + event.name + \" found for \" + measureName, correlationId);\r\n var completedEvent = _this.endMeasurement(event);\r\n if (completedEvent) {\r\n completedEvents_1.push(completedEvent);\r\n }\r\n }\r\n completedEvents_1.push(event);\r\n });\r\n // Sort events by start time (earliest first)\r\n var sortedCompletedEvents = completedEvents_1.sort(function (eventA, eventB) { return eventA.startTimeMs - eventB.startTimeMs; });\r\n // Take completed top level event and add completed submeasurements durations as properties\r\n var topLevelEvents = sortedCompletedEvents.filter(function (event) { return event.name === measureName && event.status === PerformanceEventStatus.Completed; });\r\n if (topLevelEvents.length > 0) {\r\n /*\r\n * Only take the first top-level event if there are multiple events with the same correlation id.\r\n * This greatly simplifies logic for submeasurements.\r\n */\r\n if (topLevelEvents.length > 1) {\r\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\r\n }\r\n var topLevelEvent = topLevelEvents[0];\r\n this.logger.verbose(\"PerformanceClient: Measurement found for \" + measureName, correlationId);\r\n // Build event object with top level and sub measurements\r\n var eventToEmit = sortedCompletedEvents.reduce(function (previous, current) {\r\n if (current.name !== measureName) {\r\n _this.logger.trace(\"PerformanceClient: Complete submeasurement found for \" + current.name, correlationId);\r\n // TODO: Emit additional properties for each subMeasurement\r\n var subMeasurementName = current.name + \"DurationMs\";\r\n /*\r\n * Some code paths, such as resolving an authority, can occur multiple times.\r\n * Only take the first measurement, since the second could be read from the cache,\r\n * or due to the same correlation id being used for two distinct requests.\r\n */\r\n if (!previous[subMeasurementName]) {\r\n previous[subMeasurementName] = current.durationMs;\r\n }\r\n else {\r\n _this.logger.verbose(\"PerformanceClient: Submeasurement for \" + measureName + \" already exists for \" + current.name + \", ignoring\", correlationId);\r\n }\r\n }\r\n return previous;\r\n }, topLevelEvent);\r\n this.emitEvents([eventToEmit], eventToEmit.correlationId);\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No completed top-level measurements found for \" + measureName, correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\r\n }\r\n };\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.discardMeasurements = function (correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n PerformanceClient.prototype.addPerformanceCallback = function (callback) {\r\n var callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(\"PerformanceClient: Performance callback registered with id: \" + callbackId);\r\n return callbackId;\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n PerformanceClient.prototype.removePerformanceCallback = function (callbackId) {\r\n var result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" removed.\");\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" not removed.\");\r\n }\r\n return result;\r\n };\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n PerformanceClient.prototype.emitEvents = function (events, correlationId) {\r\n var _this = this;\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach(function (callback, callbackId) {\r\n _this.logger.trace(\"PerformanceClient: Emitting event to callback \" + callbackId, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n };\r\n return PerformanceClient;\r\n}());\n\nexport { PerformanceClient };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEvents;\r\n(function (PerformanceEvents) {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByCode\"] = \"acquireTokenByCode\";\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshToken\"] = \"acquireTokenByRefreshToken\";\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n PerformanceEvents[\"AcquireTokenSilent\"] = \"acquireTokenSilent\";\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n PerformanceEvents[\"AcquireTokenSilentAsync\"] = \"acquireTokenSilentAsync\";\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n PerformanceEvents[\"AcquireTokenPopup\"] = \"acquireTokenPopup\";\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n PerformanceEvents[\"CryptoOptsGetPublicKeyThumbprint\"] = \"cryptoOptsGetPublicKeyThumbprint\";\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n PerformanceEvents[\"CryptoOptsSignJwt\"] = \"cryptoOptsSignJwt\";\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n PerformanceEvents[\"SilentCacheClientAcquireToken\"] = \"silentCacheClientAcquireToken\";\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n PerformanceEvents[\"SilentIframeClientAcquireToken\"] = \"silentIframeClientAcquireToken\";\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n PerformanceEvents[\"SilentRefreshClientAcquireToken\"] = \"silentRefreshClientAcquireToken\";\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n PerformanceEvents[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n PerformanceEvents[\"StandardInteractionClientGetDiscoveredAuthority\"] = \"standardInteractionClientGetDiscoveredAuthority\";\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n PerformanceEvents[\"FetchAccountIdWithNativeBroker\"] = \"fetchAccountIdWithNativeBroker\";\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n PerformanceEvents[\"NativeInteractionClientAcquireToken\"] = \"nativeInteractionClientAcquireToken\";\r\n})(PerformanceEvents || (PerformanceEvents = {}));\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEventStatus;\r\n(function (PerformanceEventStatus) {\r\n PerformanceEventStatus[PerformanceEventStatus[\"NotStarted\"] = 0] = \"NotStarted\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"InProgress\"] = 1] = \"InProgress\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"Completed\"] = 2] = \"Completed\";\r\n})(PerformanceEventStatus || (PerformanceEventStatus = {}));\n\nexport { PerformanceEventStatus, PerformanceEvents };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { PerformanceClient } from './PerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubPerformanceMeasurement = /** @class */ (function () {\r\n function StubPerformanceMeasurement() {\r\n }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.startMeasurement = function () { };\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.endMeasurement = function () { };\r\n StubPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n return null;\r\n };\r\n return StubPerformanceMeasurement;\r\n}());\r\nvar StubPerformanceClient = /** @class */ (function (_super) {\r\n __extends(StubPerformanceClient, _super);\r\n function StubPerformanceClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StubPerformanceClient.prototype.generateId = function () {\r\n return \"callback-id\";\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasuremeant = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n return StubPerformanceClient;\r\n}(PerformanceClient));\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS, CacheOutcome, Constants, Separators } from '../../utils/Constants.js';\nimport { ServerTelemetryEntity } from '../../cache/entities/ServerTelemetryEntity.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryManager = /** @class */ (function () {\r\n function ServerTelemetryManager(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n ServerTelemetryManager.prototype.generateCurrentRequestHeaderValue = function () {\r\n var request = \"\" + this.apiId + SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR + this.cacheOutcome;\r\n var platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n var requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n ServerTelemetryManager.prototype.generateLastRequestHeaderValue = function () {\r\n var lastRequests = this.getLastRequests();\r\n var maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n var overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n var platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n ServerTelemetryManager.prototype.cacheFailedRequest = function (error) {\r\n var lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n };\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n ServerTelemetryManager.prototype.incrementCacheHits = function () {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n };\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n ServerTelemetryManager.prototype.getLastRequests = function () {\r\n var initialValue = new ServerTelemetryEntity();\r\n var lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n };\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n ServerTelemetryManager.prototype.clearTelemetryCache = function () {\r\n var lastRequests = this.getLastRequests();\r\n var numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n var serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n };\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n ServerTelemetryManager.maxErrorsToSend = function (serverTelemetryEntity) {\r\n var i;\r\n var maxErrors = 0;\r\n var dataSize = 0;\r\n var errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n var apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING;\r\n var correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING;\r\n var errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n };\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n ServerTelemetryManager.prototype.getRegionDiscoveryFields = function () {\r\n var regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n };\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n ServerTelemetryManager.prototype.updateRegionDiscoveryMetadata = function (regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n };\r\n /**\r\n * Set cache outcome\r\n */\r\n ServerTelemetryManager.prototype.setCacheOutcome = function (cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n };\r\n return ServerTelemetryManager;\r\n}());\n\nexport { ServerTelemetryManager };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nvar UrlString = /** @class */ (function () {\r\n function UrlString(url) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n Object.defineProperty(UrlString.prototype, \"urlString\", {\r\n get: function () {\r\n return this._urlString;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n UrlString.canonicalizeUri = function (url) {\r\n if (url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n };\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n UrlString.prototype.validateAsUri = function () {\r\n // Attempts to parse url for uri components\r\n var components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n };\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n UrlString.appendQueryString = function (url, queryString) {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0 ? url + \"?\" + queryString : url + \"&\" + queryString;\r\n };\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n UrlString.removeHashFromUrl = function (url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlString.prototype.replaceTenantPath = function (tenantId) {\r\n var urlObject = this.getUrlComponents();\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n };\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlString.prototype.getHash = function () {\r\n return UrlString.parseHash(this.urlString);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlString.prototype.getUrlComponents = function () {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n var match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Url component object\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n };\r\n UrlString.getDomainFromUrl = function (url) {\r\n var regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n var match = url.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + url);\r\n }\r\n return match[2];\r\n };\r\n UrlString.getAbsoluteUrl = function (relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n var url = new UrlString(baseUrl);\r\n var baseComponents = url.getUrlComponents();\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n return relativeUrl;\r\n };\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n UrlString.parseHash = function (hashString) {\r\n var hashIndex1 = hashString.indexOf(\"#\");\r\n var hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n UrlString.constructAuthorityUriFromObject = function (urlObject) {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n };\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n UrlString.getDeserializedHash = function (hash) {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n var parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n var deserializedHash = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n };\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n UrlString.hashContainsKnownProperties = function (hash) {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n var parameters = UrlString.getDeserializedHash(hash);\r\n return !!(parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state);\r\n };\r\n return UrlString;\r\n}());\n\nexport { UrlString };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\"\r\n};\r\nvar OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\nvar OIDC_SCOPES = __spreadArrays(OIDC_DEFAULT_SCOPES, [\r\n Constants.EMAIL_SCOPE\r\n]);\r\n/**\r\n * Request header names\r\n */\r\nvar HeaderNames;\r\n(function (HeaderNames) {\r\n HeaderNames[\"CONTENT_TYPE\"] = \"Content-Type\";\r\n HeaderNames[\"RETRY_AFTER\"] = \"Retry-After\";\r\n HeaderNames[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n HeaderNames[\"WWWAuthenticate\"] = \"WWW-Authenticate\";\r\n HeaderNames[\"AuthenticationInfo\"] = \"Authentication-Info\";\r\n})(HeaderNames || (HeaderNames = {}));\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nvar PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"ID_TOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n PersistentCacheKeys[\"ADAL_ID_TOKEN\"] = \"adal.idtoken\";\r\n PersistentCacheKeys[\"ERROR\"] = \"error\";\r\n PersistentCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT\"] = \"active-account\";\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nvar AADAuthorityConstants;\r\n(function (AADAuthorityConstants) {\r\n AADAuthorityConstants[\"COMMON\"] = \"common\";\r\n AADAuthorityConstants[\"ORGANIZATIONS\"] = \"organizations\";\r\n AADAuthorityConstants[\"CONSUMERS\"] = \"consumers\";\r\n})(AADAuthorityConstants || (AADAuthorityConstants = {}));\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nvar AADServerParamKeys;\r\n(function (AADServerParamKeys) {\r\n AADServerParamKeys[\"CLIENT_ID\"] = \"client_id\";\r\n AADServerParamKeys[\"REDIRECT_URI\"] = \"redirect_uri\";\r\n AADServerParamKeys[\"RESPONSE_TYPE\"] = \"response_type\";\r\n AADServerParamKeys[\"RESPONSE_MODE\"] = \"response_mode\";\r\n AADServerParamKeys[\"GRANT_TYPE\"] = \"grant_type\";\r\n AADServerParamKeys[\"CLAIMS\"] = \"claims\";\r\n AADServerParamKeys[\"SCOPE\"] = \"scope\";\r\n AADServerParamKeys[\"ERROR\"] = \"error\";\r\n AADServerParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n AADServerParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n AADServerParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n AADServerParamKeys[\"REFRESH_TOKEN\"] = \"refresh_token\";\r\n AADServerParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n AADServerParamKeys[\"STATE\"] = \"state\";\r\n AADServerParamKeys[\"NONCE\"] = \"nonce\";\r\n AADServerParamKeys[\"PROMPT\"] = \"prompt\";\r\n AADServerParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n AADServerParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n AADServerParamKeys[\"CODE\"] = \"code\";\r\n AADServerParamKeys[\"CODE_CHALLENGE\"] = \"code_challenge\";\r\n AADServerParamKeys[\"CODE_CHALLENGE_METHOD\"] = \"code_challenge_method\";\r\n AADServerParamKeys[\"CODE_VERIFIER\"] = \"code_verifier\";\r\n AADServerParamKeys[\"CLIENT_REQUEST_ID\"] = \"client-request-id\";\r\n AADServerParamKeys[\"X_CLIENT_SKU\"] = \"x-client-SKU\";\r\n AADServerParamKeys[\"X_CLIENT_VER\"] = \"x-client-VER\";\r\n AADServerParamKeys[\"X_CLIENT_OS\"] = \"x-client-OS\";\r\n AADServerParamKeys[\"X_CLIENT_CPU\"] = \"x-client-CPU\";\r\n AADServerParamKeys[\"X_CLIENT_CURR_TELEM\"] = \"x-client-current-telemetry\";\r\n AADServerParamKeys[\"X_CLIENT_LAST_TELEM\"] = \"x-client-last-telemetry\";\r\n AADServerParamKeys[\"X_MS_LIB_CAPABILITY\"] = \"x-ms-lib-capability\";\r\n AADServerParamKeys[\"X_APP_NAME\"] = \"x-app-name\";\r\n AADServerParamKeys[\"X_APP_VER\"] = \"x-app-ver\";\r\n AADServerParamKeys[\"POST_LOGOUT_URI\"] = \"post_logout_redirect_uri\";\r\n AADServerParamKeys[\"ID_TOKEN_HINT\"] = \"id_token_hint\";\r\n AADServerParamKeys[\"DEVICE_CODE\"] = \"device_code\";\r\n AADServerParamKeys[\"CLIENT_SECRET\"] = \"client_secret\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION\"] = \"client_assertion\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION_TYPE\"] = \"client_assertion_type\";\r\n AADServerParamKeys[\"TOKEN_TYPE\"] = \"token_type\";\r\n AADServerParamKeys[\"REQ_CNF\"] = \"req_cnf\";\r\n AADServerParamKeys[\"OBO_ASSERTION\"] = \"assertion\";\r\n AADServerParamKeys[\"REQUESTED_TOKEN_USE\"] = \"requested_token_use\";\r\n AADServerParamKeys[\"ON_BEHALF_OF\"] = \"on_behalf_of\";\r\n AADServerParamKeys[\"FOCI\"] = \"foci\";\r\n AADServerParamKeys[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n AADServerParamKeys[\"RETURN_SPA_CODE\"] = \"return_spa_code\";\r\n AADServerParamKeys[\"NATIVE_BROKER\"] = \"nativebroker\";\r\n AADServerParamKeys[\"LOGOUT_HINT\"] = \"logout_hint\";\r\n})(AADServerParamKeys || (AADServerParamKeys = {}));\r\n/**\r\n * Claims request keys\r\n */\r\nvar ClaimsRequestKeys;\r\n(function (ClaimsRequestKeys) {\r\n ClaimsRequestKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ClaimsRequestKeys[\"XMS_CC\"] = \"xms_cc\";\r\n})(ClaimsRequestKeys || (ClaimsRequestKeys = {}));\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nvar PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\"\r\n};\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nvar SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"DOMAIN_HINT\"] = \"domain_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nvar CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nvar ResponseMode;\r\n(function (ResponseMode) {\r\n ResponseMode[\"QUERY\"] = \"query\";\r\n ResponseMode[\"FRAGMENT\"] = \"fragment\";\r\n ResponseMode[\"FORM_POST\"] = \"form_post\";\r\n})(ResponseMode || (ResponseMode = {}));\r\n/**\r\n * allowed grant_type\r\n */\r\nvar GrantType;\r\n(function (GrantType) {\r\n GrantType[\"IMPLICIT_GRANT\"] = \"implicit\";\r\n GrantType[\"AUTHORIZATION_CODE_GRANT\"] = \"authorization_code\";\r\n GrantType[\"CLIENT_CREDENTIALS_GRANT\"] = \"client_credentials\";\r\n GrantType[\"RESOURCE_OWNER_PASSWORD_GRANT\"] = \"password\";\r\n GrantType[\"REFRESH_TOKEN_GRANT\"] = \"refresh_token\";\r\n GrantType[\"DEVICE_CODE_GRANT\"] = \"device_code\";\r\n GrantType[\"JWT_BEARER\"] = \"urn:ietf:params:oauth:grant-type:jwt-bearer\";\r\n})(GrantType || (GrantType = {}));\r\n/**\r\n * Account types in Cache\r\n */\r\nvar CacheAccountType;\r\n(function (CacheAccountType) {\r\n CacheAccountType[\"MSSTS_ACCOUNT_TYPE\"] = \"MSSTS\";\r\n CacheAccountType[\"ADFS_ACCOUNT_TYPE\"] = \"ADFS\";\r\n CacheAccountType[\"MSAV1_ACCOUNT_TYPE\"] = \"MSA\";\r\n CacheAccountType[\"GENERIC_ACCOUNT_TYPE\"] = \"Generic\"; // NTLM, Kerberos, FBA, Basic etc\r\n})(CacheAccountType || (CacheAccountType = {}));\r\n/**\r\n * Separators used in cache\r\n */\r\nvar Separators;\r\n(function (Separators) {\r\n Separators[\"CACHE_KEY_SEPARATOR\"] = \"-\";\r\n Separators[\"CLIENT_INFO_SEPARATOR\"] = \".\";\r\n})(Separators || (Separators = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[\"ID_TOKEN\"] = \"IdToken\";\r\n CredentialType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CredentialType[\"ACCESS_TOKEN_WITH_AUTH_SCHEME\"] = \"AccessToken_With_AuthScheme\";\r\n CredentialType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n})(CredentialType || (CredentialType = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CacheSchemaType;\r\n(function (CacheSchemaType) {\r\n CacheSchemaType[\"ACCOUNT\"] = \"Account\";\r\n CacheSchemaType[\"CREDENTIAL\"] = \"Credential\";\r\n CacheSchemaType[\"ID_TOKEN\"] = \"IdToken\";\r\n CacheSchemaType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CacheSchemaType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n CacheSchemaType[\"APP_METADATA\"] = \"AppMetadata\";\r\n CacheSchemaType[\"TEMPORARY\"] = \"TempCache\";\r\n CacheSchemaType[\"TELEMETRY\"] = \"Telemetry\";\r\n CacheSchemaType[\"UNDEFINED\"] = \"Undefined\";\r\n CacheSchemaType[\"THROTTLING\"] = \"Throttling\";\r\n})(CacheSchemaType || (CacheSchemaType = {}));\r\n/**\r\n * Combine all cache types\r\n */\r\nvar CacheType;\r\n(function (CacheType) {\r\n CacheType[CacheType[\"ADFS\"] = 1001] = \"ADFS\";\r\n CacheType[CacheType[\"MSA\"] = 1002] = \"MSA\";\r\n CacheType[CacheType[\"MSSTS\"] = 1003] = \"MSSTS\";\r\n CacheType[CacheType[\"GENERIC\"] = 1004] = \"GENERIC\";\r\n CacheType[CacheType[\"ACCESS_TOKEN\"] = 2001] = \"ACCESS_TOKEN\";\r\n CacheType[CacheType[\"REFRESH_TOKEN\"] = 2002] = \"REFRESH_TOKEN\";\r\n CacheType[CacheType[\"ID_TOKEN\"] = 2003] = \"ID_TOKEN\";\r\n CacheType[CacheType[\"APP_METADATA\"] = 3001] = \"APP_METADATA\";\r\n CacheType[CacheType[\"UNDEFINED\"] = 9999] = \"UNDEFINED\";\r\n})(CacheType || (CacheType = {}));\r\n/**\r\n * More Cache related constants\r\n */\r\nvar APP_METADATA = \"appmetadata\";\r\nvar CLIENT_INFO = \"client_info\";\r\nvar THE_FAMILY_ID = \"1\";\r\nvar AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\nvar AuthorityMetadataSource;\r\n(function (AuthorityMetadataSource) {\r\n AuthorityMetadataSource[\"CONFIG\"] = \"config\";\r\n AuthorityMetadataSource[\"CACHE\"] = \"cache\";\r\n AuthorityMetadataSource[\"NETWORK\"] = \"network\";\r\n})(AuthorityMetadataSource || (AuthorityMetadataSource = {}));\r\nvar SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nvar AuthenticationScheme;\r\n(function (AuthenticationScheme) {\r\n AuthenticationScheme[\"BEARER\"] = \"Bearer\";\r\n AuthenticationScheme[\"POP\"] = \"pop\";\r\n AuthenticationScheme[\"SSH\"] = \"ssh-cert\";\r\n})(AuthenticationScheme || (AuthenticationScheme = {}));\r\n/**\r\n * Constants related to throttling\r\n */\r\nvar ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\nvar Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nvar PasswordGrantConstants;\r\n(function (PasswordGrantConstants) {\r\n PasswordGrantConstants[\"username\"] = \"username\";\r\n PasswordGrantConstants[\"password\"] = \"password\";\r\n})(PasswordGrantConstants || (PasswordGrantConstants = {}));\r\n/**\r\n * Response codes\r\n */\r\nvar ResponseCodes;\r\n(function (ResponseCodes) {\r\n ResponseCodes[ResponseCodes[\"httpSuccess\"] = 200] = \"httpSuccess\";\r\n ResponseCodes[ResponseCodes[\"httpBadRequest\"] = 400] = \"httpBadRequest\";\r\n})(ResponseCodes || (ResponseCodes = {}));\r\n/**\r\n * Region Discovery Sources\r\n */\r\nvar RegionDiscoverySources;\r\n(function (RegionDiscoverySources) {\r\n RegionDiscoverySources[\"FAILED_AUTO_DETECTION\"] = \"1\";\r\n RegionDiscoverySources[\"INTERNAL_CACHE\"] = \"2\";\r\n RegionDiscoverySources[\"ENVIRONMENT_VARIABLE\"] = \"3\";\r\n RegionDiscoverySources[\"IMDS\"] = \"4\";\r\n})(RegionDiscoverySources || (RegionDiscoverySources = {}));\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nvar RegionDiscoveryOutcomes;\r\n(function (RegionDiscoveryOutcomes) {\r\n RegionDiscoveryOutcomes[\"CONFIGURED_MATCHES_DETECTED\"] = \"1\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NO_AUTO_DETECTION\"] = \"2\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NOT_DETECTED\"] = \"3\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_SUCCESSFUL\"] = \"4\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_FAILED\"] = \"5\";\r\n})(RegionDiscoveryOutcomes || (RegionDiscoveryOutcomes = {}));\r\nvar CacheOutcome;\r\n(function (CacheOutcome) {\r\n CacheOutcome[\"NO_CACHE_HIT\"] = \"0\";\r\n CacheOutcome[\"FORCE_REFRESH\"] = \"1\";\r\n CacheOutcome[\"NO_CACHED_ACCESS_TOKEN\"] = \"2\";\r\n CacheOutcome[\"CACHED_ACCESS_TOKEN_EXPIRED\"] = \"3\";\r\n CacheOutcome[\"REFRESH_CACHED_ACCESS_TOKEN\"] = \"4\";\r\n})(CacheOutcome || (CacheOutcome = {}));\r\nvar JsonTypes;\r\n(function (JsonTypes) {\r\n JsonTypes[\"Jwt\"] = \"JWT\";\r\n JsonTypes[\"Jwk\"] = \"JWK\";\r\n})(JsonTypes || (JsonTypes = {}));\n\nexport { AADAuthorityConstants, AADServerParamKeys, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheSchemaType, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, Errors, GrantType, HeaderNames, JsonTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, SSOTypes, Separators, THE_FAMILY_ID, ThrottlingConstants };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { StringUtils } from './StringUtils.js';\nimport { Constants } from './Constants.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nvar ProtocolUtils = /** @class */ (function () {\r\n function ProtocolUtils() {\r\n }\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n ProtocolUtils.setRequestState = function (cryptoObj, userState, meta) {\r\n var libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? \"\" + libraryState + Constants.RESOURCE_DELIM + userState : libraryState;\r\n };\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.generateLibraryState = function (cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n var stateObj = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n var stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n };\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.parseRequestState = function (cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n var splitState = state.split(Constants.RESOURCE_DELIM);\r\n var libraryState = splitState[0];\r\n var userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n var libraryStateString = cryptoObj.base64Decode(libraryState);\r\n var libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n return ProtocolUtils;\r\n}());\n\nexport { ProtocolUtils };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n StringUtils.decodeAuthToken = function (authToken) {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n var tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(\"Given token is malformed: \" + JSON.stringify(authToken));\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n StringUtils.isEmptyObj = function (strObj) {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n var obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n };\r\n StringUtils.startsWith = function (str, search) {\r\n return str.indexOf(search) === 0;\r\n };\r\n StringUtils.endsWith = function (str, search) {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n };\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n StringUtils.queryStringToObject = function (query) {\r\n var obj = {};\r\n var params = query.split(\"&\");\r\n var decode = function (s) { return decodeURIComponent(s.replace(/\\+/g, \" \")); };\r\n params.forEach(function (pair) {\r\n if (pair.trim()) {\r\n var _a = pair.split(/=(.+)/g, 2), key = _a[0], value = _a[1]; // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n };\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n StringUtils.trimArrayEntries = function (arr) {\r\n return arr.map(function (entry) { return entry.trim(); });\r\n };\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n StringUtils.removeEmptyStringsFromArray = function (arr) {\r\n return arr.filter(function (entry) {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n };\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n StringUtils.jsonParseHelper = function (str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n StringUtils.matchPattern = function (pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n var regex = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n return regex.test(input);\r\n };\r\n return StringUtils;\r\n}());\n\nexport { StringUtils };\n","/*! @azure/msal-common v6.4.0 2022-06-06 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n TimeUtils.nowSeconds = function () {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n TimeUtils.isTokenExpired = function (expiresOn, offset) {\r\n // check for access token expiry\r\n var expirationSec = Number(expiresOn) || 0;\r\n var offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n };\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\n TimeUtils.wasClockTurnedBack = function (cachedAt) {\r\n var cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n TimeUtils.delay = function (t, value) {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });\r\n };\r\n return TimeUtils;\r\n}());\n\nexport { TimeUtils };\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * ApplicationInsights.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { PageViewPerformance, PageView, RemoteDependencyData, Event as EventTelemetry, createTelemetryItem, Metric, Exception, Trace, PropertiesPluginIdentifier, AnalyticsPluginIdentifier, stringToBoolOrDefault, createDomEvent, strNotSpecified, isCrossOriginError, utlDisableStorage, utlEnableStorage, dataSanitizeString, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, getWindow, getDocument, getHistory, getLocation, objForEachKey, isString, isFunction, isNullOrUndefined, arrForEach, generateW3CId, dumpObj, getExceptionName, safeGetCookieMgr, hasHistory, strUndefined, objDefineAccessors, InstrumentEvent, eventOn, eventOff, mergeEvtNamespace, createUniqueNamespace, throwError, isUndefined, hasWindow, createProcessTelemetryContext } from \"@microsoft/applicationinsights-core-js\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Timing } from \"./Timing\";\r\n\"use strict\";\r\nvar durationProperty = \"duration\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason.toString)) {\r\n return reason.toString();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);\r\n config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);\r\n config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);\r\n config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);\r\n if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {\r\n config.samplingPercentage = 100;\r\n }\r\n config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);\r\n config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);\r\n config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);\r\n config.namePrefix = config.namePrefix || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config.disableFlushOnBeforeUnload = stringToBoolOrDefault(config.disableFlushOnBeforeUnload);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config.disableFlushOnBeforeUnload);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig.isStorageUseDisabled)) {\r\n if (extConfig.isStorageUseDisabled) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self.core);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry.dataType, EventTelemetry.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties); // Todo: Fix to pass measurements once type is updated\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace.dataType, Trace.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric.dataType, Metric.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self.trackPageView = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager.trackPageView(inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView.dataType, PageView.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance.dataType, PageViewPerformance.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager.populatePageViewPerformanceEvent(inPvp);\r\n _self.sendPageViewPerformanceInternal(inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc.href || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _pageVisitTimeManager.trackPreviousPageVisit(name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n var theError = exception.exception || exception.error || new Error(strNotSpecified);\r\n var exceptionPartB = new Exception(_self.diagLog(), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception.dataType, Exception.envelopeType, _self.diagLog(), customProperties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception.exception && exception.error) {\r\n exception.exception = exception.error;\r\n }\r\n try {\r\n _self.sendExceptionInternal(exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self._onerror = function (exception) {\r\n var error = exception && exception.error;\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception.errorSrc || \"window.onerror@\" + url + \":\" + (exception.lineNumber || 0) + \":\" + (exception.columnNumber || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception.lineNumber || 0,\r\n columnNumber: exception.columnNumber || 0,\r\n message: exception.message\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception.error)) {\r\n _sendCORSException(Exception.CreateAutoException(\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception.lineNumber || 0, exception.columnNumber || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception.errorSrc) {\r\n exception.errorSrc = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error.message) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n if (_self.core) {\r\n // Just add to the core\r\n return _self.core.addTelemetryInitializer(telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core.addTelemetryInitializer(initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);\r\n _pageViewManager = new PageViewManager(_this, extConfig.overridePageViewDuration, _self.core, _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self.diagLog(), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n _self.trackEvent({ name: name, properties: properties });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self.diagLog(), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self.sendPageViewInternal(pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self.core);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled;\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData.dataType) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1.length; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self.addTelemetryInitializer(dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception.dataType, Exception.envelopeType, _self.diagLog(), properties);\r\n _self.core.track(telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig.disableExceptionTracking;\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self._onerror(Exception.CreateAutoException(message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig.enableAutoRouteTracking === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self.core && _self.core.getTraceCtx) {\r\n distributedTraceCtx = _self.core.getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self.core.getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(extConfig.namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn.href || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn.href || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self.diagLog(), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self.trackPageView({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(this, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(extConfig.namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(extConfig.namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(extConfig.namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(extConfig.namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, extConfig.namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, extConfig.namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig.enableUnhandledPromiseRejectionTracking === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self._onerror(Exception.CreateAutoException(_getReason(error), _location ? _location.href : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self.diagLog().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location.href || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n AnalyticsPlugin.Version = \"2.8.4\"; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { getDocument, getLocation, arrForEach, isNullOrUndefined, getExceptionName, dumpObj, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue.length === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self.trackPageView = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1.href || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager.isPerformanceTimingSupported()) {\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels(true);\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager.getPerformanceTiming().navigationStart;\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager.shouldCollectDuration(customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties.duration)) {\r\n duration = customProperties.duration;\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[\"duration\"] = customDuration;\r\n }\r\n // case 2\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager.isPerformanceTimingDataReady()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[\"duration\"] = customDuration;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = pageViewPerformance.durationMs;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = maxDurationLimit;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (intervalHandle) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { getNavigator, getPerformance, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n this.MAX_DURATION_ALLOWED = 3600000; // 1h\r\n if (core) {\r\n this._logger = core.logger;\r\n }\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = this.getPerformanceNavigationTiming();\r\n var timing = this.getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming.duration;\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming.connectEnd : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming.connectEnd);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming.responseStart);\r\n response = dateTimeUtilsDuration(navigationTiming.responseStart, navigationTiming.responseEnd);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming.loadEventEnd);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing.navigationStart, timing.loadEventEnd);\r\n network = dateTimeUtilsDuration(timing.navigationStart, timing.connectEnd);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing.responseStart);\r\n response = dateTimeUtilsDuration(timing.responseStart, timing.responseEnd);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing.loadEventEnd);\r\n }\r\n var logger = this._logger;\r\n if (total === 0) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!this.shouldCollectDuration(total, network, request, response, dom)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance.duration = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n if (this.isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceNavigationTiming = function () {\r\n if (this.isPerformanceNavigationTimingSupported()) {\r\n return getPerformance().getEntriesByType(\"navigation\")[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns true is window PerformanceNavigationTiming API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceNavigationTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\").length > 0;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.timing;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing.navigationStart > 0\r\n && timing.responseStart > 0\r\n && timing.requestStart > 0\r\n && timing.loadEventEnd > 0\r\n && timing.responseEnd > 0\r\n && timing.connectEnd > 0\r\n && timing.domLoading > 0;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames.length; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations.length; i++) {\r\n if (durations[i] < 0 || durations[i] >= this.MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { hasJSON, getJSON, dateNow, dumpObj, throwError, _warnToConsole } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n this.prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n this.pageVisitTimeTrackingHandler = pageVisitTimeTrackingHandler;\r\n this._logger = logger;\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = this.restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n this.pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(this._logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.restartPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n var prevPageVisitData = this.stopPageVisitTimer();\r\n this.startPageVisitTimer(pageName, pageUrl);\r\n return prevPageVisitData;\r\n }\r\n catch (e) {\r\n _warnToConsole(this._logger, \"Call to restart failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n PageVisitTimeManager.prototype.startPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(this._logger, this.prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(this._logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.stopPageVisitTimer = function () {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n var prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n // Return page visit data\r\n return prevPageVisitData;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n _warnToConsole(this._logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this.pageVisitStartTime = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { Data, Envelope, RemoteDependencyData, Event, Exception, Metric, PageView, Trace, PageViewPerformance, CtxTagKeys, HttpMethod, SampleRate, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { hasJSON, getJSON, objForEachKey, isNullOrUndefined, isNumber, isString, toISOString, setValue, isTruthy, optimizeObject, _throwInternal, _warnToConsole } from \"@microsoft/applicationinsights-core-js\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env.tags = env.tags || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item.tags = item.tags || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceType);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env.data = env.data || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs.name);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace.name));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace.traceID);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags.length - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env.tags = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem.tags = telemetryItem.tags || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: \"2.8.4\"\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd.name, bd.duration, bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData.dataType, remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event.dataType) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event.dataType) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData].name;\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event.dataType, eventData);\r\n return _createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception.dataType, exData);\r\n return _createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData.name, baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric.dataType, baseMetricData);\r\n return _createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var strDuration = \"duration\";\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][strDuration])) { // from part B properties\r\n duration = baseData[strProperties][strDuration];\r\n delete baseData[strProperties][strDuration];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem.data) &&\r\n !isNullOrUndefined(telemetryItem.data[strDuration])) { // from custom properties\r\n duration = telemetryItem.data[strDuration];\r\n delete telemetryItem.data[strDuration];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {}).traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd.name;\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView.dataType, pageViewData);\r\n return _createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd.name;\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance.dataType, baseData);\r\n return _createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData].measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace.dataType, baseData);\r\n return _createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined, createUniqueNamespace, mergeEvtNamespace, eventOn, eventOff } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator.onLine;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n result = _navigator.onLine;\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { getJSON, arrForEach, isFunction, arrIndexOf, isString, dumpObj, isArray, getExceptionName, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self.enqueue = function (payload) {\r\n if (_self.count() >= config.eventsLimitInMem()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self.count(), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer.push(payload);\r\n };\r\n _self.count = function () {\r\n return _buffer.length;\r\n };\r\n _self.size = function () {\r\n var size = _buffer.length;\r\n for (var lp = 0; lp < _buffer.length; lp++) {\r\n size += _buffer[lp].length;\r\n }\r\n if (!config.emitLineDelimitedJson()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self.clear = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self.batchPayloads = function (payload) {\r\n if (payload && payload.length > 0) {\r\n var batch = config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self.markAsSent = function (payload) {\r\n _base.clear();\r\n };\r\n _self.clearSent = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer.BUFFER_KEY);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n buffer.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, buffer);\r\n _self.enqueue = function (payload) {\r\n if (_self.count() >= SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self.count(), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base.enqueue(payload);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._get());\r\n };\r\n _self.clear = function () {\r\n _base.clear();\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._get());\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.markAsSent = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements.length, true);\r\n sentElements.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n }\r\n };\r\n _self.clearSent = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining.push(value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON.stringify(buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON.stringify([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { SessionStorageSendBuffer, ArraySendBuffer } from \"./SendBuffer\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { Serializer } from \"./Serializer\"; // todo move to channel\r\nimport { DisabledPropertyName, RequestHeaders, PageView, Event, Trace, Exception, Metric, PageViewPerformance, RemoteDependencyData, ProcessLegacy, BreezeChannelIdentifier, SampleRate, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { getWindow, getNavigator, getJSON, BaseTelemetryPlugin, objForEachKey, isNullOrUndefined, arrForEach, dateNow, dumpObj, getExceptionName, getIEVersion, objKeys, isBeaconsSupported, isFetchSupported, useXDomainRequest, isXhrSupported, isArray, createUniqueNamespace, mergeEvtNamespace, _throwInternal, _warnToConsole } from \"@microsoft/applicationinsights-core-js\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n // set default values\r\n return {\r\n endpointUrl: function () { return \"https://dc.services.visualstudio.com/v2/track\"; },\r\n emitLineDelimitedJson: function () { return false; },\r\n maxBatchInterval: function () { return 15000; },\r\n maxBatchSizeInBytes: function () { return 102400; },\r\n disableTelemetry: function () { return false; },\r\n enableSessionStorageBuffer: function () { return true; },\r\n isRetryDisabled: function () { return false; },\r\n isBeaconApiDisabled: function () { return true; },\r\n disableXhr: function () { return false; },\r\n onunloadDisableFetch: function () { return false; },\r\n onunloadDisableBeacon: function () { return false; },\r\n instrumentationKey: function () { return undefined; },\r\n namePrefix: function () { return undefined; },\r\n samplingPercentage: function () { return 100; },\r\n customHeaders: function () { return undefined; },\r\n convertUndefined: function () { return undefined; },\r\n eventsLimitInMem: function () { return 10000; }\r\n };\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig.maxBatchSizeInBytes()) {\r\n _self.triggerSend(true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self.triggerSend(isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig.onunloadDisableBeacon() === false || _self._senderConfig.isBeaconApiDisabled() === false) && isBeaconsSupported()) {\r\n try {\r\n _self.triggerSend(true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self._sender = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self.diagLog();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _self._buffer = (_self._senderConfig.enableSessionStorageBuffer() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);\r\n _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config.instrumentationKey);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {\r\n arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self._senderConfig;\r\n var sendPostFunc = null;\r\n if (!senderConfig.disableXhr() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig.disableXhr() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig.isBeaconApiDisabled() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self._sender = sendPostFunc || _xhrSender;\r\n if (!senderConfig.onunloadDisableFetch() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig.disableXhr() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig.disableXhr() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self._senderConfig.disableTelemetry()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem.baseType) {\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem.baseType) {\r\n // Default\r\n telemetryItem.baseType = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self._sender) {\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(itemCtx.diagLog(), 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample.sampleRate });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample.sampleRate;\r\n }\r\n var convertUndefined = _self._senderConfig.convertUndefined() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem.tags && telemetryItem.tags[ProcessLegacy]) {\r\n arrForEach(telemetryItem.tags[ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(itemCtx.diagLog(), \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem.tags[ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self._buffer;\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload.length) > _self._senderConfig.maxBatchSizeInBytes()) {\r\n _self.triggerSend(true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n buffer.enqueue(payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(itemCtx.diagLog(), 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self._buffer;\r\n // Send data only if disableTelemetry is false\r\n if (!_self._senderConfig.disableTelemetry()) {\r\n if (buffer.count() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self._sender(payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer.clear();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self._onError = function (payload, message, event) {\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self._onPartialSuccess = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry.push(extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed.push(extracted);\r\n }\r\n }\r\n if (payload.length > 0) {\r\n _self._onSuccess(payload, results.itemsAccepted);\r\n }\r\n if (failed.length > 0) {\r\n _self._onError(failed, _formatErrorMessageXhr(null, [\"partial success\", results.itemsAccepted, \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry.length > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload.length + \", Failed: \" + failed.length +\r\n \". Will retry to send \" + retry.length + \" our of \" + results.itemsReceived + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self._onSuccess = function (payload, countOfItemsInPayload) {\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results.itemsAccepted\r\n && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, results);\r\n }\r\n else {\r\n _self._onError(payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self._onError(payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload.length + \" items.\");\r\n }\r\n else {\r\n _self._onError(payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self._senderConfig.isRetryDisabled()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, response);\r\n }\r\n else {\r\n _self._onError(payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self._senderConfig.endpointUrl()) {\r\n _self._senderConfig.endpointUrl = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self._buffer;\r\n var url = _self._senderConfig.endpointUrl();\r\n var batch = _self._buffer.batchPayloads(payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer.markAsSent(payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload.length);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload.length > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload.length; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload.push(thePayload);\r\n }\r\n }\r\n if (droppedPayload.length > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self._senderConfig.endpointUrl();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr.setRequestHeader(\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr.setRequestHeader(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr.setRequestHeader(headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload.length); };\r\n xhr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer.batchPayloads(payload);\r\n xhr.send(batch);\r\n _self._buffer.markAsSent(payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload.length;\r\n for (var lp = 0; lp < payload.length; lp++) {\r\n payloadSize += payload[lp].length;\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self._senderConfig.endpointUrl();\r\n var batch = _self._buffer.batchPayloads(payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch.length;\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer.markAsSent(payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self._onError(payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload.length, response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self._onError(payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self._onError(payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload.length);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result.itemsAccepted &&\r\n result.itemsReceived - result.itemsAccepted === result.errors.length) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload.length === 0) {\r\n return;\r\n }\r\n var buffer = _self._buffer;\r\n buffer.clearSent(payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer.enqueue(item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self._senderConfig.maxBatchInterval(), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self.triggerSend(true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 503; // Service unavailable.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self._buffer;\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self.diagLog(), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer.clear();\r\n return;\r\n }\r\n var endpointUrl = _self._senderConfig.endpointUrl().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer.batchPayloads(payload);\r\n xdr.send(batch);\r\n buffer.markAsSent(payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager.eventsSendRequest) {\r\n try {\r\n manager.eventsSendRequest(sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config.disableInstrumentationKeyValidation) ? false : config.disableInstrumentationKeyValidation;\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config.instrumentationKey);\r\n }\r\n function _initDefaults() {\r\n _self._sender = null;\r\n _self._buffer = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { getJSON, objForEachKey, isFunction, isObject, isArray, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON().stringify(output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON().stringify(source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources.length; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output.push(item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value.toString) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value.toString();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this.sampleRate = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this.sampleRate; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric.dataType) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator.getSamplingScore(envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input.length < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input.length; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self.getSamplingScore = function (item) {\r\n var score = 0;\r\n if (item.tags && item.tags[keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item.tags[keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.user.id);\r\n }\r\n else if (item.tags && item.tags[keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item.tags[keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace.traceID) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace.traceID);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString.split(_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv.split(_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts.length === 2) { // only save fields with valid formats\r\n var key = kvParts[0].toLowerCase();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result).length > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result.ingestionendpoint = result.ingestionendpoint || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply the default endpoints\r\n result.ingestionendpoint = result.ingestionendpoint || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString().toLowerCase() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms.length === 1 ? \"00\" + ms : ms.length === 2 ? \"0\" + ms : ms;\r\n sec = sec.length < 2 ? \"0\" + sec : sec;\r\n min = min.length < 2 ? \"0\" + min : min;\r\n hour = hour.length < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n Verbose: 0 /* eSeverityLevel.Verbose */,\r\n Information: 1 /* eSeverityLevel.Information */,\r\n Warning: 2 /* eSeverityLevel.Warning */,\r\n Error: 3 /* eSeverityLevel.Error */,\r\n Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nvar ConfigurationManager = /** @class */ (function () {\r\n function ConfigurationManager() {\r\n }\r\n ConfigurationManager.getConfig = function (config, field, identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var configValue;\r\n if (identifier && config.extensionConfig && config.extensionConfig[identifier] && !isNullOrUndefined(config.extensionConfig[identifier][field])) {\r\n configValue = config.extensionConfig[identifier][field];\r\n }\r\n else {\r\n configValue = config[field];\r\n }\r\n return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n };\r\n return ConfigurationManager;\r\n}());\r\nexport { ConfigurationManager };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date).toString();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid, uid);\r\n var fail = storage.getItem(uid) !== uid;\r\n storage.removeItem(uid);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { hasJSON, getJSON, objForEachKey, isObject, strTrim, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key.length;\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field.length !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field.substring(0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name.toString());\r\n // truncate the string to 150 chars\r\n if (name.length > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name.substring(0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString().length > maxLength) {\r\n valueTrunc = value.toString().substring(0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message.length > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message.substring(0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value.length > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value.substring(0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON().stringify(value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */).toString() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input.length > maxLength) {\r\n inputTrunc = input.substring(0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s.length - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */,\r\n sanitizeKeyAndAddUniqueness: dataSanitizeKeyAndAddUniqueness,\r\n sanitizeKey: dataSanitizeKey,\r\n sanitizeString: dataSanitizeString,\r\n sanitizeUrl: dataSanitizeUrl,\r\n sanitizeMessage: dataSanitizeMessage,\r\n sanitizeException: dataSanitizeException,\r\n sanitizeProperties: dataSanitizeProperties,\r\n sanitizeMeasurements: dataSanitizeMeasurements,\r\n sanitizeId: dataSanitizeId,\r\n sanitizeInput: dataSanitizeInput,\r\n padNumber: dsPadNumber,\r\n trim: strTrim\r\n};\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString, dataSanitizeProperties, dataSanitizeMeasurements } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nimport { isNullOrUndefined, arrMap, isString, strTrim, isArray, isError, arrForEach, isObject, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar NoMethod = \"\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON.stringify) {\r\n result = JSON.stringify(value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value.toString)) {\r\n result = value.toString();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\").indexOf(errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src.split(\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage.split(\"\\n\");\r\n for (var lp = 0; lp < lines.length; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj.message);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames.length > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame.toString();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame.sizeInBytes;\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack.length - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left].sizeInBytes;\r\n var rSize = parsedStack[right].sizeInBytes;\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType.name || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor.toString());\r\n typeName = (results && results.length > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result.indexOf(errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self.exceptions = [new _ExceptionDetails(logger, exception, properties)];\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self.severityLevel = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self.exceptions = exception.exceptions || [];\r\n _self.properties = exception.properties;\r\n _self.measurements = exception.measurements;\r\n if (exception.severityLevel) {\r\n _self.severityLevel = exception.severityLevel;\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception.problemGroup) {\r\n _self.problemGroup = exception.problemGroup;\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception.isManual)) {\r\n _self.isManual = exception.isManual;\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var errorType = _getErrorType(error || evt || message);\r\n return {\r\n message: _formatMessage(message, errorType),\r\n url: url,\r\n lineNumber: lineNumber,\r\n columnNumber: columnNumber,\r\n error: _formatErrorCode(error || evt || message),\r\n evt: _formatErrorCode(evt || message),\r\n typeName: errorType,\r\n stackDetails: _getStackFromErrorObj(stack || error || evt),\r\n errorSrc: errorSrc\r\n };\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception.exceptions\r\n && arrMap(exception.exceptions, function (ex) { return _ExceptionDetails.CreateFromInterface(logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a = this, exceptions = _a.exceptions, properties = _a.properties, measurements = _a.measurements, severityLevel = _a.severityLevel, problemGroup = _a.problemGroup, id = _a.id, isManual = _a.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return {\r\n ver: \"4.0\",\r\n exceptions: exceptionDetailsInterface,\r\n severityLevel: severityLevel,\r\n properties: properties,\r\n measurements: measurements,\r\n problemGroup: problemGroup,\r\n id: id,\r\n isManual: isManual\r\n };\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n return {\r\n exceptions: [\r\n {\r\n hasFullStack: true,\r\n message: message,\r\n stack: details,\r\n typeName: typeName\r\n }\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self.typeName = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self.message = dataSanitizeMessage(logger, _formatMessage(exception || error, _self.typeName)) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self.parsedStack = _parseStack(stack);\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack.length > 0;\r\n if (properties) {\r\n properties.typeName = properties.typeName || _self.typeName;\r\n }\r\n }\r\n else {\r\n _self.typeName = exception.typeName;\r\n _self.message = exception.message;\r\n _self[strStack] = exception[strStack];\r\n _self.parsedStack = exception.parsedStack || [];\r\n _self.hasFullStack = exception.hasFullStack;\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _self = this;\r\n var parsedStack = _self.parsedStack instanceof Array\r\n && arrMap(_self.parsedStack, function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self.typeName,\r\n message: _self.message,\r\n hasFullStack: _self.hasFullStack,\r\n stack: _self[strStack],\r\n parsedStack: parsedStack || undefined\r\n };\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception.parsedStack instanceof Array\r\n && arrMap(exception.parsedStack, function (frame) { return _StackFrame.CreateFromInterface(frame); }))\r\n || exception.parsedStack;\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.sizeInBytes = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self.level = level;\r\n _self.method = NoMethod;\r\n _self.assembly = strTrim(frame);\r\n _self.fileName = \"\";\r\n _self.line = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches.length >= 5) {\r\n _self.method = strTrim(matches[2]) || _self.method;\r\n _self.fileName = strTrim(matches[4]);\r\n _self.line = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self.level = sourceFrame.level;\r\n _self.method = sourceFrame.method;\r\n _self.assembly = sourceFrame.assembly;\r\n _self.fileName = sourceFrame.fileName;\r\n _self.line = sourceFrame.line;\r\n _self.sizeInBytes = 0;\r\n }\r\n _self.sizeInBytes += _self.method.length;\r\n _self.sizeInBytes += _self.fileName.length;\r\n _self.sizeInBytes += _self.assembly.length;\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self.sizeInBytes += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString().length;\r\n _self.sizeInBytes += _self.line.toString().length;\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self.level,\r\n method: _self.method,\r\n assembly: _self.assembly,\r\n fileName: _self.fileName,\r\n line: _self.line\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint.count = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self.duration = msToTimeSpan(durationMs);\r\n }\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self.name = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self.duration = cs4BaseData.duration;\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self.receivedResponse = cs4BaseData.receivedResponse;\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self.duration = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self.name = dataSanitizeString(logger, dependencyFields.name);\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeMessage, dataSanitizeProperties, dataSanitizeMeasurements } from \"./Common/DataSanitizer\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self.message = dataSanitizeMessage(logger, message);\r\n _self.properties = dataSanitizeProperties(logger, properties);\r\n _self.measurements = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self.severityLevel = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { objForEachKey, isNullOrUndefined, toISOString, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified, strIkey } from \"./Constants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = {\r\n name: envelopeName,\r\n time: toISOString(new Date()),\r\n iKey: iKey,\r\n ext: systemProperties ? systemProperties : {},\r\n tags: [],\r\n data: {},\r\n baseType: baseType,\r\n baseData: item // Part B\r\n };\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache.length) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.pathname;\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www[0-9]?\\.)?(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 3 && isString(match[2]) && match[2].length > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w*):\\/\\/(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 2 && isString(match[2]) && match[2].length > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match.length > 2) {\r\n var protocol = (match[1] || \"\").toLowerCase();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getPerformance, getExceptionName as coreGetExceptionName, dumpObj, isNullOrUndefined, strTrim, random32, isArray, isError, isDate, newId, generateW3CId, toISOString, arrForEach, getIEVersion, attachEvent, dateNow, uaDisallowsSameSiteNone, disableCookies as coreDisableCookies, canUseCookies as coreCanUseCookies, getCookie as coreGetCookie, setCookie as coreSetCookie, deleteCookie as coreDeleteCookie, isBeaconsSupported, arrIndexOf, isValidTraceId, isValidSpanId } from \"@microsoft/applicationinsights-core-js\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { stringToBoolOrDefault, msToTimeSpan, isCrossOriginError, getExtensionByName } from \"./HelperFuncs\";\r\nimport { strNotSpecified } from \"./Constants\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlGetLocalStorage, utlRemoveSessionStorage, utlRemoveStorage, utlSetSessionStorage, utlSetLocalStorage } from \"./StorageHelperFuncs\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n \"https://dc.services.visualstudio.com/v2/track\",\r\n \"https://breeze.aimon.applicationinsights.io/v2/track\",\r\n \"https://dc-int.services.visualstudio.com/v2/track\"\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl.toLowerCase()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config.correlationHeaderExcludePatterns) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns.length; i++) {\r\n if (config.correlationHeaderExcludePatterns[i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host.toLowerCase();\r\n if (requestHost && (requestHost.indexOf(\":443\") !== -1 || requestHost.indexOf(\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\").toLowerCase();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains.length === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains.length; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost.length > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader.split(\",\");\r\n for (var i = 0; i < keyValues.length; ++i) {\r\n var keyValue = keyValues[i].split(\"=\");\r\n if (keyValue.length === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl.length > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl.pathname != null) {\r\n var pathName = (parsedUrl.pathname.length === 0) ? \"/\" : parsedUrl.pathname;\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl.pathname;\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace.name;\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace.name = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { objForEachKey, deepFreeze } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n _base.initialize(config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self.getPerfMgr(), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem.name)) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.eventsDiscarded([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { createDistributedTraceContext, initializePlugins, sortPlugins, _getPluginState } from \"./TelemetryHelpers\";\r\nimport { getGblPerfMgr, PerfManager } from \"./PerfManager\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { arrForEach, isNullOrUndefined, getSetValue, setValue, isNotTruthy, isFunction, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString, arrIndexOf } from \"./HelperFuncs\";\r\nimport { strExtensionConfig, strIKey } from \"./Constants\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { strAddNotificationListener, strDisabled, strEventsDiscarded, strEventsSendRequest, strEventsSent, strRemoveNotificationListener, strTeardown } from \"./InternalConstants\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext.initialize)) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext.priority;\r\n var identifier = ext.identifier;\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions.push(ext);\r\n }\r\n });\r\n return {\r\n all: allExtensions,\r\n core: coreExtensions\r\n };\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[strAddNotificationListener] = function (listener) { },\r\n _a[strRemoveNotificationListener] = function (listener) { },\r\n _a[strEventsSent] = function (events) { },\r\n _a[strEventsDiscarded] = function (events, reason) { },\r\n _a[strEventsSendRequest] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self.isInitialized = function () { return _isInitialized; };\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self.isInitialized()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n if (!config || isNullOrUndefined(config.instrumentationKey)) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _self.config = config || {};\r\n _initDebugListener(config);\r\n _initPerfManager(config);\r\n config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig(config);\r\n if (logger) {\r\n _self.logger = logger;\r\n }\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions.push.apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), config.extensions, false));\r\n _channelConfig = (config || {}).channels;\r\n _initPluginChain(config, null);\r\n if (!_channelQueue || _channelQueue.length === 0) {\r\n throwError(\"No channels available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls.push(channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);\r\n // add default timestamp if not passed in\r\n setValue(telemetryItem, \"time\", toISOString(new Date()), null, isNotTruthy);\r\n // Common Schema 4.0\r\n setValue(telemetryItem, \"ver\", \"4.0\", null, isNullOrUndefined);\r\n if (!_isUnloading && _self.isInitialized()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx().processNext(telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue.push(telemetryItem);\r\n }\r\n };\r\n _self.getProcessTelContext = _createTelCtx;\r\n _self.getNotifyMgr = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[strAddNotificationListener] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[strAddNotificationListener](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[strRemoveNotificationListener] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[strRemoveNotificationListener](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_self.config, _self.logger);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self.getPerfMgr = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (_self.config && _self.config.enablePerfMgr && isFunction(_self.config.createPerfMgr)) {\r\n _cfgPerfManager = _self.config.createPerfMgr(_self, _self.getNotifyMgr());\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue.length;\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue.length > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx().processNext(event);\r\n });\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for log messages to be flushed\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n var interval = _self.config.diagnosticLogInterval;\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n }\r\n _internalLogPoller = setInterval(function () {\r\n _flushInternalLogs();\r\n }, interval);\r\n return _internalLogPoller;\r\n };\r\n /**\r\n * Stop polling log messages from logger.queue\r\n */\r\n _self.stopPollingInternalLogs = function () {\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */,\r\n isAsync: isAsync,\r\n flushComplete: false\r\n };\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx.onComplete(function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self.stopPollingInternalLogs();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx.processNext(unloadState);\r\n }\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self.getPlugin = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin.identifier);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin.identifier + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions.push(plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(_self.config, updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self.flush = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _self.config = objExtend(true, {}, defaultInitConfig);\r\n _self.logger = new DiagnosticLogger(_self.config);\r\n _self._extensions = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n return createProcessTelemetryContext(_getPluginChain(), _self.config, _self);\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(config, updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self.logger, ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions.core;\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, config, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions.splice(idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions.splice(idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions.push(_channelControl);\r\n _coreExtensions.push(_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self._extensions = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl.initialize(config, _self, allExtensions);\r\n initializePlugins(_createTelCtx(), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self._extensions = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self._extensions, function (ext) {\r\n if (ext.identifier === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = {\r\n plugin: thePlugin,\r\n setEnabled: function (enabled) {\r\n _getPluginState(thePlugin)[strDisabled] = !enabled;\r\n },\r\n isEnabled: function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[strTeardown] && !pluginState[strDisabled];\r\n },\r\n remove: function (isAsync, removeCb) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */,\r\n isAsync: isAsync\r\n };\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(_self.config, {\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n }\r\n };\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions.push(_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _self.config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins.length > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _self.config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx.onComplete(function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions.push(plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue.push(channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig.push(newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n });\r\n unloadCtx.processNext(unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n var queue = _self.logger ? _self.logger.queue : [];\r\n if (queue) {\r\n arrForEach(queue, function (logMessage) {\r\n var item = {\r\n name: _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage.messageId,\r\n iKey: _self.config.instrumentationKey,\r\n time: toISOString(new Date()),\r\n baseType: _InternalLogMessage.dataType,\r\n baseData: { message: logMessage.message }\r\n };\r\n _self.track(item);\r\n });\r\n queue.length = 0;\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl.flush(isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener(config) {\r\n if (config.disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[strRemoveNotificationListener](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && config.disableDbgExt !== true) {\r\n _debugListener = getDebugListener(config);\r\n _notificationManager[strAddNotificationListener](_debugListener);\r\n }\r\n }\r\n function _initPerfManager(config) {\r\n if (!config.enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (config.enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n setValue(_self.config, \"createPerfMgr\", _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig(config) {\r\n var extConfig = getSetValue(config, strExtensionConfig);\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx.processNext(updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self.logger;\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for BaseCore.prototype.initialize.\r\n// Removed Stub for BaseCore.prototype.getTransmissionControls.\r\n// Removed Stub for BaseCore.prototype.track.\r\n// Removed Stub for BaseCore.prototype.getProcessTelContext.\r\n// Removed Stub for BaseCore.prototype.getNotifyMgr.\r\n// Removed Stub for BaseCore.prototype.addNotificationListener.\r\n// Removed Stub for BaseCore.prototype.removeNotificationListener.\r\n// Removed Stub for BaseCore.prototype.getCookieMgr.\r\n// Removed Stub for BaseCore.prototype.setCookieMgr.\r\n// Removed Stub for BaseCore.prototype.getPerfMgr.\r\n// Removed Stub for BaseCore.prototype.setPerfMgr.\r\n// Removed Stub for BaseCore.prototype.eventCnt.\r\n// Removed Stub for BaseCore.prototype.pollInternalLogs.\r\n// Removed Stub for BaseCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for BaseCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for BaseCore.prototype.unload.\r\n// Removed Stub for BaseCore.prototype.getPlugin.\r\n// Removed Stub for BaseCore.prototype.addPlugin.\r\n// Removed Stub for BaseCore.prototype.evtNamespace.\r\n// Removed Stub for BaseCore.prototype.addUnloadCb.\r\n// Removed Stub for BaseCore.prototype.flush.\r\n// Removed Stub for BaseCore.prototype.getTraceCtx.\r\n// Removed Stub for BaseCore.prototype.setTraceCtx.\r\n// Removed Stub for BaseCore.prototype.releaseQueue.\r\n// Removed Stub for BaseCore.prototype._updateHook.\r\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { strExtensionConfig } from \"./Constants\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { strDoTeardown, strIsInitialized, strSetNextPlugin } from \"./InternalConstants\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self.core;\r\n if (!core || (unloadCtx && core !== unloadCtx.core())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n // Remove all instrumentation hooks\r\n arrForEach(_hooks, function (fn) {\r\n fn.rm();\r\n });\r\n _hooks = [];\r\n if (result === true) {\r\n theUnloadCtx.processNext(theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[strDoTeardown] || _self[strDoTeardown](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self.update = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self.core;\r\n if (!core || (updateCtx && core !== updateCtx.core())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx.getNext());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks.push(hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self.diagLog = function (itemCtx) {\r\n return _getTelCtx(itemCtx).diagLog();\r\n };\r\n _self[strIsInitialized] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[strSetNextPlugin] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self.processNext = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx.processNext(env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin.processTelemetry)) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin.processTelemetry(env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self.core);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx.createNew(null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx.createNew(null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, strExtensionConfig, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self.core = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self.core = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// \r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { strPause, strProcessNext, strResume, strTeardown } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, config, core) {\r\n if (queue && isArray(queue) && queue.length > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a.priority - b.priority;\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem.priority < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem.identifier);\r\n }\r\n });\r\n channelQueue.push({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, config, core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n var _a;\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core.config, core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels.length + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue.length > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx.createNew(channelChain);\r\n chainCtx.onComplete(_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[strProcessNext](theUpdateState);\r\n }, function () {\r\n updateCtx[strProcessNext](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[strProcessNext](theUnloadState);\r\n }, function () {\r\n unloadCtx[strProcessNext](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue.length > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue.length > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext.identifier === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = (_a = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue.length > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[strProcessNext](item);\r\n }, function () {\r\n itemCtx[strProcessNext](item);\r\n });\r\n },\r\n update: _doUpdate\r\n },\r\n _a[strPause] = function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin[strPause] && plugin[strPause]();\r\n });\r\n }, null);\r\n },\r\n _a[strResume] = function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin[strResume] && plugin[strResume]();\r\n });\r\n }, null);\r\n },\r\n _a[strTeardown] = _doTeardown,\r\n _a.getChannel = _getChannel,\r\n _a.flush = function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin.flush) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin.flush(isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _a._setQueue = function (queue) {\r\n channelQueue = queue;\r\n },\r\n _a);\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, config, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, config, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin.priority > ChannelControllerPriority) {\r\n extensionQueue_1.push(plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, config, core);\r\n }\r\n return channelQueue;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var strIKey = \"iKey\";\r\nexport var strExtensionConfig = \"extensionConfig\";\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig.cookieCfg = rootConfig.cookieCfg || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config.cookieCfg;\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {}).logger);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n },\r\n setEnabled: function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n set: function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n var values = {};\r\n var theValue = strTrim(value || strEmpty);\r\n var idx = theValue.indexOf(\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value.substring(0, idx));\r\n values = _extractParts(value.substring(idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || strEmpty, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", strEmpty + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {}).userAgent);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n get: function (name) {\r\n var value = strEmpty;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n del: function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n purge: function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(strEmpty, values));\r\n result = true;\r\n }\r\n return result;\r\n }\r\n };\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue.length) {\r\n var parts = strTrim(theValue).split(\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || strEmpty);\r\n if (thePart) {\r\n var idx = thePart.indexOf(\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart.substring(0, idx))] = strTrim(thePart.substring(idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || strEmpty;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : strEmpty);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = strEmpty;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || strEmpty;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || strEmpty);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { randomValue, random32, mwcRandomSeed, mwcRandom32, newId } from \"./RandomHelper\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n function randomHexDigit() {\r\n return randomValue(15); // Get a random value from 0..15\r\n }\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(GuidRegex, function (c) {\r\n var r = (randomHexDigit() | 0), v = (c === \"x\" ? r : r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value.length;\r\n var start = len - search.length;\r\n return value.substring(start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = strEmpty, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct.substr(0, 8) + oct.substr(9, 4) + \"4\" + oct.substr(13, 3) + clockSequenceHi + oct.substr(16, 3) + oct.substr(19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr.setEnabled(value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs.push(cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr.setEnabled(legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr.setEnabled(_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr().setEnabled(false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = \"2.8.4\";\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target.nodeType === 1 || target.nodeType === 9 || !(+target.nodeType);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : \"\") + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || \"\") + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name].apply(listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs.length; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { hasJSON, getJSON, getConsole, dumpObj } from \"./EnvUtils\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isFunction, isNullOrUndefined, isUndefined } from \"./HelperFuncs\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nvar strErrorToConsole = \"errorToConsole\";\r\nvar strWarnToConsole = \"warnToConsole\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text.replace(/\\\"/g, strEmpty) + \"\\\"\";\r\n }\r\n return strEmpty;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self.messageId = msgId;\r\n _self.message =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = strEmpty;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : strEmpty) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : strEmpty);\r\n _self.message += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {}).logger || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n if (isNullOrUndefined(config)) {\r\n config = {};\r\n }\r\n _self.consoleLoggingLevel = function () { return _getConfigValue(\"loggingLevelConsole\", 0); };\r\n _self.telemetryLoggingLevel = function () { return _getConfigValue(\"loggingLevelTelemetry\", 1); };\r\n _self.maxInternalMessageLimit = function () { return _getConfigValue(\"maxMessageLimit\", 25); };\r\n _self.enableDebugExceptions = function () { return _getConfigValue(\"enableDebugExceptions\", false); };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_self.enableDebugExceptions()) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? strErrorToConsole : strWarnToConsole;\r\n if (!isUndefined(message.message)) {\r\n var logLevel = _self.consoleLoggingLevel();\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message.messageId;\r\n if (!_messageLogged[messageKey] && logLevel >= severity) {\r\n _self[logFunc](message.message);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (logLevel >= severity) {\r\n _self[logFunc](message.message);\r\n }\r\n }\r\n _self.logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self.warnToConsole = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self.errorToConsole = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self.logInternalMessage = function (severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message.messageId;\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _self.telemetryLoggingLevel()) {\r\n _self.queue.push(message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _self.maxInternalMessageLimit()) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue.push(throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self.errorToConsole(throttleLimitMessage);\r\n }\r\n else {\r\n _self.warnToConsole(throttleLimitMessage);\r\n }\r\n }\r\n }\r\n };\r\n function _getConfigValue(name, defValue) {\r\n var value = config[name];\r\n if (!isNullOrUndefined(value)) {\r\n return value;\r\n }\r\n return defValue;\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _self.maxInternalMessageLimit();\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt && dbgExt.diagLog) {\r\n dbgExt.diagLog(name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.enableDebugExceptions.\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.telemetryLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.maxInternalMessageLimit.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n (logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger).warnToConsole(message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger).logInternalMessage(severity, message);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimUndefined, strShimObject, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where .window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav.userAgent !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav.userAgent;\r\n var userAgent = (_navUserAgentCheck || strEmpty).toLowerCase();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1.userAgent || strEmpty).toLowerCase() : strEmpty;\r\n }\r\n var ua = (userAgentStr || strEmpty).toLowerCase();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua.split(strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua.split(strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString.call(object);\r\n var propertyValueDump = strEmpty;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object.name + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2.userAgent || strEmpty).toLowerCase() : strEmpty;\r\n }\r\n var ua = (userAgentStr || strEmpty).toLowerCase();\r\n return (ua.indexOf(\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values.length; i++) {\r\n var value = values[i];\r\n if (value.name) {\r\n if (value.name === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf.length > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name.replace) {\r\n return name.replace(/^\\s*\\.*|\\.*\\s*$/g, \"\");\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n if (evtNamespace) {\r\n var theNamespace_1 = \"\";\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = \"\";\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || \"\") + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || \"\") || []);\r\n return {\r\n type: parsedEvent[1],\r\n ns: ((parsedEvent[2] || \"\").replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, \"\").split(\".\").sort()).join(\".\")\r\n };\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n if (!evtName.type || evtName.type === value.evtName.type) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents.push({\r\n name: value.evtName.type + (value.evtName.ns ? \".\" + value.evtName.ns : \"\"),\r\n handler: value.handler\r\n });\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName.type) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName.type && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName.type, handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName.type, handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events.length;\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);\r\n // Remove the registered event\r\n events.splice(idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName.type) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache).length === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns).split(\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = {\r\n guid: _guid++,\r\n evtName: evtName,\r\n handler: handlerRef,\r\n capture: useCapture\r\n };\r\n _getRegisteredEvents(target, evtName.type).push(registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events.length > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents.length > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimUndefined, strShimObject, strShimFunction, throwTypeError, ObjClass, ObjProto, ObjAssign, ObjHasOwnProperty, ObjDefineProperty, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString.call(ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString.call(obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty.call(obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\nexport function isPromiseLike(value) {\r\n return value && isFunction(value.then);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value.replace(rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value.replace(rNormalizeInvalid, \"_\");\r\n value = value.replace(rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty.call(target, prop)) {\r\n callbackfn.call(target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search.length : 0;\r\n var valLen = value ? value.length : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue.length : 0;\r\n if (value && chkLen && value.length >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value.indexOf(search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array with optional generic T, the generic type is not validated\r\n * and exists to help with TypeScript validation only.\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString.call(obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty.call(proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString.call(proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r.length === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr.length;\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn.call(thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr.length;\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr.length;\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn.call(_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr.length;\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments.length >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str.replace ? str.replace(/^\\s+|\\s+$/g, \"\") : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty.call(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums.length;\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {\r\n result.push(_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (_objFreeze) {\r\n objForEachKey(obj, function (name, value) {\r\n if (isArray(value) || isObject(value)) {\r\n _objFreeze(value);\r\n }\r\n });\r\n }\r\n return objFreeze(obj);\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object.name;\r\n }\r\n return strEmpty;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName].apply(src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs.length;\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty.call(arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { hasOwnProperty, _getObjProto } from \"./HelperFuncs\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr.length; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb.apply(callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb.apply(callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = {\r\n name: aiHook.n,\r\n inst: funcThis,\r\n ctx: null,\r\n set: _replaceArg\r\n };\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target.push(arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc.apply(funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h.splice(idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h.push(theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks.push(hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\nexport var strEmpty = \"\";\r\nexport var strProcessTelemetry = \"processTelemetry\";\r\nexport var strPriority = \"priority\";\r\nexport var strSetNextPlugin = \"setNextPlugin\";\r\nexport var strIsInitialized = \"isInitialized\";\r\nexport var strTeardown = \"teardown\";\r\nexport var strCore = \"core\";\r\nexport var strUpdate = \"update\";\r\nexport var strDisabled = \"disabled\";\r\nexport var strDoTeardown = \"_doTeardown\";\r\nexport var strProcessNext = \"processNext\";\r\nexport var strResume = \"resume\";\r\nexport var strPause = \"pause\";\r\nexport var strNotificationListener = \"NotificationListener\";\r\nexport var strAddNotificationListener = \"add\" + strNotificationListener;\r\nexport var strRemoveNotificationListener = \"remove\" + strNotificationListener;\r\nexport var strEventsSent = \"eventsSent\";\r\nexport var strEventsDiscarded = \"eventsDiscarded\";\r\nexport var strEventsSendRequest = \"eventsSendRequest\";\r\nexport var strPerfEvent = \"perfEvent\";\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { strAddNotificationListener, strEventsDiscarded, strEventsSendRequest, strEventsSent, strPerfEvent, strRemoveNotificationListener } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[strAddNotificationListener] = function (listener) {\r\n _self.listeners.push(listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[strRemoveNotificationListener] = function (listener) {\r\n var index = arrIndexOf(_self.listeners, listener);\r\n while (index > -1) {\r\n _self.listeners.splice(index, 1);\r\n index = arrIndexOf(_self.listeners, listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[strEventsSent] = function (events) {\r\n _runListeners(_self.listeners, strEventsSent, true, function (listener) {\r\n listener[strEventsSent](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[strEventsDiscarded] = function (events, reason) {\r\n _runListeners(_self.listeners, strEventsDiscarded, true, function (listener) {\r\n listener[strEventsDiscarded](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[strEventsSendRequest] = function (sendReason, isAsync) {\r\n _runListeners(_self.listeners, strEventsSendRequest, isAsync, function (listener) {\r\n listener[strEventsSendRequest](sendReason, isAsync);\r\n });\r\n };\r\n _self[strPerfEvent] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent.isChildEvt()) {\r\n _runListeners(_self.listeners, strPerfEvent, false, function (listener) {\r\n if (perfEvent.isAsync) {\r\n setTimeout(function () { return listener[strPerfEvent](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[strPerfEvent](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self.name = name;\r\n _self.isAsync = isAsync;\r\n _self.isChildEvt = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self.getCtx = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey || key === PerfEvent.ChildrenContextKey) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self.isChildEvt = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent.ChildrenContextKey) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self.complete = function () {\r\n var childTime = 0;\r\n var childEvts = _self.getCtx(PerfEvent.ChildrenContextKey);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts.length; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt.time;\r\n }\r\n }\r\n }\r\n _self.time = dateNow() - _self.start;\r\n _self.exTime = _self.time - childTime;\r\n _self.complete = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent.complete();\r\n if (manager && isFunction(manager.perfEvent)) {\r\n manager.perfEvent(perfEvent);\r\n }\r\n }\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self.getCtx = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (isFunction(perfMgr[\"getPerfMgr\"])) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[\"getPerfMgr\"]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr.getCtx(doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt.setCtx) {\r\n perfEvt.setCtx(PerfEvent.ParentContextKey, currentActive);\r\n if (currentActive.getCtx && currentActive.setCtx) {\r\n var children = currentActive.getCtx(PerfEvent.ChildrenContextKey);\r\n if (!children) {\r\n children = [];\r\n currentActive.setCtx(PerfEvent.ChildrenContextKey, children);\r\n }\r\n children.push(perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr.setCtx(doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt.setCtx) {\r\n perfEvt.setCtx(\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr.setCtx(doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { safeGetLogger, _throwInternal } from \"./DiagnosticLogger\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { strCore, strDisabled, strEmpty, strIsInitialized, strTeardown, strUpdate } from \"./InternalConstants\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy.getPlugin() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy.getNext();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core.config || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete.push({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy.getNext() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete.length > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func.call(completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core.logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config.extensionConfig;\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin.getPlugin();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin.processTelemetry(env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context.getNext(), config, core, startAt);\r\n }\r\n context.processNext = _processNext;\r\n context.createNew = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core.config || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context.getNext(), core, startAt);\r\n }\r\n context.processNext = _processNext;\r\n context.createNew = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core.config || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin.update)) {\r\n plugin.update(context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context.getNext(), core, startAt);\r\n }\r\n context.processNext = _processNext;\r\n context.createNew = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins.length > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin.processTelemetry)) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin.processTelemetry);\r\n var hasSetNext = isFunction(plugin.setNextPlugin);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin.identifier + \"-\" + plugin.priority + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin.identifier : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[strCore](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : strEmpty;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState.teardown || pluginState[strDisabled]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin.setNextPlugin(nextProxy);\r\n }\r\n plugin.processTelemetry(env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx.processNext(env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[strCore] || pluginState.core;\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx[strCore]()) && !pluginState[strTeardown]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[strCore] = null;\r\n pluginState[strTeardown] = true;\r\n pluginState[strIsInitialized] = false;\r\n if (plugin[strTeardown] && plugin[strTeardown](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState.isAsync)) {\r\n // Only called if we hasRun was not true\r\n unloadCtx.processNext(unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[strCore] || pluginState.core;\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx[strCore]()) && !pluginState[strTeardown]) {\r\n if (plugin[strUpdate] && plugin[strUpdate](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx.processNext(updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { strEmpty } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = strEmpty;\r\n while (result.length < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { strCore, strDoTeardown, strIsInitialized, strPriority, strProcessTelemetry, strSetNextPlugin, strTeardown } from \"./InternalConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar strDoUnload = \"_doUnload\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext.getNext();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy.getPlugin();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[strSetNextPlugin]) &&\r\n isFunction(thePlugin[strProcessTelemetry])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[strSetNextPlugin](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[strIsInitialized])) {\r\n isInitialized = thePlugin[strIsInitialized]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[strIsInitialized];\r\n }\r\n if (!isInitialized) {\r\n initPlugins.push(thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext.core();\r\n thePlugin.initialize(processContext.getCfg(), core, extensions, processContext.getNext());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[strCore] && !pluginState[strCore]) {\r\n pluginState[strCore] = core;\r\n }\r\n pluginState[strIsInitialized] = true;\r\n delete pluginState[strTeardown];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[strProcessTelemetry]);\r\n if (isFunction(extA[strProcessTelemetry])) {\r\n result = bHasProcess ? extA[strPriority] - extB[strPriority] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components.length) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component[strDoUnload] || component[strDoTeardown];\r\n if (isFunction(func)) {\r\n if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace.name;\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace.name = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceId;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceId = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.spanId;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.spanId = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { strDoTeardown } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers.push(theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self.processTelemetry = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers.length;\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn.apply(null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self.processNext(item, itemCtx);\r\n }\r\n };\r\n _self[strDoTeardown] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers.push(handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx.diagLog(), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]*)?$/;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value.length === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result.length < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n return {\r\n version: _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n traceId: isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n spanId: isValidSpanId(spanId) ? spanId : generateW3CId().substr(0, 16),\r\n traceFlags: flags >= 0 && flags <= 0xFF ? flags : 1\r\n };\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value\r\n * @returns\r\n */\r\nexport function parseTraceParent(value) {\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value.length > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return {\r\n version: match[1],\r\n traceId: match[2],\r\n spanId: match[3],\r\n traceFlags: parseInt(match[4], 16)\r\n };\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value.version, 2, INVALID_VERSION) ||\r\n !_isValid(value.traceId, 32, INVALID_TRACE_ID) ||\r\n !_isValid(value.spanId, 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value.traceFlags), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value.traceFlags & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value.traceFlags);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value.version || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version, \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), \"-\").concat(flags);\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @returns\r\n */\r\nexport function findW3cTraceParent() {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name));\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name));\r\n }\r\n return traceParent;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { RequestHeaders, CorrelationIdHelper, createTelemetryItem, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, isInternalApplicationInsightsEndpoint, formatTraceParent, createTraceParent, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, BaseTelemetryPlugin, getLocation, getGlobal, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj, isXhrSupported, eventOn, mergeEvtNamespace, createUniqueNamespace, createProcessTelemetryContext, _throwInternal, getExceptionName } from \"@microsoft/applicationinsights-core-js\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strFetch = \"fetch\";\r\nvar strTrackDependencyDataInternal = \"trackDependencyDataInternal\"; // Using string to help with minification\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(xhr) &&\r\n !isNullOrUndefined(xhr[strAjaxData]) &&\r\n !isNullOrUndefined(xhr[strAjaxData].requestUrl)) {\r\n result += \"(url: '\" + xhr[strAjaxData].requestUrl + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args.inst),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var initializersCount = listeners.length;\r\n if (initializersCount > 0) {\r\n var details = {\r\n core: core,\r\n xhr: xhr,\r\n input: input,\r\n init: init,\r\n traceId: ajaxData.traceID,\r\n spanId: ajaxData.spanID,\r\n traceFlags: ajaxData.traceFlags\r\n };\r\n for (var i = 0; i < initializersCount; ++i) {\r\n var dependencyListener = listeners[i];\r\n if (dependencyListener && dependencyListener.fn) {\r\n try {\r\n dependencyListener.fn.call(null, details);\r\n }\r\n catch (e) {\r\n var core_1 = details.core;\r\n _throwInternal(core_1 && core_1.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency listener [#\" + i + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n ajaxData.traceID = details.traceId;\r\n ajaxData.spanID = details.spanId;\r\n ajaxData.traceFlags = details.traceFlags;\r\n }\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _dependencyListenerId;\r\n var _dependencyListeners;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _self[strTrackDependencyDataInternal](dependency, properties);\r\n };\r\n _self.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self.core, ajaxData, xhr, input, init);\r\n if (input) { // Fetch\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n init.headers = new Headers(init.headers || (input instanceof Request ? (input.headers || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n init.headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n init.headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData.traceFlags;\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, traceFlags));\r\n init.headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n xhr.setRequestHeader(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n xhr.setRequestHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData.traceFlags;\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData.traceID, ajaxData.spanID, traceFlags));\r\n xhr.setRequestHeader(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[strTrackDependencyDataInternal] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config.distributedTracingMode === 2 /* eDistributedTracingModes.W3C */\r\n || _config.distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id.length - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency.startTime)) {\r\n dependency.startTime = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self.core.track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n var theInitializer = {\r\n id: _dependencyListenerId++,\r\n fn: dependencyListener\r\n };\r\n _dependencyListeners.push(theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_dependencyListeners, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _dependencyListeners.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host.toLowerCase();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyListenerId = 0;\r\n _dependencyListeners = [];\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self.core);\r\n // Reset to the empty config\r\n _config = AjaxMonitor.getEmptyConfig();\r\n var defaultConfig = AjaxMonitor.getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config.distributedTracingMode;\r\n _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;\r\n _enableAjaxErrorStatusText = _config.enableAjaxErrorStatusText;\r\n _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;\r\n _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;\r\n _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;\r\n _excludeRequestFromAutoTrackingPatterns = _config.excludeRequestFromAutoTrackingPatterns;\r\n _addRequestContext = _config.addRequestContext;\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey.length > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config.disableAjaxTracking;\r\n _disableFetchTracking = !!_config.disableFetchTracking;\r\n }\r\n function _populateContext() {\r\n var propExt = _self.core.getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin.context; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key.toLowerCase() === header.toLowerCase()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self.includeCorrelationHeaders(fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {}).status, input, response, fetchData_1, function () {\r\n var ajaxResponse = {\r\n statusText: response.statusText,\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.\")\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (args, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState.openDone) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (args, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState.sendDone = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, \"Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (args) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState.abortDone = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, \"Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (args, header, value) {\r\n if (!_disableAjaxTracking && _enableRequestHeaderTracking) {\r\n var xhr = args.inst;\r\n if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n xhr[strAjaxData].requestHeaders[header] = value;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\").toLowerCase();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particalar instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self.core && _self.core.getTraceCtx) {\r\n distributedTraceCtx = _self.core.getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx.getTraceId()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.traceFlags = distributedTraceCtx && distributedTraceCtx.getTraceFlags();\r\n ajaxData.method = method;\r\n ajaxData.requestUrl = url;\r\n ajaxData.xhrMonitoringState.openDone = true;\r\n ajaxData.requestHeaders = {};\r\n ajaxData.async = async;\r\n ajaxData.errorStatusText = _enableAjaxErrorStatusText;\r\n xhr[strAjaxData] = ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState.stateChangeAttached = eventOn(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText.toLowerCase(), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, \"Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr.responseText;\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = xhr.status;\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, \"Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.\", errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData.CreateTrackItem(\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr.statusText,\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr.response\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr.getAllResponseHeaders();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr.status, xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, \"Failed to add custom defined request context as configured call back may missing a null check.\");\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency.properties = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr.getAllResponseHeaders();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData.requestUrl && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries.length === 1) {\r\n ajaxData.perfMark = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData.perfMark;\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config.ajaxPerfLookupDelay;\r\n var requestUrl = ajaxData.requestUrl;\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries.length - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry.name, requestUrl) !== -1 || _indexOf(requestUrl, entry.name) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry.name === perfMark.name) {\r\n // We hit the start event\r\n ajaxData.perfTiming = perfTiming;\r\n break;\r\n }\r\n if (entry.startTime < perfMark.startTime - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData.perfTiming || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark.name);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx.getTraceId()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.traceFlags = distributedTraceCtx && distributedTraceCtx.getTraceFlags();\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n ajaxData.errorStatusText = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData.requestUrl = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData.requestUrl = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init.method) {\r\n method = init.method;\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input.method;\r\n }\r\n ajaxData.method = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init.headers : 0) || (input instanceof Request ? (input.headers || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData.requestHeaders = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, \"Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.\", errorProps);\r\n }\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData.CreateTrackItem(\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, \"Failed to add custom defined request context as configured call back may missing a null check.\");\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency.properties = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response.headers) {\r\n try {\r\n var responseHeader = response.headers.get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.getDefaultConfig = function () {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: false,\r\n excludeRequestFromAutoTrackingPatterns: undefined,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n correlationHeaderExcludedDomains: [\r\n \"*.blob.core.windows.net\",\r\n \"*.blob.core.chinacloudapi.cn\",\r\n \"*.blob.core.cloudapi.de\",\r\n \"*.blob.core.usgovcloudapi.net\"\r\n ],\r\n correlationHeaderDomains: undefined,\r\n correlationHeaderExcludePatterns: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25,\r\n ignoreHeaders: [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n addRequestContext: undefined\r\n };\r\n return config;\r\n };\r\n AjaxMonitor.getEmptyConfig = function () {\r\n var emptyConfig = this.getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeUrl, dateTimeUtilsDuration, urlGetAbsoluteUrl, urlGetCompleteUrl, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { objKeys, arrForEach, isNumber, isString, normalizeJsName, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar strProperties = \"properties\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData.perfTiming;\r\n var props = dependency[strProperties] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strDuration = \"duration\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[strDuration];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, strDuration, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData.perfMark) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[strProperties] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self.openDone = false;\r\n self.setRequestHeaderDone = false;\r\n self.sendDone = false;\r\n self.abortDone = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self.stateChangeAttached = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceID, spanID, logger) {\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self.perfMark = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self.requestHeaders = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self.ajaxTotalDuration = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self.requestUrl = null;\r\n self.requestSize = 0;\r\n self.method = null;\r\n self.status = null;\r\n self.requestSentTime = null;\r\n self.responseStartedTime = null;\r\n self.responseFinishedTime = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self.traceID = traceID;\r\n self.spanID = spanID;\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self.requestUrl ? urlGetAbsoluteUrl(self.requestUrl) : null;\r\n };\r\n self.getPathName = function () {\r\n return self.requestUrl ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self.method, self.requestUrl)) : null;\r\n };\r\n self.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self.ajaxTotalDuration < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self.traceID + \".\" + self.spanID,\r\n target: self.getAbsoluteUrl(),\r\n name: self.getPathName(),\r\n type: ajaxType,\r\n startTime: null,\r\n duration: self.ajaxTotalDuration,\r\n success: (+(self.status)) >= 200 && (+(self.status)) < 400,\r\n responseCode: (+(self.status)),\r\n method: self.method\r\n },\r\n _a[strProperties] = { HttpMethod: self.method },\r\n _a);\r\n if (self.requestSentTime) {\r\n // Set the correct dependency start time\r\n dependency.startTime = new Date();\r\n dependency.startTime.setTime(self.requestSentTime);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].requestHeaders = self.requestHeaders;\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response.correlationContext;\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response.headerMap) {\r\n if (objKeys(response.headerMap).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].responseHeaders = response.headerMap;\r\n }\r\n }\r\n if (self.errorStatusText && self.status >= 400) {\r\n var responseType = response.type;\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n dependency[strProperties][strResponseText] = response[strResponseText] ? response.statusText + \" - \" + response[strResponseText] : response.statusText;\r\n }\r\n if (responseType === \"json\") {\r\n dependency[strProperties][strResponseText] = response.response ? response.statusText + \" - \" + JSON.stringify(response.response) : response.statusText;\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Version = \"2.8.4\";\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetCookieMgr, isFunction, newId, dumpObj, getExceptionName, dateNow, safeGetLogger, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config.sessionExpirationMs)) {\r\n config.sessionExpirationMs = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config.sessionRenewalMs)) {\r\n config.sessionRenewalMs = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self.config = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config.sessionCookiePostfix && _self.config.sessionCookiePostfix()) ?\r\n _self.config.sessionCookiePostfix() :\r\n ((_self.config.namePrefix && _self.config.namePrefix()) ? _self.config.namePrefix() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self.automaticSession = new Session();\r\n _self.update = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self.automaticSession;\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config.sessionExpirationMs();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config.sessionRenewalMs();\r\n var timeSinceAcqMs = nowMs - session.acquisitionDate;\r\n var timeSinceRenewalMs = nowMs - session.renewalDate;\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self.automaticSession;\r\n _setStorage(session.id, session.acquisitionDate, session.renewalDate);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens.length >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session.acquisitionDate = acqMs;\r\n session.renewalDate = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self.config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig.idLength ? theConfig.idLength() : 22);\r\n _self.automaticSession.acquisitionDate = nowMs;\r\n _setCookie(_self.automaticSession, nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session.acquisitionDate;\r\n session.renewalDate = nowMs;\r\n var config = _self.config;\r\n var renewalPeriodMs = config.sessionRenewalMs();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config.sessionExpirationMs()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config.cookieDomain ? config.cookieDomain() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config.sessionExpirationMs() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal].join(\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetCookieMgr, safeGetLogger, newId, toISOString, _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self.config = config;\r\n var userCookiePostfix = (_self.config.userCookiePostfix && _self.config.userCookiePostfix()) ? _self.config.userCookiePostfix() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self.isNewUser = false;\r\n var params = cookie.split(User.cookieSeparator);\r\n if (params.length > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self.isUserCookieSet = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n var id = getNewId(theConfig.idLength ? config.idLength() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self.isNewUser = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self.isUserCookieSet = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie.join(User.cookieSeparator));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self.accountId = config.accountId ? config.accountId() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n var authCookie = _cookieManager.get(User.authUserCookieName);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User.cookieSeparator);\r\n if (authCookieString[0]) {\r\n _self.authenticatedId = authCookieString[0];\r\n }\r\n if (authCookieString.length > 1 && authCookieString[1]) {\r\n _self.accountId = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self.authenticatedId = authenticatedUserId;\r\n var authCookie = _self.authenticatedId;\r\n if (accountId) {\r\n _self.accountId = accountId;\r\n authCookie = [_self.authenticatedId, _self.accountId].join(User.cookieSeparator);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User.authUserCookieName, encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self.authenticatedId = null;\r\n _self.accountId = null;\r\n _cookieManager.del(User.authUserCookieName);\r\n };\r\n _self.update = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self.isUserCookieSet) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie.join(User.cookieSeparator));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * PropertiesPlugin.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, isNullOrUndefined, _InternalLogMessage, getNavigator, objForEachKey, getSetValue, _logInternalMessage } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { PageView, BreezeChannelIdentifier, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _previousTraceCtx = core.getTraceCtx(false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context.telemetryTrace, _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext.sessionManager) {\r\n theContext.sessionManager.update();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx.isUserCookieSet) {\r\n userCtx.update(theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx.isNewUser) {\r\n userCtx.isNewUser = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core.getTraceCtx) {\r\n var traceCtx = core.getTraceCtx(false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx.applySessionContext(evt, itemCtx);\r\n ctx.applyApplicationContext(evt, itemCtx);\r\n ctx.applyDeviceContext(evt, itemCtx);\r\n ctx.applyOperationContext(evt, itemCtx);\r\n ctx.applyUserContext(evt, itemCtx);\r\n ctx.applyOperatingSystemContxt(evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx.applyLocationContext(evt, itemCtx); // legacy tags\r\n ctx.applyInternalContext(evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var defaultConfig = {\r\n instrumentationKey: function () { return undefined; },\r\n accountId: function () { return null; },\r\n sessionRenewalMs: function () { return 30 * 60 * 1000; },\r\n samplingPercentage: function () { return 100; },\r\n sessionExpirationMs: function () { return 24 * 60 * 60 * 1000; },\r\n cookieDomain: function () { return null; },\r\n sdkExtension: function () { return null; },\r\n isBrowserLinkTrackingEnabled: function () { return false; },\r\n appId: function () { return null; },\r\n getSessionId: function () { return null; },\r\n namePrefix: function () { return undefined; },\r\n sessionCookiePostfix: function () { return undefined; },\r\n userCookiePostfix: function () { return undefined; },\r\n idLength: function () { return 22; },\r\n getNewId: function () { return null; }\r\n };\r\n return defaultConfig;\r\n };\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * TelemetryContext.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isString, objKeys, hasWindow, _InternalLogMessage, setValue, getSetValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { Extensions, CtxTagKeys, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { User } from \"./Context/User\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name]).length === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this.getSessionId = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self.sessionManager = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self.telemetryTrace = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self.getSessionId = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self.sessionManager || {}).automaticSession;\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self.applySessionContext = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self.getSessionId(), isString);\r\n };\r\n _self.applyOperatingSystemContxt = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self.applyApplicationContext = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self.applyDeviceContext = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self.applyInternalContext = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self.applyLocationContext = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self.applyOperationContext = function (evt, itemCtx) {\r\n var telemetryTrace = _self.telemetryTrace;\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self.applyUserContext = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user.accountId, isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user.authenticatedId, isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\nexport var ObjAssign = ObjClass[\"assign\"];\r\nexport var ObjCreate = ObjClass[\"create\"];\r\nexport var ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport var ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\nvar _cachedGlobal = null;\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached) {\r\n if (useCached === void 0) { useCached = true; }\r\n if (!_cachedGlobal || !useCached) {\r\n if (typeof globalThis !== strShimUndefined && globalThis) {\r\n _cachedGlobal = globalThis;\r\n }\r\n if (typeof self !== strShimUndefined && self) {\r\n _cachedGlobal = self;\r\n }\r\n if (typeof window !== strShimUndefined && window) {\r\n _cachedGlobal = window;\r\n }\r\n if (typeof global !== strShimUndefined && global) {\r\n _cachedGlobal = global;\r\n }\r\n }\r\n return _cachedGlobal;\r\n}\r\nexport function throwTypeError(message) {\r\n throw new TypeError(message);\r\n}\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj) {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n function tmpFunc() { }\r\n tmpFunc[strShimPrototype] = obj;\r\n return new tmpFunc();\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype } from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasSymbol = !!SymbolObj;\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = ObjAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() { this.constructor = d; }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (ObjCreate) {\r\n ObjDefineProperty(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Web, 2.8.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AppInsightsCore, hasWindow, hasDocument, isReactNative, doPerf, objForEachKey, proxyAssign, proxyFunctions, arrForEach, isString, isFunction, isNullOrUndefined, isArray, throwError, addPageUnloadEventListener, addPageHideEventListener, createUniqueNamespace, removePageUnloadEventListener, removePageHideEventListener, mergeEvtNamespace, _throwInternal, arrIndexOf } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { Util, CorrelationIdHelper, UrlHelper, DateTimeUtils, ConnectionStringParser, RequestHeaders, DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, Envelope, Event, Exception, Metric, PageView, RemoteDependencyData, Trace, PageViewPerformance, Data, SeverityLevel, ConfigurationManager, ContextTagKeys, DataSanitizer, TelemetryItemCreator, CtxTagKeys, Extensions, DistributedTracingModes, PropertiesPluginIdentifier, BreezeChannelIdentifier, AnalyticsPluginIdentifier, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\n\"use strict\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n \"snippet\", \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet.version || \"\");\r\n snippet.queue = snippet.queue || [];\r\n snippet.version = snippet.version || 2.0; // Default to new version\r\n var config = snippet.config || {};\r\n if (config.connectionString) {\r\n var cs = parseConnectionString(config.connectionString);\r\n var ingest = cs.ingestionendpoint;\r\n config.endpointUrl = ingest ? \"\".concat(ingest, \"/v2/track\") : config.endpointUrl; // only add /v2/track when from connectionstring\r\n config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;\r\n }\r\n _self.appInsights = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config.disableIkeyDeprecationMessage) ? true : config.disableIkeyDeprecationMessage;\r\n if (!config.connectionString && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self.snippet = snippet;\r\n _self.config = config;\r\n _getSKUDefaults();\r\n _self.flush = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel.flush(async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel.onunloadFlush) {\r\n channel.onunloadFlush();\r\n }\r\n else {\r\n channel.flush(async);\r\n }\r\n });\r\n });\r\n };\r\n _self.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self.context && _self.context.internal) {\r\n _self.context.internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self.config.extensions && _self.config.extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions.push(_sender);\r\n extensions.push(properties);\r\n extensions.push(dependencies);\r\n extensions.push(_self.appInsights);\r\n // initialize core\r\n _core.initialize(_self.config, extensions, logger, notificationManager);\r\n _self.context = properties.context;\r\n if (_internalSdkSrc && _self.context) {\r\n _self.context.internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self.snippet);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self.pollInternalLogs();\r\n _self.addHousekeepingBeforeUnload(_this);\r\n });\r\n return _self;\r\n };\r\n _self.updateSnippetDefinitions = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet.queue)) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet.queue.length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet.queue[i];\r\n call();\r\n }\r\n _self.snippet.queue = undefined;\r\n delete _self.snippet.queue;\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance.onunloadFlush(false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core.getPlugin)) {\r\n var loadedPlugin = _this.core.getPlugin(PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin.context && propertiesPlugin.context._sessionManager) {\r\n propertiesPlugin.context._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights.config.disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core.evtNamespace && _core.evtNamespace());\r\n }\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnBeforeUnload) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance.appInsights.core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config.disableFlushOnUnload) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self.onunloadFlush(isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self.appInsights, [\r\n \"getCookieMgr\",\r\n \"trackEvent\",\r\n \"trackPageView\",\r\n \"trackPageViewPerformance\",\r\n \"trackException\",\r\n \"_onerror\",\r\n \"trackTrace\",\r\n \"trackMetric\",\r\n \"startTrackPage\",\r\n \"stopTrackPage\",\r\n \"startTrackEvent\",\r\n \"stopTrackEvent\"\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n \"trackDependencyData\",\r\n \"addDependencyListener\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n \"addTelemetryInitializer\",\r\n \"pollInternalLogs\",\r\n \"stopPollingInternalLogs\",\r\n \"getPlugin\",\r\n \"addPlugin\",\r\n \"evtNamespace\",\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties.context;\r\n return context ? context.user : null;\r\n }, [\r\n \"setAuthenticatedUserContext\",\r\n \"clearAuthenticatedUserContext\"\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config.diagnosticLogInterval =\r\n _self.config.diagnosticLogInterval && _self.config.diagnosticLogInterval > 0 ? _self.config.diagnosticLogInterval : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n// Removed Stub for Initialization.prototype.getCookieMgr.\r\n// Removed Stub for Initialization.prototype.trackEvent.\r\n// Removed Stub for Initialization.prototype.trackPageView.\r\n// Removed Stub for Initialization.prototype.trackPageViewPerformance.\r\n// Removed Stub for Initialization.prototype.trackException.\r\n// Removed Stub for Initialization.prototype._onerror.\r\n// Removed Stub for Initialization.prototype.trackTrace.\r\n// Removed Stub for Initialization.prototype.trackMetric.\r\n// Removed Stub for Initialization.prototype.startTrackPage.\r\n// Removed Stub for Initialization.prototype.stopTrackPage.\r\n// Removed Stub for Initialization.prototype.startTrackEvent.\r\n// Removed Stub for Initialization.prototype.stopTrackEvent.\r\n// Removed Stub for Initialization.prototype.addTelemetryInitializer.\r\n // Properties Plugin\r\n// Removed Stub for Initialization.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for Initialization.prototype.clearAuthenticatedUserContext.\r\n // Dependencies Plugin\r\n// Removed Stub for Initialization.prototype.trackDependencyData.\r\n // Misc\r\n// Removed Stub for Initialization.prototype.flush.\r\n// Removed Stub for Initialization.prototype.onunloadFlush.\r\n// Removed Stub for Initialization.prototype.loadAppInsights.\r\n// Removed Stub for Initialization.prototype.updateSnippetDefinitions.\r\n// Removed Stub for Initialization.prototype.emptyQueue.\r\n// Removed Stub for Initialization.prototype.pollInternalLogs.\r\n// Removed Stub for Initialization.prototype.stopPollingInternalLogs.\r\n// Removed Stub for Initialization.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for Initialization.prototype.getSender.\r\n// Removed Stub for Initialization.prototype.unload.\r\n// Removed Stub for Initialization.prototype.getPlugin.\r\n// Removed Stub for Initialization.prototype.addPlugin.\r\n// Removed Stub for Initialization.prototype.evtNamespace.\r\n// Removed Stub for Initialization.prototype.addUnloadCb.\r\n// Removed Stub for Initialization.prototype.addDependencyListener.\r\n// Removed Stub for Initialization.prototype.getTraceCtx.\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url.indexOf(cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url.indexOf(\"/scripts/\") === -1) {\r\n if (url.indexOf(\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url.indexOf(\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n","/*!\n * Microsoft Dynamic Proto Utility, 1.1.6\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Internal Global used to generate a unique dynamic class name, every new class will increase this value\r\n * @ignore\r\n */\r\nvar _dynamicNames = 0;\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nfunction dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] is not in class hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _dynamicNames;\r\n _dynamicNames++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\nvar perfDefaults = {\r\n setInstFuncs: true,\r\n useBaseInst: true\r\n};\r\n// And expose for testing\r\ndynamicProto[DynProtoDefaultOptions] = perfDefaults;\n\nexport { dynamicProto as default };\n","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\n\nconst support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n\n get blob() {\n return blob();\n }\n};\n\nlet blob = function() {\n let supported;\n\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n const buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([ buffer ], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n\n blob = () => supported;\n return supported;\n};\n\n/* eslint-disable */\n\n// private property\nconst _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nconst encode = function(input) {\n let output = [];\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0, len = input.length, remainingBytes = len;\n\n let isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nconst decode = function(input) {\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0, resultIndex = 0;\n\n let dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n let 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 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n let output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\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\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n/* eslint-disable */\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nconst newBlob = function(part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nlet fromCharCodeSupportsTypedArrays = () => {\n let supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n\n fromCharCodeSupportsTypedArrays = () => supported;\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\n\nconst applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nconst transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nconst getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nconst checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nconst MAX_VALUE_16BITS = 65535;\nconst MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nconst pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nconst delay = function(callback, args, self) {\n setTimeout(function() {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nconst extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nconst prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/* eslint-disable */\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nclass GenericWorker {\n constructor(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n }\n\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push(chunk) {\n this.emit(\"data\", chunk);\n }\n\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end() {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n }\n\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error(e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n }\n\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on(name, listener) {\n this._listeners[name].push(listener);\n return this;\n }\n\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp() {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n }\n\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit(name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n }\n\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe(next) {\n return next.registerPrevious(this);\n }\n\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious(previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause() {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n }\n\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume() {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n }\n\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush() {}\n\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk(chunk) {\n this.push(chunk);\n }\n\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo(key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n }\n\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo() {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n }\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock() {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n }\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString() {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nlet utf8len = function(c) {\n const _utf8len = new Array(256);\n for (let i = 0; i < 256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function(c) {\n return _utf8len[c];\n };\n\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nconst utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nconst utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nclass Utf8DecodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk (chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : utf8decode(usableData),\n meta : chunk.meta\n });\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data : utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n }\n}\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nclass Utf8EncodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 encode\");\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nclass ConvertWorker extends GenericWorker {\n constructor(destType) {\n super(\"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/* eslint-disable */\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return encode(content);\n default :\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nclass StreamHelper {\n constructor (worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n }\n\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate(updateCb) {\n return accumulate(this, updateCb);\n }\n\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on(evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n }\n\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume() {\n delay(this._worker.resume, [], this._worker);\n return this;\n }\n\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause() {\n this._worker.pause();\n return this;\n }\n}\n\nconst base64 = false;\nconst binary = false;\nconst dir = false;\nconst createFolders = true;\nconst date = null;\nconst compression = null;\nconst compressionOptions = null;\nconst comment = null;\nconst unixPermissions = null;\nconst dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n dir: dir,\n createFolders: createFolders,\n date: date,\n compression: compression,\n compressionOptions: compressionOptions,\n comment: comment,\n unixPermissions: unixPermissions,\n dosPermissions: dosPermissions\n});\n\n/* eslint-disable */\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nconst DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nclass DataWorker extends GenericWorker {\n constructor(dataP) {\n super(\"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this.data = null;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n }\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n _tickAndRepeat() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n };\n\n /**\n * Read and push a chunk.\n */\n _tick() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n }\n}\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nclass DataLengthProbe extends GenericWorker {\n constructor(propName) {\n super(\"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n if (chunk) {\n const length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n super.processChunk(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nlet makeTable = function() {\n // Use ordinary array, since untyped makes no boost here\n const table = [];\n\n for (let n =0; n < 256; n++){\n let c = n;\n for(let k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function() {\n return table;\n };\n\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n const isArray = getTypeOf(input) !== \"string\";\n\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nclass Crc32Probe extends GenericWorker {\n constructor() {\n super(\"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nclass CompressedObject {\n constructor(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n }\n\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker() {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n }\n\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker() {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n\n /**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\n static createWorkerFrom(uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n }\n}\n\n/* eslint-disable */\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nclass ZipObject {\n constructor(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n }\n\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream(type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n }\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async(type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n }\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker(compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n }\n\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker() {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n}\n\nlet arrayType = function() {\n const useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n const resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n arrayType = function() {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nclass FlateWorker extends GenericWorker {\n constructor(action, options) {\n super(\"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n super.flush();\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n }\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this._pako = null;\n }\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n _createPako() {\n const params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = (data) => {\n this.push({\n data: data,\n meta: this.meta\n });\n };\n }\n}\n\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function(compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n\n uncompressWorker: function() {\n return new FlateWorker(\"Inflate\", {});\n }\n};\n\nconst STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function() {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function() {\n return new GenericWorker(\"STORE decompression\");\n }\n};\n\nvar compressions = {\n STORE,\n DEFLATE\n};\n\nconst LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nconst CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nconst CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nconst ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nconst ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nconst DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/* eslint-disable */\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nclass ZipFileWorker extends GenericWorker {\n constructor(streamFiles, comment, platform, encodeFileName) {\n super(\"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n this._sources = [];\n }\n\n /**\n * @see GenericWorker.push\n */\n push(chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n super.push({\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n }\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n openedSource(streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n }\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n closedSource(streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n }\n\n /**\n * Prepare the next source to be read.\n */\n prepareNextSource() {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n }\n\n /**\n * @see GenericWorker.registerPrevious\n */\n registerPrevious(previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n }\n\n /**\n * @see GenericWorker.error\n */\n error(e) {\n var sources = this._sources;\n if(!super.error(e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n }\n\n /**\n * @see GenericWorker.lock\n */\n lock() {\n super.lock();\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nconst generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\n/* eslint-disable */\n\nclass DataReader {\n constructor(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n }\n\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset(offset) {\n this.checkIndex(this.index + offset);\n }\n\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n }\n\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n }\n\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip(n) {\n this.setIndex(this.index + n);\n }\n\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt(i) {\n // see implementations\n }\n\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n }\n\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString(size) {\n return transformTo(\"string\", this.readData(size));\n }\n\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData(size) {\n // see implementations\n }\n\n /**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\n lastIndexOfSignature(sig) {\n // see implementations\n }\n\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature(sig) {\n // see implementations\n }\n\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n}\n\n/* eslint-disable */\n\nclass ArrayReader extends DataReader {\n constructor(data) {\n super(data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data[this.zero + i];\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\nclass StringReader extends DataReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data.charCodeAt(this.zero + i);\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n const data = this.readData(4);\n return sig === data;\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n const result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/* eslint-disable */\n\nclass Uint8ArrayReader extends ArrayReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n const type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\n/* eslint-disable */\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntry {\n constructor(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n }\n\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n }\n\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n }\n\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n }\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes() {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n }\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n }\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n }\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n}\n\n/* eslint-disable */\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntries {\n constructor(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n }\n\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n }\n\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n }\n\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n }\n\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n }\n\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n }\n\n /**\n * Read the central directory.\n */\n readCentralDir() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n }\n\n /**\n * Read the end of central directory.\n */\n readEndOfCentral() {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n }\n\n prepareReader(data) {\n this.reader = readerFor(data);\n }\n\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n}\n\n/* eslint-disable */\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n}\n\n/* eslint-disable */\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nclass JSZip {\n constructor() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n const newObj = new JSZip();\n for (const i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n }\n\n /**\n * @see loadAsync\n */\n load() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n }\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n }\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n }\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n }\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n }\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream(options) {\n var worker, opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n }\n\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n }\n\n loadAsync(data, options) {\n return load.apply(this, [data, options]);\n }\n\n static loadAsync(content, options) {\n return new JSZip().loadAsync(content, options);\n }\n \n static get support() {\n return support;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get version() {\n return \"3.2.2-esm\";\n }\n\n static get external() {\n return external;\n }\n}\n\nexport { JSZip as default };\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Optional, Input, Output, HostBinding, HostListener, isDevMode, Component, ContentChildren, NgModule, InjectionToken, Inject, forwardRef, ElementRef, ViewContainerRef, ContentChild, ViewChild } from '@angular/core';\nimport * as i8 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, guid, EventsModule } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { filter, take } from 'rxjs/operators';\nimport * as i4 from '@angular/animations';\nimport { sequence, query, style, stagger, animate } from '@angular/animations';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-buttons',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440722,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nconst resolvedPromise = Promise.resolve(null);\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst tick = (f) => (resolvedPromise.then(f));\n/**\n * @hidden\n */\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ?\n (el, sel) => el.matches(sel)\n : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n/**\n * @hidden\n */\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n case 'fillMode':\n return {\n toRemove: `k-${componentType}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${newValue}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n *\n * Returns the themeColor classes to be added and removed\n */\nconst getThemeColorClasses = (componentType, prevFillMode, fillMode, previousValue, newValue) => {\n return {\n toRemove: `k-${componentType}-${prevFillMode}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''\n };\n};\n/**\n * @hidden\n *\n * Returns true if the used browser is Firefox.\n */\nconst isFirefox = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');\n};\n\n/**\n * @hidden\n */\nclass KendoButtonService {\n constructor() {\n this.buttonClicked = new Subject();\n this.buttonClicked$ = this.buttonClicked.asObservable();\n }\n click(button) {\n this.buttonClicked.next(button);\n }\n}\nKendoButtonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nKendoButtonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, decorators: [{\n type: Injectable\n }] });\n\nconst SPAN_TAG_NAME = 'SPAN';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_THEME_COLOR$1 = 'base';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the Kendo UI Button component for Angular.\n */\nclass ButtonDirective {\n constructor(element, renderer, service, localization, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n /**\n * Provides visual styling that indicates if the Button is active.\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * @hidden\n */\n this.role = 'button';\n /**\n * Fires each time the selected state of a toggleable button is changed.\n *\n * The event argument is the new selected state (boolean).\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks the button.\n */\n this.click = new EventEmitter();\n this.isDisabled = false;\n this.isIcon = false;\n this.isIconClass = false;\n this._size = DEFAULT_SIZE$1;\n this._rounded = DEFAULT_ROUNDED$2;\n this._fillMode = DEFAULT_FILL_MODE$2;\n this._themeColor = DEFAULT_THEME_COLOR$1;\n this._focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.element = element.nativeElement;\n this.renderer = renderer;\n }\n /**\n * Backwards-compatible alias\n *\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n /**\n * @hidden\n */\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Sets the selected state of the Button.\n */\n get selected() {\n return this._selected || false;\n }\n set selected(value) {\n this._selected = value;\n }\n /**\n * @hidden\n */\n set tabIndex(index) {\n this.element.tabIndex = index;\n }\n get tabIndex() {\n return this.element.tabIndex;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme.\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n if (icon) {\n this.iconSetter(icon, () => {\n this.isIcon = true;\n const classes = 'k-button-icon k-icon k-i-' + icon;\n this.addIcon(classes);\n });\n }\n else {\n this.isIcon = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClassName) {\n if (iconClassName) {\n this.iconSetter(iconClassName, () => {\n this.isIconClass = true;\n const classes = 'k-button-icon ' + iconClassName;\n this.addIcon(classes);\n });\n }\n else {\n this.isIconClass = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n if (imageUrl) {\n this.iconSetter(imageUrl, this.addImgIcon.bind(this));\n }\n else {\n this.removeImageNode();\n }\n }\n /**\n * If set to `true`, it disables the Button.\n */\n set disabled(disabled) {\n //Required, because in FF focused buttons are not blurred on disabled\n if (disabled && isDocumentAvailable() && isFirefox(navigator.userAgent)) {\n this.blur();\n }\n this.isDisabled = disabled;\n this.renderer.setProperty(this.element, 'disabled', disabled);\n }\n get disabled() {\n return this.isDisabled;\n }\n /**\n * The size property specifies the padding of the Button\n * ([see example]({% slug appearance_button %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Button\n * ([see example]({% slug appearance_button %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Button\n * ([see example]({% slug appearance_button %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `clear`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_button %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `primary`\n * * `secondary`\n * * `tertiary`\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `dark`\n * * `light`\n * * `inverse`\n * * `none`\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR$1;\n this.handleThemeColor(newThemeColor);\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n set isFocused(isFocused) {\n this.toggleClass('k-focus', isFocused);\n this._focused = isFocused;\n }\n get isFocused() {\n return this._focused;\n }\n get classButton() {\n return true;\n }\n get isToggleable() {\n return this.toggleable;\n }\n get roleSetter() {\n return this.role;\n }\n get classDisabled() {\n return this.isDisabled;\n }\n get classActive() {\n return this.selected;\n }\n get getDirection() {\n return this.direction;\n }\n /**\n * @hidden\n */\n onFocus() {\n this.isFocused = true;\n }\n /**\n * @hidden\n */\n onBlur() {\n this.isFocused = false;\n }\n /**\n * @hidden\n */\n set primary(value) {\n this.themeColor = value ? 'primary' : 'base';\n }\n /**\n * @hidden\n */\n set look(value) {\n switch (value) {\n case 'default':\n this.fillMode = 'solid';\n break;\n default:\n this.fillMode = value;\n break;\n }\n }\n ngOnInit() {\n const isSpan = this.element.tagName === SPAN_TAG_NAME;\n this.addTextSpan();\n if (!this.element.hasAttribute('role') && this.togglable) {\n this.toggleAriaPressed(this.toggleable);\n }\n if (this.role) {\n this.setAttribute('role', this.role);\n }\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.element, 'click', this._onButtonClick.bind(this)));\n this.subs.add(this.renderer.listen(this.element, 'keydown', (event) => {\n const isSpaceOrEnter = event.keyCode === Keys.Space || event.keyCode === Keys.Enter;\n if (isSpan && isSpaceOrEnter) {\n this.click.emit(event);\n this._onButtonClick();\n }\n }));\n });\n }\n ngOnChanges(change) {\n if (isChanged('togglable', change) || isChanged('toggleable', change)) {\n this.toggleAriaPressed(this.toggleable);\n }\n }\n ngAfterViewInit() {\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterViewChecked() {\n this.setIconTextClasses();\n }\n ngOnDestroy() {\n this.imageNode = null;\n this.iconNode = null;\n this.iconSpanNode = null;\n this.renderer = null;\n this.subs.unsubscribe();\n clearTimeout(this.deferTimeout);\n }\n /**\n * Focuses the Button component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.focus();\n this.isFocused = true;\n }\n }\n /**\n * Blurs the Button component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.blur();\n this.isFocused = false;\n }\n }\n /**\n * @hidden\n */\n setAttribute(attribute, value) {\n this.renderer.setAttribute(this.element, attribute, value);\n }\n /**\n * @hidden\n */\n removeAttribute(attribute) {\n this.renderer.removeAttribute(this.element, attribute);\n }\n /**\n * @hidden\n *\n * Internal setter that triggers selectedChange\n */\n setSelected(value) {\n const changed = this.selected !== value;\n this.selected = value;\n this.setAttribute('aria-pressed', this.selected.toString());\n this.toggleClass('k-selected', this.selected);\n if (changed && hasObservers(this.selectedChange)) {\n this.ngZone.run(() => {\n this.selectedChange.emit(value);\n });\n }\n }\n toggleAriaPressed(shouldSet) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (shouldSet) {\n this.setAttribute('aria-pressed', this.selected.toString());\n }\n else {\n this.removeAttribute('aria-pressed');\n }\n }\n hasText() {\n return isDocumentAvailable() && this.element.textContent.trim().length > 0;\n }\n addImgIcon(imageUrl) {\n let renderer = this.renderer;\n if (!this.iconSpanNode) {\n this.iconSpanNode = renderer.createElement('span');\n renderer.setProperty(this.iconSpanNode, 'className', 'k-button-icon k-icon');\n }\n if (this.imageNode) {\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n }\n else if (isDocumentAvailable()) {\n this.imageNode = renderer.createElement('img');\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n renderer.setProperty(this.imageNode, 'className', 'k-image');\n renderer.setAttribute(this.imageNode, 'role', 'presentation');\n }\n this.iconSpanNode.appendChild(this.imageNode);\n this.prependChild(this.iconSpanNode);\n }\n addIcon(classNames) {\n let renderer = this.renderer;\n if (this.iconNode) {\n renderer.setProperty(this.iconNode, 'className', classNames);\n }\n else if (isDocumentAvailable()) {\n this.iconNode = renderer.createElement('span');\n renderer.setProperty(this.iconNode, 'className', classNames);\n renderer.setAttribute(this.iconNode, 'role', 'presentation');\n this.prependChild(this.iconNode);\n }\n }\n addTextSpan() {\n if (isDocumentAvailable() && this.hasText()) {\n const span = this.renderer.createElement('span');\n this.renderer.addClass(span, 'k-button-text');\n const buttonContentNodes = Array.from(this.element.childNodes);\n buttonContentNodes.forEach(node => this.renderer.appendChild(span, node));\n this.renderer.appendChild(this.element, span);\n }\n }\n prependChild(node) {\n this.defer(() => {\n if (this.renderer && node !== this.element.firstChild) {\n this.renderer.insertBefore(this.element, node, this.element.firstChild);\n }\n });\n }\n defer(callback) {\n this.ngZone.runOutsideAngular(() => {\n this.deferTimeout = setTimeout(callback, 0);\n });\n }\n iconSetter(icon, insertIcon) {\n if (icon) {\n insertIcon(icon);\n }\n this.setIconTextClasses();\n }\n removeImageNode() {\n if (this.imageNode && this.renderer.parentNode(this.imageNode)) {\n this.renderer.removeChild(this.element, this.imageNode);\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.imageNode = null;\n this.iconSpanNode = null;\n }\n }\n removeIconNode() {\n if (this.iconNode && this.renderer.parentNode(this.iconNode)) {\n this.renderer.removeChild(this.element, this.iconNode);\n this.iconNode = null;\n }\n if (this.iconSpanNode) {\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.iconSpanNode = null;\n }\n }\n updateIconNode() {\n if (!this.isIcon && !this.isIconClass) {\n this.removeIconNode();\n }\n }\n setIconTextClasses() {\n const hasIcon = this.isIcon || this.isIconClass || this.imageNode;\n this.toggleClass('k-icon-button', hasIcon && !this.hasText());\n }\n toggleClass(className, add) {\n if (add) {\n this.renderer.addClass(this.element, className);\n }\n else {\n this.renderer.removeClass(this.element, className);\n }\n }\n _onButtonClick() {\n if (!this.disabled && this.service) {\n this.ngZone.run(() => {\n this.service.click(this);\n });\n }\n if (this.togglable && !this.service) {\n this.setSelected(!this.selected);\n }\n }\n handleClasses(value, input) {\n const elem = this.element;\n const classes = getStylingClasses('button', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('button', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: KendoButtonService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: { toggleable: \"toggleable\", togglable: \"togglable\", selected: \"selected\", tabIndex: \"tabIndex\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", role: \"role\", primary: \"primary\", look: \"look\" }, outputs: { selectedChange: \"selectedChange\", click: \"click\" }, host: { listeners: { \"focus\": \"onFocus()\", \"blur\": \"onBlur()\" }, properties: { \"class.k-button\": \"this.classButton\", \"class.k-toggle-button\": \"this.isToggleable\", \"attr.role\": \"this.roleSetter\", \"attr.aria-disabled\": \"this.classDisabled\", \"class.k-disabled\": \"this.classDisabled\", \"class.k-selected\": \"this.classActive\", \"attr.dir\": \"this.getDirection\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoButton\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoButton',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoButton], span[kendoButton]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: KendoButtonService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { toggleable: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], role: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], click: [{\n type: Output\n }], classButton: [{\n type: HostBinding,\n args: ['class.k-button']\n }], isToggleable: [{\n type: HostBinding,\n args: ['class.k-toggle-button']\n }], roleSetter: [{\n type: HostBinding,\n args: ['attr.role']\n }], classDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], classActive: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], getDirection: [{\n type: HostBinding,\n args: ['attr.dir']\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], primary: [{\n type: Input\n }], look: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst tabindex = 'tabindex';\n/**\n * Represents the Kendo UI ButtonGroup component for Angular.\n */\nclass ButtonGroupComponent {\n constructor(service, localization, element) {\n this.service = service;\n this.element = element;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n /**\n * Fires every time keyboard navigation occurs.\n */\n this.navigate = new EventEmitter();\n this._tabIndex = 0;\n this.currentTabIndex = 0;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.subs.add(localization.changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabIndex(value) {\n this._tabIndex = value;\n this.currentTabIndex = value;\n }\n get tabIndex() {\n return this._tabIndex;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get stretchedClass() {\n return !!this.width;\n }\n get getRole() {\n return this.isSelectionSingle() ? 'radiogroup' : 'group';\n }\n get dir() {\n return this.direction;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get wrapperWidth() {\n return this.width;\n }\n get wrapperTabIndex() {\n return this.disabled ? undefined : this.currentTabIndex;\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (!this.disabled) {\n this.navigateFocus(event);\n }\n }\n /**\n * @hidden\n */\n onFocus() {\n this.currentTabIndex = -1;\n const focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const index = focusedIndex === -1 ? 0 : focusedIndex;\n this.focus(this.buttons.filter((_current, i) => {\n return i === index;\n }));\n }\n /**\n * @hidden\n */\n focusout(event) {\n if (event.relatedTarget && event.relatedTarget.parentNode !== this.element.nativeElement) {\n this.defocus(this.buttons.toArray());\n this.currentTabIndex = this.tabIndex;\n }\n }\n ngOnInit() {\n this.subs.add(this.service.buttonClicked$.subscribe((button) => {\n let newSelectionValue;\n if (this.isSelectionSingle()) {\n newSelectionValue = true;\n this.deactivate(this.buttons.filter(current => current !== button));\n }\n else {\n this.defocus(this.buttons.toArray());\n newSelectionValue = !button.selected;\n }\n if (button.togglable) {\n button.setSelected(newSelectionValue);\n }\n button.setAttribute(tabindex, '0');\n }));\n }\n ngOnChanges(change) {\n if (isChanged('disabled', change)) {\n this.buttons.forEach((button) => {\n if (isPresent(this.disabled)) {\n button.disabled = this.disabled;\n }\n });\n }\n }\n ngAfterContentInit() {\n this.buttons.forEach((button) => {\n if (button.selected) {\n button.setAttribute(tabindex, '0');\n }\n else {\n button.setAttribute(tabindex, '-1');\n }\n });\n }\n ngAfterViewChecked() {\n if (this.buttons.length) {\n this.buttons.first.renderer.addClass(this.buttons.first.element, 'k-group-start');\n this.buttons.last.renderer.addClass(this.buttons.last.element, 'k-group-end');\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n navigateFocus(event) {\n let focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const firstIndex = 0;\n const lastIndex = this.buttons.length - 1;\n const eventArgs = new PreventableEvent();\n if (event.keyCode === Keys.ArrowRight && focusedIndex < lastIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex + 1;\n }));\n }\n }\n if (event.keyCode === Keys.ArrowLeft && focusedIndex > firstIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex - 1;\n }));\n }\n }\n }\n deactivate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(false);\n button.setAttribute(tabindex, '-1');\n });\n }\n activate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(true);\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n defocus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '-1');\n });\n }\n focus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.isSelectionSingle() && this.buttons.filter(button => button.selected).length > 1) {\n throw new Error('Having multiple selected buttons with single selection mode is not supported');\n }\n }\n }\n isSelectionSingle() {\n return this.selection === 'single';\n }\n}\nButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, deps: [{ token: KendoButtonService }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", tabIndex: \"tabIndex\" }, outputs: { navigate: \"navigate\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"focus\": \"onFocus()\", \"focusout\": \"focusout($event)\" }, properties: { \"class.k-button-group\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-button-group-stretched\": \"this.stretchedClass\", \"attr.role\": \"this.getRole\", \"attr.dir\": \"this.dir\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"style.width\": \"this.wrapperWidth\", \"attr.tabindex\": \"this.wrapperTabIndex\" } }, providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ], queries: [{ propertyName: \"buttons\", predicate: ButtonDirective }], exportAs: [\"kendoButtonGroup\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoButtonGroup',\n providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ],\n selector: 'kendo-buttongroup',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: KendoButtonService }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { disabled: [{\n type: Input,\n args: ['disabled']\n }], selection: [{\n type: Input,\n args: ['selection']\n }], width: [{\n type: Input,\n args: ['width']\n }], tabIndex: [{\n type: Input\n }], navigate: [{\n type: Output\n }], buttons: [{\n type: ContentChildren,\n args: [ButtonDirective]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-button-group']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-button-group-stretched']\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], wrapperWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], wrapperTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], focusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Button directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Button module\n * import { ButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonModule], // import Button module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective], exports: [ButtonDirective] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonDirective],\n exports: [ButtonDirective]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ButtonGroupComponent`—The ButtonGroupComponent component class.\n */\nclass ButtonGroupModule {\n}\nButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, declarations: [ButtonGroupComponent], imports: [CommonModule, ButtonModule], exports: [ButtonGroupComponent] });\nButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, imports: [[CommonModule, ButtonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonGroupComponent],\n exports: [ButtonGroupComponent],\n imports: [CommonModule, ButtonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass FocusService {\n constructor() {\n this.onFocus = new EventEmitter();\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n resetFocus() {\n this.focused = -1;\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n}\nFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FocusableDirective {\n constructor(focusService, elementRef, renderer) {\n this.focusService = focusService;\n this.renderer = renderer;\n this.subs = new Subscription();\n this.element = elementRef.nativeElement;\n this.subscribeEvents();\n }\n ngOnInit() {\n if (this.index === this.focusService.focused) {\n this.renderer.addClass(this.element, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.focusService.onFocus.subscribe((index) => {\n if (this.index === index) {\n this.renderer.addClass(this.element, 'k-focus');\n this.element.focus();\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }));\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: { index: \"index\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoButtonFocusable]'\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { index: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n constructor() {\n this.onItemClick = new EventEmitter();\n this.onItemBlur = new EventEmitter();\n this.sizeClass = '';\n validatePackage(packageMetadata);\n }\n set size(size) {\n if (size) {\n this.sizeClass = `k-menu-group-${SIZES[size]}`;\n }\n else {\n this.sizeClass = '';\n }\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n getIconClasses(dataItem) {\n const icon = dataItem.icon ? 'k-icon k-i-' + dataItem.icon : undefined;\n const classes = {};\n classes[icon || dataItem.iconClass] = true;\n return classes;\n }\n onClick(index) {\n this.onItemClick.emit(index);\n }\n onBlur() {\n this.onItemBlur.emit();\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-button-list\", inputs: { data: \"data\", textField: \"textField\", itemTemplate: \"itemTemplate\", size: \"size\" }, outputs: { onItemClick: \"onItemClick\", onItemBlur: \"onItemBlur\" }, ngImport: i0, template: `\n
    \n
  • \n \n \n \n \n \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n
  • \n
\n `, isInline: true, directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-button-list',\n template: `\n
    \n
  • \n \n \n \n \n \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n
  • \n
\n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], onItemClick: [{\n type: Output\n }], onItemBlur: [{\n type: Output\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Used for rendering the list item content.\n *\n * To define the item template, nest a `` tag with the `kendoItemTemplate` directive inside the component tag.\n *\n * For the DropDownButton, use the `kendoDropDownButtonItemTemplate` directive.\n * For the SplitButton, use the `kendoSplitButtonItemTemplate` directive.\n *\n * The template context is set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [{\n * text: 'item1',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }, {\n * text: 'item2',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }]\n * }\n * ```\n *\n * For more examples, refer to the article on the [DropDownList templates]({% slug overview_ddl %}#templates).\n */\nclass ButtonItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nButtonItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonItemTemplateDirective, selector: \"[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst EXPORTED_DIRECTIVES = [\n ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nclass ListModule {\n}\nListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, declarations: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective], imports: [CommonModule], exports: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective] });\nListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EXPORTED_DIRECTIVES],\n exports: [EXPORTED_DIRECTIVES],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nvar KeyEvents;\n(function (KeyEvents) {\n KeyEvents[KeyEvents[\"keydown\"] = 0] = \"keydown\";\n KeyEvents[KeyEvents[\"keypress\"] = 1] = \"keypress\";\n KeyEvents[KeyEvents[\"keyup\"] = 2] = \"keyup\";\n})(KeyEvents || (KeyEvents = {}));\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"EnterPress\"] = 4] = \"EnterPress\";\n NavigationAction[NavigationAction[\"EnterUp\"] = 5] = \"EnterUp\";\n NavigationAction[NavigationAction[\"Tab\"] = 6] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 7] = \"Esc\";\n NavigationAction[NavigationAction[\"Navigate\"] = 8] = \"Navigate\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nconst NAVIGATION_CONFIG = new InjectionToken('navigation.config');\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(config) {\n this.navigate = new EventEmitter();\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.enterpress = new EventEmitter();\n this.enterup = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.useLeftRightArrows = config.useLeftRightArrows;\n }\n process(args) {\n const keyCode = args.keyCode;\n const keyEvent = args.keyEvent;\n let index;\n let action = NavigationAction.Undefined;\n if (keyEvent === KeyEvents.keypress) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterPress;\n }\n }\n else if (keyEvent === KeyEvents.keyup) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterUp;\n }\n }\n else {\n if (args.altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (args.altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (this.isEnter(keyCode)) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp || (this.useLeftRightArrows && keyCode === Keys.ArrowLeft)) {\n const step = args.flipNavigation ? 1 : -1;\n const start = args.flipNavigation ? args.min : args.max;\n const end = args.flipNavigation ? args.max : args.min;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.ArrowDown || (this.useLeftRightArrows && keyCode === Keys.ArrowRight)) {\n const step = args.flipNavigation ? -1 : 1;\n const start = args.flipNavigation ? args.max : args.min;\n const end = args.flipNavigation ? args.min : args.max;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.Home) {\n index = args.min;\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.End) {\n index = args.max;\n action = NavigationAction.Navigate;\n }\n }\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(index);\n }\n return action;\n }\n isEnter(keyCode) {\n return keyCode === Keys.Enter || keyCode === Keys.Space;\n }\n next(args) {\n if (!isPresent(args.current)) {\n return args.start;\n }\n else {\n return args.current !== args.end ? args.current + args.step : args.end;\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: NAVIGATION_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NAVIGATION_CONFIG]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ListButton {\n constructor(focusService, navigationService, wrapperRef, _zone, localization, cdr) {\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapperRef = wrapperRef;\n this._zone = _zone;\n this.cdr = cdr;\n this._open = false;\n this._disabled = false;\n this._active = false;\n this._popupSettings = { animate: true, popupClass: '' };\n this.listId = guid();\n this._isFocused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapper = wrapperRef.nativeElement;\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.subscribeEvents();\n }\n get popupClasses() {\n const popupClasses = ['k-menu-popup'];\n if (this._popupSettings.popupClass) {\n popupClasses.push(this._popupSettings.popupClass);\n }\n return popupClasses.join(' ');\n }\n get openState() {\n return this._open;\n }\n set openState(open) {\n this._open = open;\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n if (this._disabled) {\n return;\n }\n this.openState = !this.openState;\n if (!this.openState) {\n this.focusService.focus(-1);\n }\n }\n /**\n * @hidden\n */\n onItemClick(index) {\n this.emitItemClickHandler(index);\n setTimeout(() => this.focusWrapper(), 1);\n }\n ngOnDestroy() {\n this.openState = false;\n clearTimeout(this.focusFirstTimeout);\n clearTimeout(this.blurTimeout);\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subscribeListItemFocusEvent();\n this.subscribeComponentBlurredEvent();\n this.subscribeNavigationEvents();\n }\n subscribeListItemFocusEvent() {\n this.subs.add(this.focusService.onFocus.subscribe(() => {\n this._isFocused = true;\n }));\n }\n subscribeComponentBlurredEvent() {\n this._zone.runOutsideAngular(() => {\n this.subs.add(this.navigationService.tab.pipe(filter(() => this._isFocused)).subscribe(this.handleTab.bind(this)));\n this.subs.add(fromEvent(document, 'click')\n .pipe(filter((event) => !this.wrapperContains(event.target)), filter(() => this._isFocused))\n .subscribe(() => this._zone.run(() => this.blurWrapper())));\n });\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate.subscribe(this.focusService.focus.bind(this.focusService)));\n this.subs.add(this.navigationService.enterup.subscribe(() => {\n this.enterHandler();\n this.focusWrapper();\n }));\n this.subs.add(this.navigationService.open.subscribe(() => {\n if (!this._open) {\n this.togglePopupVisibility();\n this.focusFirstItem();\n }\n else {\n this.focusWrapper();\n }\n }));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(() => this.focusWrapper()));\n }\n enterHandler() { } // eslint-disable-line\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyPressHandler(event) {\n this.keyHandler(event, KeyEvents.keypress);\n }\n /**\n * @hidden\n */\n keyUpHandler(event) {\n this.keyHandler(event, KeyEvents.keyup);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this._disabled) {\n return;\n }\n let focused = this.focusService.focused || 0;\n const eventData = event;\n const action = this.navigationService.process({\n altKey: eventData.altKey,\n current: focused,\n keyCode: eventData.keyCode,\n keyEvent: keyEvent,\n max: this._data ? this._data.length - 1 : 0,\n min: 0\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n (action !== NavigationAction.Enter || (action === NavigationAction.Enter && this._open))) {\n if (event.keyCode === Keys.Space && action === NavigationAction.EnterUp) {\n this._open = false;\n }\n else {\n eventData.preventDefault();\n }\n }\n }\n emitItemClickHandler(index) {\n const dataItem = this._data[index];\n if (this._itemClick) {\n this._itemClick.emit(dataItem);\n }\n if (dataItem && dataItem.click && !dataItem.disabled) {\n dataItem.click(dataItem);\n }\n }\n focusFirstItem() {\n if (this._data && isPresent(this._data[0])) {\n this.focusFirstTimeout = setTimeout(() => this.focusService.focus(0), 1);\n }\n }\n focusWrapper() {\n if (this._open) {\n this.togglePopupVisibility();\n this.focusButton();\n }\n }\n wrapperContains(element) {\n return this.wrapper === element || this.wrapper.contains(element);\n }\n blurWrapper(emit = true) {\n if (this._open) {\n this.togglePopupVisibility();\n }\n this._isFocused = false;\n if (emit) {\n this._blur.emit();\n this.cdr.markForCheck();\n }\n }\n focusButton() {\n if (this.button) {\n this.button.nativeElement.focus();\n }\n }\n handleTab() {\n this.focusButton();\n this.blurWrapper(false);\n }\n}\nListButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nListButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListButton, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-splitbutton-messages-base\", inputs: { splitButtonLabel: \"splitButtonLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-splitbutton-messages-base'\n }]\n }], propDecorators: { splitButtonLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSplitButtonMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSplitButtonMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSplitButtonMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ],\n selector: '[kendoSplitButtonLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NAVIGATION_SETTINGS$2 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$2 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$2\n};\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the Kendo UI SplitButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * Paste\n * `\n * })\n *\n * class AppComponent {\n * public data: Array = [{\n * text: 'Keep Text Only',\n * icon: 'paste-plain-text',\n * click: () => { console.log('Keep Text Only click handler'); }\n * }, {\n * text: 'Paste as HTML',\n * icon: 'paste-as-html'\n * }, {\n * text: 'Paste Markdown',\n * icon: 'paste-markdown'\n * }, {\n * text: 'Set Default Paste'\n * }];\n *\n * public onSplitButtonClick(dataItem: any): void {\n * console.log('Paste');\n * }\n *\n * public onSplitButtonItemClick(dataItem: any): void {\n * if (dataItem) {\n * console.log(dataItem.text);\n * }\n * }\n * }\n * ```\n */\nclass SplitButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr, renderer) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n this.localization = localization;\n this.renderer = renderer;\n /**\n * Sets the text of the SplitButton.\n */\n this.text = '';\n /**\n * Defines an icon to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.icon = '';\n /**\n * Defines an icon with a custom CSS class to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.iconClass = '';\n /**\n * Defines the type attribute of the main button\n */\n this.type = 'button';\n /**\n * Defines the location of an image to be displayed next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The SplitButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'arrow-s';\n /**\n * Fires each time the user clicks the main button.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonClick(): void {\n * console.log('SplitButton click');\n * }\n * }\n * ```\n *\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks on the drop-down list. The event data contains the data item bound to the clicked list item.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonItemClick(dataItem?: string): void {\n * if (dataItem) {\n * console.log(dataItem);\n * }\n * }\n * }\n * ```\n *\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the SplitButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the SplitButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.activeArrow = false;\n this.listId = guid();\n this.buttonText = '';\n this.lockFocus = false;\n this._rounded = DEFAULT_ROUNDED$1;\n this._fillMode = DEFAULT_FILL_MODE$1;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * The rounded property specifies the border radius of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this._fillMode = fillMode === 'clear' ? 'flat' : newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * When set to `true`, disables a SplitButton item\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n set disabled(value) {\n if (this.isOpen) {\n this.toggle(false);\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the data of the SplitButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? -1 : this.tabIndex;\n }\n set isFocused(value) {\n this._isFocused = value;\n }\n get isFocused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n const localizationMsg = this.localization.get('splitButtonLabel') || '';\n return replaceMessagePlaceholder(localizationMsg, 'buttonText', this.buttonText);\n }\n /**\n * @hidden\n */\n onButtonFocus() {\n if (!this.isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n onArrowButtonClick() {\n this.lockFocus = true;\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n toggleButtonActiveState(enable) {\n this._active = enable;\n }\n /**\n * @hidden\n */\n toggleArrowButtonActiveState(enable) {\n this.activeArrow = enable;\n }\n /**\n * @hidden\n */\n onButtonClick() {\n this.lockFocus = true;\n this.buttonClick.emit();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen && !this.lockFocus) {\n this.blurWrapper();\n }\n this.lockFocus = false;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this._active = false;\n if (event.keyCode !== Keys.Space) {\n this.keyUpHandler(event);\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.updateButtonText();\n this.handleClasses(this.rounded, 'rounded');\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('text')) {\n this.updateButtonText();\n }\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n super.togglePopupVisibility();\n if (isDocumentAvailable() && this.lockFocus) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return (this.wrapper === element || this.wrapper.contains(element) || (this.popupRef && this.popupRef.popupElement.contains(element)));\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the SplitButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the SplitButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => this._toggle(open === undefined ? !this._open : open));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n enterHandler() {\n if (this.disabled) {\n return;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n else {\n this.buttonClick.emit();\n }\n }\n updateButtonText() {\n if (isDocumentAvailable()) {\n let innerText = this.wrapper.innerText\n .split('\\n')\n .join('')\n .trim();\n //setTimout is needed because of `Expression has changed after it was checked.` error;\n setTimeout(() => (this.buttonText = innerText), 0);\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.containerRef : appendTo;\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => (this.openState = false)));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n handleClasses(value, input) {\n const elem = this.wrapperRef.nativeElement;\n const classes = getStylingClasses('button', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: { text: \"text\", icon: \"icon\", iconClass: \"iconClass\", type: \"type\", imageUrl: \"imageUrl\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", disabled: \"disabled\", popupSettings: \"popupSettings\", tabIndex: \"tabIndex\", textField: \"textField\", data: \"data\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\" }, properties: { \"class.k-focus\": \"this.isFocused\", \"class.k-split-button\": \"this.widgetClasses\", \"class.k-button-group\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"arrowButton\", first: true, predicate: [\"arrowButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"containerRef\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoSplitButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\" }, { type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ],\n selector: 'kendo-splitbutton',\n template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], type: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], arrowButton: [{\n type: ViewChild,\n args: ['arrowButton', { static: true, read: ElementRef }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], containerRef: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-split-button']\n }, {\n type: HostBinding,\n args: ['class.k-button-group']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_buttons %}).\n */\nclass SplitButtonCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSplitButtonCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonCustomMessagesComponent, selector: \"kendo-splitbutton-messages\", providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }],\n selector: 'kendo-splitbutton-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `SplitButtonComponent`—The SplitButtonComponent component class.\n */\nclass SplitButtonModule {\n}\nSplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent], imports: [CommonModule, PopupModule, ButtonModule, ListModule], exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent] });\nSplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, PopupModule, ButtonModule, ListModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n imports: [CommonModule, PopupModule, ButtonModule, ListModule]\n }]\n }] });\n\nconst NAVIGATION_SETTINGS$1 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$1 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$1\n};\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the Kendo UI DropDownButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * User Settings\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [{\n * text: 'My Profile'\n * }, {\n * text: 'Friend Requests'\n * }, {\n * text: 'Account Settings'\n * }, {\n * text: 'Support'\n * }, {\n * text: 'Log Out'\n * }];\n * }\n * ```\n */\nclass DropDownButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n /**\n * Defines the name of an existing icon in a Kendo UI theme.\n */\n this.icon = '';\n /**\n * Defines the list of CSS classes which are used for styling the Button with custom icons.\n */\n this.iconClass = '';\n /**\n * Defines a URL for styling the button with a custom image.\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The rounded property specifies the border radius of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n this.rounded = 'medium';\n /**\n * The DropDownButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Fires each time the user clicks on a drop-down list item. The event data contains the data item bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.listId = guid();\n this._fillMode = DEFAULT_FILL_MODE;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the disabled state of the DropDownButton.\n */\n set disabled(value) {\n if (value && this.openState) {\n this.openState = false;\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Sets or gets the data of the DropDownButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n /**\n * The fillMode property specifies the background and border styles of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n this._fillMode = fillMode === 'clear' ? 'flat' : fillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get focused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this.keyUpHandler(event);\n this._active = false;\n }\n /**\n * @hidden\n */\n mousedown(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = true;\n }\n /**\n * @hidden\n */\n mouseup(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = false;\n }\n /**\n * @hidden\n */\n openPopup() {\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen) {\n this.blurWrapper();\n }\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the DropDownButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => (this._toggle((open === undefined) ? !this._open : open)));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this._disabled && !this._isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return this.wrapper === element\n || this.wrapper.contains(element)\n || (this.popupRef && this.popupRef.popupElement.contains(element));\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate\n .subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subs.add(this.navigationService.enterup.subscribe(this.onNavigationEnterUp.bind(this)));\n this.subs.add(this.navigationService.open.subscribe(this.onNavigationOpen.bind(this)));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onNavigationEnterUp() {\n if (!this._disabled && !this.openState) {\n this._active = false;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n this.togglePopupVisibility();\n if (!this.openState && isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n onNavigationOpen() {\n if (!this._disabled && !this.openState) {\n this.togglePopupVisibility();\n }\n }\n onNavigationClose() {\n if (this.openState) {\n this.togglePopupVisibility();\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n _toggle(open) {\n if (this._open === open) {\n return;\n }\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => this.openState = false));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.popupSubs.unsubscribe();\n }\n }\n}\nDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: { icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", textField: \"textField\", disabled: \"disabled\", data: \"data\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", tabIndex: \"tabIndex\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\", \"mousedown\": \"mousedown($event)\", \"mouseup\": \"mouseup($event)\" }, properties: { \"class.k-focus\": \"this.focused\", \"class.k-dropdown-button\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"buttonList\", first: true, predicate: [\"buttonList\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoDropDownButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ],\n selector: 'kendo-dropdownbutton',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-dropdown-button']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], buttonList: [{\n type: ViewChild,\n args: ['buttonList', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], mousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], mouseup: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownButtonComponent`—The DropDownButtonComponent component class.\n */\nclass DropDownButtonModule {\n}\nDropDownButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, declarations: [DropDownButtonComponent], imports: [CommonModule, PopupModule, ListModule, ButtonModule], exports: [DropDownButtonComponent, ListModule] });\nDropDownButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, imports: [[CommonModule, PopupModule, ListModule, ButtonModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DropDownButtonComponent],\n exports: [DropDownButtonComponent, ListModule],\n imports: [CommonModule, PopupModule, ListModule, ButtonModule]\n }]\n }] });\n\n/**\n * Displays a Chip that represents an input, attribute or an action.\n */\nclass ChipComponent {\n constructor(element, renderer, ngZone, localizationService) {\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n /**\n * Specifies the selected state of the Chip.\n * @default false\n */\n this.selected = false;\n /**\n * Specifies if the Chip will be removable or not.\n * If the property is set to `true`, the Chip renders a remove icon.\n * @default false\n */\n this.removable = false;\n /**\n * If set to `true`, the Chip will be disabled.\n * @default false\n */\n this.disabled = false;\n /**\n * Fires each time the user clicks the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n /**\n * Fires each time the user clicks the content of the Chip.\n */\n this.contentClick = new EventEmitter();\n this.tabIndex = 0;\n this.hostClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._themeColor = 'base';\n this.focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the padding of the Chip\n * ([see example]({% slug appearance_chip %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (isPresent(size)) {\n this._size = size;\n }\n this.handleClasses(this._size, 'size');\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Chip\n * ([see example]({% slug appearance_chip %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n if (isPresent(rounded)) {\n this._rounded = rounded;\n }\n this.handleClasses(this._rounded, 'rounded');\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Chip\n * ([see example]({% slug appearance_chip %}#toc-fillMode)).\n *\n * The possible values are:\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (isPresent(fillMode)) {\n this._fillMode = fillMode;\n }\n this.handleClasses(this._fillMode, 'fillMode');\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Chip allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_chip %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `none`\n */\n set themeColor(themeColor) {\n if (isPresent(themeColor)) {\n this._themeColor = themeColor;\n }\n this.handleThemeColor(this._themeColor);\n }\n get themeColor() {\n return this._themeColor;\n }\n get ariaChecked() {\n return this.selected;\n }\n get hasIconClass() {\n return this.icon || this.iconClass || this.avatarClass ? true : false;\n }\n get disabledClass() {\n return this.disabled;\n }\n get selectedClass() {\n return this.selected;\n }\n get focusedClass() {\n return this.focused;\n }\n ngOnInit() {\n this.subs.add(this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterViewInit() {\n const chip = this.element.nativeElement;\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.attachElementEventHandlers(chip);\n }\n /**\n * @hidden\n */\n get kendoIconClass() {\n this.verifyIconSettings([this.iconClass, this.avatarClass]);\n return `k-i-${this.icon}`;\n }\n /**\n * @hidden\n */\n get customIconClass() {\n this.verifyIconSettings([this.icon, this.avatarClass]);\n return `${this.iconClass}`;\n }\n /**\n * @hidden\n */\n get chipAvatarClass() {\n this.verifyIconSettings([this.icon, this.iconClass]);\n return `${this.avatarClass}`;\n }\n /**\n * @hidden\n */\n get removeIconClass() {\n if (this.removeIcon) {\n return `${this.removeIcon}`;\n }\n return `k-i-close-circle`;\n }\n /**\n * Focuses the Chip component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.focus();\n }\n }\n /**\n * Blurs the Chip component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.blur();\n }\n }\n /**\n * @hidden\n */\n onRemoveClick(e) {\n if (this.removable) {\n this.remove.emit({ sender: this, originalEvent: e });\n }\n }\n attachElementEventHandlers(chip) {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(chip, 'focus', () => {\n this.renderer.addClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'blur', () => {\n this.renderer.removeClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'click', (e) => {\n const isRemoveClicked = closest(e.target, '.k-chip-remove-action');\n if (!isRemoveClicked) {\n this.ngZone.run(() => {\n this.contentClick.emit({ sender: this, originalEvent: e });\n });\n }\n }));\n });\n }\n /**\n * @hidden\n */\n verifyIconSettings(iconsToCheck) {\n if (isDevMode()) {\n if (iconsToCheck.filter(icon => icon !== null && icon !== undefined).length > 0) {\n this.renderer.removeClass(this.element.nativeElement, 'k-chip-has-icon');\n throw new Error('Invalid configuration: Having multiple icons is not supported. Only a single icon on a chip can be displayed.');\n }\n }\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element.nativeElement;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('chip', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipComponent, selector: \"kendo-chip\", inputs: { label: \"label\", icon: \"icon\", iconClass: \"iconClass\", avatarClass: \"avatarClass\", selected: \"selected\", removable: \"removable\", removeIcon: \"removeIcon\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { remove: \"remove\", contentClick: \"contentClick\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"attr.aria-checked\": \"this.ariaChecked\", \"class.k-chip\": \"this.hostClass\", \"class.k-chip-has-icon\": \"this.hasIconClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-selected\": \"this.selectedClass\", \"class.k-focus\": \"this.focusedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ], ngImport: i0, template: `\n \n \n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chip',\n template: `\n \n \n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { label: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], avatarClass: [{\n type: Input\n }], selected: [{\n type: Input\n }], removable: [{\n type: Input\n }], removeIcon: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], remove: [{\n type: Output\n }], contentClick: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaChecked: [{\n type: HostBinding,\n args: ['attr.aria-checked']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-chip']\n }], hasIconClass: [{\n type: HostBinding,\n args: ['class.k-chip-has-icon']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nclass ChipListComponent {\n constructor(localizationService, renderer, element) {\n this.localizationService = localizationService;\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets the selection mode of the ChipList.\n *\n * The available values are:\n * * `none` (default)\n * * `single`\n * * `multiple`\n */\n this.selection = 'none';\n /**\n * Fires each time when the ChipList selection is changed.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks on the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n this.role = 'listbox';\n this._size = 'medium';\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the gap between the Chips in the ChipList\n * ([see example]({% slug appearance_chiplist %}#toc-size)).\n *\n * The possible values are:\n * * `'small'`\n * * `'medium'` (default)\n * * `'large'`\n * * `none`\n */\n set size(size) {\n const sizeValue = size ? size : 'medium';\n this.handleClasses(sizeValue, 'size');\n this._size = sizeValue;\n }\n get size() {\n return this._size;\n }\n get single() {\n return this.selection === 'single';\n }\n get multiple() {\n return this.selection === 'multiple';\n }\n /**\n * @hidden\n */\n onClick($event) {\n const target = $event.target;\n const isRemoveClicked = closest(target, '.k-chip-remove-action');\n const clickedChip = closest(target, '.k-chip');\n const chip = this.chips.find((chip) => clickedChip === chip.element.nativeElement);\n if (isRemoveClicked && clickedChip) {\n const removeEventArgs = { sender: this, originalEvent: $event, removedChip: chip };\n this.remove.emit(removeEventArgs);\n }\n if (this.selection !== 'none' && clickedChip && !isRemoveClicked) {\n this.setSelection(chip);\n }\n }\n ngOnInit() {\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngAfterViewInit() {\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterContentInit() {\n this.chips.forEach((chip) => {\n this.renderer.setAttribute(chip.element.nativeElement, 'role', 'option');\n });\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n selectedChips() {\n return this.chips.reduce((acc, cur, idx) => { return cur.selected ? acc.concat(idx) : acc; }, []);\n }\n /**\n * Updates the selection on click of a Chip. Emits events.\n */\n setSelection(chip) {\n if (this.selection === 'single') {\n this.clearSelection(chip);\n }\n chip.selected = !chip.selected;\n this.selectedChange.emit(this.selectedChips());\n }\n clearSelection(chip) {\n this.chips.forEach((c) => {\n if (chip !== c) {\n c.selected = false;\n }\n });\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip-list', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nChipListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nChipListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipListComponent, selector: \"kendo-chiplist, kendo-chip-list\", inputs: { selection: \"selection\", size: \"size\" }, outputs: { selectedChange: \"selectedChange\", remove: \"remove\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-chip-list\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-selection-single\": \"this.single\", \"class.k-selection-multiple\": \"this.multiple\", \"attr.role\": \"this.role\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ], queries: [{ propertyName: \"chips\", predicate: ChipComponent }], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chiplist, kendo-chip-list',\n template: `\n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-chip-list']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], selection: [{\n type: Input\n }], size: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], chips: [{\n type: ContentChildren,\n args: [ChipComponent]\n }], single: [{\n type: HostBinding,\n args: ['class.k-selection-single']\n }], multiple: [{\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nconst exportedModules$1 = [\n ChipComponent,\n ChipListComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Chip and ChipList components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Chip module\n * import { ChipModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ChipModule], // import Chip module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass ChipModule {\n}\nChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, declarations: [ChipComponent,\n ChipListComponent], imports: [CommonModule], exports: [ChipComponent,\n ChipListComponent] });\nChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nfunction getAnchorAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'bottom' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'top';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'top';\n }\n return align;\n}\n/**\n * @hidden\n */\nfunction getPopupAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'top' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'bottom';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'bottom';\n }\n return align;\n}\n\n/**\n * @hidden\n */\nfunction openAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }),\n stagger(gap, [animate(`${duration}ms ease-in`, style({ opacity: '*', transform: 'translateY(0)' }))])\n ], { optional: true })\n ]);\n}\n/**\n * @hidden\n */\nfunction closeAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: '*', transform: 'translateY(0)' }),\n stagger(-gap, [animate(`${duration}ms ease-in`, style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }))])\n ], { optional: true })\n ]);\n}\n\n/**\n * Represents a template that defines the content of the whole dial item.\n * To define the template, nest an `` tag\n * with the `kendoDialItemTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-dial-item-template)).\n */\nclass DialItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDialItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDialItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemTemplateDirective, selector: \"[kendoDialItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the FloatingActionButton.\n * To define the template, nest an `` tag\n * with the `kendoFloatingActionButtonTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-floatingactionbutton-template)).\n */\nclass FloatingActionButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFloatingActionButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFloatingActionButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonTemplateDirective, selector: \"[kendoFloatingActionButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFloatingActionButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass DialItemComponent {\n constructor(element, renderer, localisationService) {\n this.element = element;\n this.renderer = renderer;\n this.localisationService = localisationService;\n this.hostClass = true;\n this.role = 'menuitem';\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get title() {\n const label = this.item.label;\n return label ? label : this.itemTitle;\n }\n get indexAttr() {\n return this.index;\n }\n get iconClasses() {\n const classes = [];\n if (this.item.iconClass) {\n classes.push(`${this.item.iconClass}`);\n }\n if (this.item.icon) {\n classes.push(`k-fab-item-icon k-icon k-i-${this.item.icon}`);\n }\n return classes;\n }\n get itemTitle() {\n const icon = this.item.icon;\n const itemTitle = this.item.itemTitle;\n return (icon && itemTitle) ? itemTitle : icon;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n const rtl = this.localisationService.rtl;\n const hAlign = this.align.horizontal;\n this.renderer.addClass(element, this.getTextDirectionClass(rtl, hAlign));\n }\n getTextDirectionClass(rtl, hAlign) {\n const dir = rtl ? 'rtl' : 'ltr';\n const align = hAlign === 'end' ? 'end' : 'start';\n const directions = {\n rtl: { end: 'k-text-left', start: 'k-text-right' },\n ltr: { start: 'k-text-left', end: 'k-text-right' }\n };\n return directions[dir][align];\n }\n}\nDialItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDialItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: { cssClass: \"cssClass\", cssStyle: \"cssStyle\", isFocused: \"isFocused\", index: \"index\", item: \"item\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-item\": \"this.hostClass\", \"attr.role\": \"this.role\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.title\": \"this.title\", \"attr.aria-label\": \"this.title\", \"attr.data-fab-item-index\": \"this.indexAttr\" } }, ngImport: i0, template: `\n \n \n\n \n {{ item.label }}\n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialItem]',\n template: `\n \n \n\n \n {{ item.label }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-item']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], title: [{\n type: HostBinding,\n args: ['attr.title']\n }, {\n type: HostBinding,\n args: ['attr.aria-label']\n }], indexAttr: [{\n type: HostBinding,\n args: ['attr.data-fab-item-index']\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], isFocused: [{\n type: Input\n }], index: [{\n type: Input\n }], item: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DialListComponent {\n constructor(focusService, cdr) {\n this.focusService = focusService;\n this.cdr = cdr;\n this.hostClass = true;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.focusService.onFocus.subscribe(() => this.cdr.detectChanges()));\n }\n get bottomClass() {\n return this.align.vertical === 'top' || this.align.vertical === 'middle';\n }\n get topClass() {\n return this.align.vertical === 'bottom';\n }\n isFocused(index) {\n return this.focusService.isFocused(index);\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n}\nDialListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, deps: [{ token: FocusService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDialListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialListComponent, selector: \"[kendoDialList]\", inputs: { dialItems: \"dialItems\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-items\": \"this.hostClass\", \"class.k-fab-items-bottom\": \"this.bottomClass\", \"class.k-fab-items-top\": \"this.topClass\" } }, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: [\"cssClass\", \"cssStyle\", \"isFocused\", \"index\", \"item\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialList]',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-items']\n }], bottomClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-bottom']\n }], topClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-top']\n }], dialItems: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\nconst NAVIGATION_SETTINGS = {\n useLeftRightArrows: false\n};\nconst NAVIGATION_SETTINGS_PROVIDER = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS\n};\nconst SIZE_CLASSES = {\n small: 'k-fab-sm',\n medium: 'k-fab-md',\n large: 'k-fab-lg'\n};\nconst ROUNDED_CLASSES = {\n small: 'k-rounded-sm',\n medium: 'k-rounded-md',\n large: 'k-rounded-lg',\n full: 'k-rounded-full'\n};\nconst FILLMODE_CLASS = 'k-fab-solid';\nconst DEFAULT_DURATION = 180;\nconst DEFAULT_ITEM_GAP = 90;\nconst DEFAULT_OFFSET = '16px';\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\n/**\n *\n * Represents the [Kendo UI FloatingActionButton component for Angular]({% slug overview_floatingactionbutton %}).\n * Used to specify the primary or the most common action in an application.\n *\n */\nclass FloatingActionButtonComponent {\n constructor(renderer, element, focusService, navigationService, ngZone, popupService, builder, localizationService) {\n this.renderer = renderer;\n this.element = element;\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.builder = builder;\n this.localizationService = localizationService;\n /**\n * Specifies the positionMode of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-positionMode)).\n *\n * * The possible values are:\n * * `absolute`—Positions the FloatingActionButton absolutely to its first positioned parent element.\n * * `fixed` (Default)—Positions the FloatingActionButton relative to the viewport. It always stays in the same place even if the page is scrolled.\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the animation settings of the FloatingActionButton dial items.\n * ([see example]({% slug dialitems_floatingactionbutton %}#toc-animation)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`—Applies the default [`DialItemAnimation`]({% slug api_buttons_dialitemanimation %}) settings.\n * * `false`\n * * `DialItemAnimation`\n * * `duration`—Specifies the animation duration in milliseconds for each dial item. Defaults to `180ms`.\n * * `gap`—Specifies the animation duration gap in milliseconds after each dial item is animated. Defaults to `90ms`.\n */\n this.dialItemAnimation = true;\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FloatingActionButton.\n */\n this.tabIndex = 0;\n /**\n * Specifies the collection of the dial items that will be rendered in the FloatingActionButton popup.\n */\n this.dialItems = [];\n /**\n * Fires each time the FloatingActionButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the FloatingActionButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time a dial item is clicked.\n */\n this.dialItemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.id = `k-${guid()}`;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._disabled = false;\n this._align = { horizontal: 'end', vertical: 'bottom' };\n this._offset = { x: DEFAULT_OFFSET, y: DEFAULT_OFFSET };\n this.subscriptions = new Subscription();\n this.rtl = false;\n this.animationEnd = new EventEmitter();\n this.initialSetup = true;\n validatePackage(packageMetadata);\n this.subscribeNavigationEvents();\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get fixedClass() {\n return this.positionMode === 'fixed';\n }\n get absoluteClass() {\n return this.positionMode === 'absolute';\n }\n /**\n * Specifies the theme color of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-themeColor)).\n * The theme color will be applied as background color of the component.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this.handleClasses(newThemeColor, 'themeColor');\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the size of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the FloatingActionButton.\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (default)\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies whether the FloatingActionButton is disabled.\n */\n set disabled(disabled) {\n this._disabled = disabled;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Specifies the horizontal and vertical alignment of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-align)).\n *\n * The possible values are:\n * * `{ horizontal: 'start'|'center'|'end', vertical: 'top'|'middle'|'bottom' }`\n *\n * The default value is:\n * * `{ horizontal: 'end', vertical: 'bottom' }`\n *\n */\n set align(align) {\n this._align = Object.assign(this._align, align);\n }\n get align() {\n return this._align;\n }\n /**\n * Specifies the horizontal and vertical offset position of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-offset)).\n *\n * * The default value is:\n * * `{ x: '16px', y: '16px' }`\n */\n set offset(offset) {\n this._offset = Object.assign(this._offset, offset);\n this.offsetStyles();\n }\n get offset() {\n return this._offset;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n ngAfterViewInit() {\n ['size', 'rounded', 'themeColor'].forEach(option => this.handleClasses(this[option], option));\n this.renderer.addClass(this.element.nativeElement, this.alignClass());\n this.offsetStyles();\n this.initialSetup = false;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * Indicates whether the FloatingActionButton is currently open.\n */\n get isOpen() { return isPresent(this.popupRef); }\n /**\n * Focuses the FloatingActionButton.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the FloatingActionButton.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the FloatingActionButton dial items popup.\n *\n * If you use the `toggleDial` method to open or close the dial items,\n * the `open` and `close` events do not fire ([more information and examples]({% slug openstate_floatingactionbutton %}#toc-events)).\n *\n * @param open - The state of dial items popup.\n */\n toggleDial(open) {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n const shouldOpen = isPresent(open) ? open : !this.isOpen;\n if (this.disabled || shouldOpen === this.isOpen) {\n return;\n }\n if (shouldOpen) {\n setTimeout(() => this.openDial());\n }\n else {\n this.closeDial();\n }\n }\n /**\n * @hidden\n */\n get role() {\n return (this.dialItems && this.dialItems.length) ? 'menubutton' : 'button';\n }\n /**\n * @hidden\n */\n get ariaExpanded() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get ariaHasPopup() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n const classes = [];\n if (this.iconClass) {\n classes.push(`${this.iconClass}`);\n }\n if (this.icon) {\n classes.push(`k-fab-icon k-icon k-i-${this.icon}`);\n }\n return classes;\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n this.ngZone.run(() => {\n const shouldOpen = !this.isOpen;\n this.toggleDialWithEvents(shouldOpen);\n });\n }\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this.disabled) {\n return;\n }\n const focused = this.focusService.focused || 0;\n const keyCode = event.keyCode;\n const action = this.navigationService.process({\n altKey: event.altKey,\n current: focused,\n keyCode,\n keyEvent: keyEvent,\n max: this.dialItems ? this.dialItems.length - 1 : 0,\n min: 0,\n flipNavigation: this.align.vertical === 'bottom'\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n onItemClick(event) {\n const item = closest(event.target, '.k-fab-item');\n if (!item) {\n return;\n }\n const index = item.getAttribute('data-fab-item-index');\n this.emitItemClick(index);\n }\n /**\n * @hidden\n */\n focusHandler() {\n if (!this.disabled) {\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n blurHandler() {\n this.onBlur.emit();\n this.toggleDialWithEvents(false);\n }\n handleClasses(inputValue, input) {\n if (isPresent(this.button) && (this[input] !== inputValue || this.initialSetup)) {\n const button = this.button.nativeElement;\n const classesToRemove = {\n themeColor: `${FILLMODE_CLASS}-${this.themeColor}`,\n size: SIZE_CLASSES[this.size],\n rounded: ROUNDED_CLASSES[this.rounded]\n };\n const classesToAdd = {\n themeColor: inputValue !== 'none' ? `${FILLMODE_CLASS}-${inputValue}` : '',\n size: SIZE_CLASSES[inputValue],\n rounded: ROUNDED_CLASSES[inputValue]\n };\n this.renderer.removeClass(button, classesToRemove[input]);\n if (classesToAdd[input]) {\n this.renderer.addClass(button, classesToAdd[input]);\n }\n }\n }\n onEnterPressed() {\n const index = this.focusService.focused;\n this.emitItemClick(index);\n }\n emitItemClick(index) {\n const item = this.dialItems[index];\n if (item && !item.disabled) {\n const clickEventArgs = { item: item, index: index };\n this.dialItemClick.emit(clickEventArgs);\n this.toggleDialWithEvents(false);\n }\n }\n subscribeNavigationEvents() {\n this.subscriptions.add(this.navigationService.navigate.subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subscriptions.add(this.navigationService.enter.subscribe(this.onNavigationEnterPress.bind(this)));\n this.subscriptions.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n onNavigationEnterPress() {\n this.ngZone.run(() => {\n if (this.isOpen) {\n let focusedIndex = this.focusService.focused;\n const focusedItem = this.dialItems[focusedIndex];\n if (focusedItem && focusedItem.disabled) {\n return;\n }\n if (isPresent(focusedIndex) && focusedIndex !== -1) {\n this.onEnterPressed();\n return;\n }\n }\n if (!this.isOpen && isDocumentAvailable()) {\n this.toggleDialWithEvents(true);\n this.button.nativeElement.focus();\n }\n });\n }\n onNavigationClose() {\n if (this.isOpen) {\n this.ngZone.run(() => {\n this.toggleDialWithEvents(false);\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n });\n }\n }\n alignClass() {\n return `k-pos-${this.align.vertical}-${this.align.horizontal}`;\n }\n toggleDialWithEvents(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n if (open) {\n this.openDial();\n }\n else {\n this.closeDial();\n }\n }\n openPopup() {\n if (this.isOpen) {\n return;\n }\n const isIconFab = this.icon && !this.text;\n const rtl = this.rtl;\n const align = this.align;\n this.popupRef = this.popupService.open({\n anchor: this.element.nativeElement,\n animate: false,\n content: this.popupTemplate,\n anchorAlign: getAnchorAlign(align, rtl),\n popupAlign: getPopupAlign(align, rtl),\n popupClass: 'k-fab-popup k-popup-transparent'\n });\n const popupElement = this.popupRef.popupElement;\n this.renderer.setStyle(popupElement, 'box-shadow', 'none');\n if (isIconFab) {\n this.subscriptions.add(this.popupRef.popupOpen.subscribe(() => this.positionPopup()));\n }\n this.ngZone.runOutsideAngular(() => {\n this.popupMouseDownListener = this.renderer.listen(popupElement, 'mousedown', (event) => {\n event.preventDefault();\n });\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.toggleDialWithEvents(false));\n }\n closePopup() {\n if (this.isOpen) {\n if (this.popupMouseDownListener) {\n this.popupMouseDownListener();\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n openDial() {\n this.openPopup();\n this.focusService.focus(0);\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(true);\n }\n }\n closeDial() {\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(false);\n this.animationEnd.pipe(take(1)).subscribe(() => this.closePopup());\n }\n else {\n this.closePopup();\n }\n }\n isValidAnimation() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean') {\n return animation.duration !== 0;\n }\n return true;\n }\n positionPopup() {\n if (this.dialItemTemplate) {\n return;\n }\n const fab = this.element.nativeElement;\n const fabWidth = fab.getBoundingClientRect().width;\n const popupEl = this.popupRef.popupElement;\n const icon = popupEl.querySelector('.k-fab-item-icon');\n if (!icon) {\n return;\n }\n const iconWidth = icon.getBoundingClientRect().width;\n const left = (fabWidth / 2) - (iconWidth / 2);\n const popupLeft = popupEl.getBoundingClientRect().left;\n const isEndAlign = this.align.horizontal === 'end';\n const leftValue = isEndAlign ? (popupLeft - left) : (left + popupLeft);\n const rtlLeftValue = isEndAlign ? (left + popupLeft) : (popupLeft - left);\n popupEl.style.left = this.rtl ? `${rtlLeftValue}px` : `${leftValue}px`;\n }\n offsetStyles() {\n const hostElement = this.element.nativeElement;\n this.renderer.setStyle(hostElement, this.horizontalPosition, this.horizontalOffset);\n this.renderer.setStyle(hostElement, this.verticalPosition, this.verticalOffset);\n }\n get hasDialItems() {\n return isPresent(this.dialItems) && this.dialItems.length !== 0;\n }\n /**\n * Gets the CSS prop name of the selected vertical position (`top`/`bottom`);\n */\n get verticalPosition() {\n return {\n top: 'top',\n middle: 'top',\n bottom: 'bottom'\n }[this.align.vertical];\n }\n /**\n * Gets the offset according to the selected vertical position.\n */\n get verticalOffset() {\n if (this.align.vertical === 'middle') {\n return this.offset.y === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.y})`;\n }\n return this.offset.y;\n }\n /**\n * Gets the CSS prop name of the selected horizontal position (`left`/`right`);\n */\n get horizontalPosition() {\n const { horizontal } = this.align;\n return {\n end: this.rtl ? 'left' : 'right',\n center: 'left',\n start: this.rtl ? 'right' : 'left'\n }[horizontal];\n }\n /**\n * Gets the offset according to the selected horizontal position.\n */\n get horizontalOffset() {\n if (this.align.horizontal === 'center') {\n return this.offset.x === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.x})`;\n }\n return this.offset.x;\n }\n playerFor(element, animation) {\n const factory = this.builder.build(animation);\n return factory.create(element);\n }\n playAnimation(open) {\n const durationSettings = this.durationSettings();\n const animationSettings = {\n duration: durationSettings.duration,\n gap: durationSettings.gap,\n align: this.align\n };\n const animation = open ? openAnimation(animationSettings) : closeAnimation(animationSettings);\n let player = this.playerFor(this.popupRef.popupElement, animation);\n player.play();\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n }\n durationSettings() {\n return {\n duration: this.animationDuration(),\n gap: this.animationGap()\n };\n }\n animationGap() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.gap)) {\n return animation.gap;\n }\n return DEFAULT_ITEM_GAP;\n }\n animationDuration() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.duration)) {\n return animation.duration;\n }\n return DEFAULT_DURATION;\n }\n}\nFloatingActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FocusService }, { token: NavigationService }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i4.AnimationBuilder }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonComponent, selector: \"kendo-floatingactionbutton\", inputs: { themeColor: \"themeColor\", size: \"size\", rounded: \"rounded\", disabled: \"disabled\", align: \"align\", offset: \"offset\", positionMode: \"positionMode\", icon: \"icon\", iconClass: \"iconClass\", buttonClass: \"buttonClass\", dialClass: \"dialClass\", text: \"text\", dialItemAnimation: \"dialItemAnimation\", tabIndex: \"tabIndex\", dialItems: \"dialItems\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", dialItemClick: \"dialItemClick\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-pos-fixed\": \"this.fixedClass\", \"class.k-pos-absolute\": \"this.absoluteClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ], queries: [{ propertyName: \"dialItemTemplate\", first: true, predicate: DialItemTemplateDirective, descendants: true }, { propertyName: \"fabTemplate\", first: true, predicate: FloatingActionButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `, isInline: true, components: [{ type: DialListComponent, selector: \"[kendoDialList]\", inputs: [\"dialItems\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatingactionbutton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ],\n template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FocusService }, { type: NavigationService }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i4.AnimationBuilder }, { type: i1.LocalizationService }]; }, propDecorators: { fixedClass: [{\n type: HostBinding,\n args: ['class.k-pos-fixed']\n }], absoluteClass: [{\n type: HostBinding,\n args: ['class.k-pos-absolute']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dialItemTemplate: [{\n type: ContentChild,\n args: [DialItemTemplateDirective, { static: false }]\n }], fabTemplate: [{\n type: ContentChild,\n args: [FloatingActionButtonTemplateDirective, { static: false }]\n }], themeColor: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], align: [{\n type: Input\n }], offset: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], dialClass: [{\n type: Input\n }], text: [{\n type: Input\n }], dialItemAnimation: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], dialItems: [{\n type: Input\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], dialItemClick: [{\n type: Output,\n args: ['dialItemClick']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }] } });\n\nconst exportedModules = [\n FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective\n];\nconst declarations = [\n ...exportedModules,\n DialListComponent,\n DialItemComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FloatingActionButton component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FloatingActionButton module\n * import { FloatingActionButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingActionButtonModule], // import FloatingActionButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass FloatingActionButtonModule {\n}\nFloatingActionButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingActionButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, declarations: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective, DialListComponent,\n DialItemComponent], imports: [CommonModule, PopupModule, ListModule, EventsModule], exports: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective] });\nFloatingActionButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, imports: [[CommonModule, PopupModule, ListModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule, PopupModule, ListModule, EventsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Buttons components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Buttons module\n * import { ButtonsModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonsModule], // import Buttons module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonsModule {\n}\nButtonsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\nButtonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, imports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ButtonDirective as Button, ButtonDirective, ButtonGroupComponent as ButtonGroup, ButtonGroupComponent, ButtonGroupModule, ButtonItemTemplateDirective, ButtonModule, ButtonsModule, ChipComponent, ChipListComponent, ChipModule, DialItemTemplateDirective, DropDownButtonComponent as DropDownButton, DropDownButtonComponent, DropDownButtonModule, FloatingActionButtonComponent, FloatingActionButtonModule, FloatingActionButtonTemplateDirective, FocusableDirective, ListComponent, ListModule, LocalizedSplitButtonMessagesDirective, PreventableEvent, SplitButtonComponent as SplitButton, SplitButtonComponent, SplitButtonCustomMessagesComponent, SplitButtonModule, TemplateContextDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { isDevMode, Directive, Optional, Injectable, SimpleChange, TemplateRef, Component, ChangeDetectionStrategy, Input, ContentChild, ElementRef, ViewChild, ViewChildren, EventEmitter, Output, ContentChildren, LOCALE_ID, Inject, InjectionToken, NgModule } from '@angular/core';\nimport * as i8 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport * as i4 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { DateCategoryAxis, DateValueAxis, DomEventsBuilder as DomEventsBuilder$1, InstanceObserver, chartBaseTheme, Chart, StockChart, Sparkline } from '@progress/kendo-charts';\nimport { exportImage, exportSVG } from '@progress/kendo-drawing';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Subject, BehaviorSubject, combineLatest } from 'rxjs';\nimport { auditTime, tap } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-popup';\nimport { PopupService, POPUP_CONTAINER, PopupModule } from '@progress/kendo-angular-popup';\nimport * as i4$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@progress/kendo-angular-intl';\n\nconst getTouch = (domEvent) => {\n return {\n x: {\n location: domEvent.pageX\n },\n y: {\n location: domEvent.pageY\n }\n };\n};\nconst eventArgs = (e, previousArgs) => {\n const pointers = e.pointers;\n const pointer = pointers[0];\n const xLocation = pointer.pageX;\n const yLocation = pointer.pageY;\n let distance = 0;\n if (pointers.length > 1) {\n const pointer1 = pointers[0];\n const pointer2 = pointers[1];\n distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) + Math.pow(pointer1.pageY - pointer2.pageY, 2));\n }\n return {\n distance: distance,\n event: e.srcEvent,\n preventDefault: function () {\n e.preventDefault();\n },\n target: e.target,\n touches: pointers.map(getTouch),\n type: e.type,\n x: {\n delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n initialDelta: e.deltaX,\n location: xLocation,\n startLocation: xLocation - e.deltaX\n },\n y: {\n delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n initialDelta: e.deltaY,\n location: yLocation,\n startLocation: yLocation - e.deltaY\n }\n };\n};\nfunction shouldBindGroup(groupNames, events) {\n for (let idx = 0; idx < groupNames.length; idx++) {\n if (events[groupNames[idx]]) {\n return true;\n }\n }\n return false;\n}\nconst eventGroups = [{\n end: 'panend',\n move: 'panmove',\n start: 'panstart'\n }, {\n gesturechange: 'pinchmove',\n gestureend: 'pinchend',\n gesturestart: 'pinchstart'\n }, {\n press: 'press'\n }, {\n tap: 'tap'\n }];\n/**\n * @hidden\n */\nclass DomEvents {\n constructor(hammerInstance, events) {\n this.hammerInstance = hammerInstance;\n this.eventHandlers = {};\n this.tap = this.tap.bind(this);\n this.press = this.press.bind(this);\n this.panstart = this.panstart.bind(this);\n this.panmove = this.panmove.bind(this);\n this.panend = this.panend.bind(this);\n this.pinchstart = this.pinchstart.bind(this);\n this.pinchmove = this.pinchmove.bind(this);\n this.pinchend = this.pinchend.bind(this);\n if (events) {\n this.bind(events);\n }\n }\n tap(e) {\n this.trigger('tap', e);\n }\n press(e) {\n this.trigger('press', e);\n }\n panstart(e) {\n delete this.previous;\n this.previous = this.trigger('start', e);\n }\n panmove(e) {\n this.previous = this.trigger('move', e);\n }\n panend(e) {\n this.trigger('end', e);\n delete this.previous;\n }\n pinchstart(e) {\n this.trigger('gesturestart', e);\n }\n pinchmove(e) {\n this.trigger('gesturechange', e);\n }\n pinchend(e) {\n this.trigger('gestureend', e);\n }\n trigger(name, e) {\n const args = eventArgs(e, this.previous);\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](args);\n }\n return args;\n }\n bind(events = {}) {\n this.unbind();\n this.eventHandlers = events;\n for (let idx = 0; idx < eventGroups.length; idx++) {\n const eventGroup = eventGroups[idx];\n const groupNames = Object.keys(eventGroup);\n if (shouldBindGroup(groupNames, events)) {\n for (let nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n const name = eventGroup[groupNames[nameIdx]];\n this.hammerInstance.on(name, this[name]);\n }\n }\n }\n }\n unbind() {\n if (this.hammerInstance) {\n this.hammerInstance.off();\n }\n this.eventHandlers = {};\n }\n destroy() {\n if (this.hammerInstance) {\n this.hammerInstance.destroy();\n delete this.hammerInstance;\n }\n delete this.eventHandlers;\n }\n toggleDrag(enable) {\n this.toggle('pan', enable);\n }\n toggleZoom(enable) {\n this.toggle('pinch', enable);\n }\n toggle(recognizer, enable) {\n if (this.hammerInstance) {\n const instanceRecognizer = this.hammerInstance.get(recognizer);\n instanceRecognizer.set({\n enable: enable\n });\n }\n }\n}\n\nconst MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n 'Solution: http://www.telerik.com/kendo-angular-ui/components/charts/troubleshooting/#toc-hammerjs-is-not-loaded';\n/**\n * @hidden\n */\nclass DomEventsBuilder {\n static create(element, events) {\n if (typeof window !== 'undefined') {\n const HAMMER = window.Hammer;\n if (!HAMMER) {\n if (isDevMode()) {\n throw new Error(MISSING_HAMMER_MESSAGE);\n }\n return;\n }\n const hammerInstance = new HAMMER(element, {\n recognizers: [\n [HAMMER.Tap],\n [HAMMER.Pan],\n [HAMMER.Pinch],\n [HAMMER.Press, { time: 0 }]\n ]\n });\n return new DomEvents(hammerInstance, events);\n }\n }\n}\n\nconst dateCategoryAxisFormats = DateCategoryAxis.prototype.options.labels.dateFormats;\nconst dateValueAxisFormats = DateValueAxis.prototype.options.labels.dateFormats;\nconst dateFormats = {\n milliseconds: \"HH:mm:ss.SSS\",\n seconds: { time: 'medium' },\n minutes: { time: 'short' },\n hours: { time: 'short' },\n days: { skeleton: 'Md' },\n weeks: { skeleton: 'Md' },\n months: { skeleton: 'yyMMM' },\n years: { skeleton: 'y' }\n};\nObject.assign(dateCategoryAxisFormats, dateFormats);\nObject.assign(dateValueAxisFormats, dateFormats);\nDomEventsBuilder$1.register(DomEventsBuilder);\n\n/**\n * A directive which selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [Donut center template]({% slug donut_seriestypes_charts %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

22.5%

\n * of which renewables\n *
\n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public data: any[] = [{\n * kind: 'Hydroelectric', share: 0.175\n * }, {\n * kind: 'Nuclear', share: 0.238\n * }, {\n * kind: 'Coal', share: 0.118\n * }, {\n * kind: 'Solar', share: 0.052\n * }, {\n * kind: 'Wind', share: 0.225\n * }, {\n * kind: 'Other', share: 0.192\n * }];\n * }\n *\n * ```\n */\nclass DonutCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDonutCenterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DonutCenterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDonutCenterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DonutCenterTemplateDirective, selector: \"[kendoChartDonutCenterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DonutCenterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartDonutCenterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ItemChange {\n constructor(sender, options) {\n this.sender = sender;\n this.options = options;\n }\n}\n/**\n * @hidden\n */\nclass CollectionService {\n constructor() {\n this.source = new Subject();\n this.onItemChange$ = this.source.asObservable();\n }\n notify(change) {\n this.source.next(change);\n }\n}\nCollectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCollectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nfunction copyChanges(changes, options) {\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n const value = changes[propertyName].currentValue;\n if (value === undefined) {\n delete options[propertyName];\n }\n else {\n options[propertyName] = value;\n }\n }\n}\n\n/**\n * @hidden\n */\nfunction toSimpleChanges(changes) {\n const result = {};\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n result[propertyName] = new SimpleChange(null, changes[propertyName], false);\n }\n return result;\n}\n\n/**\n * @hidden\n */\nconst THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nclass Change {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n }\n}\n/**\n * @hidden\n */\nclass ConfigurationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.store = {};\n this.source = new BehaviorSubject({});\n this.initSource();\n }\n initSource() {\n this.onFastChange$ = this.source.asObservable();\n this.onChange$ = this.onFastChange$.pipe(auditTime(THROTTLE_MS));\n }\n push(store) {\n this.store = store;\n this.next();\n }\n notify(change) {\n this.set(change.key, change.value);\n this.next();\n }\n set(field, value) {\n let store = this.store;\n const parts = field.split('.');\n let key = parts.shift();\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n store[key] = value;\n }\n next() {\n this.ngZone.runOutsideAngular(() => {\n this.source.next(this.store);\n });\n }\n}\nConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass CollectionItemComponent {\n constructor(configurationService, collectionService) {\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.options = {};\n this.subscription = configurationService.onFastChange$.subscribe(store => {\n this.options = store;\n this.notify();\n });\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n notify() {\n if (!this.collectionService) {\n return;\n }\n this.collectionService.notify(new ItemChange(this, this.options));\n }\n}\nCollectionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Directive });\nCollectionItemComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionItemComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * @hidden\n */\nclass SettingsComponent {\n constructor(configKey, configurationService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.store = {};\n if (configKey === undefined) {\n throw new Error('Configuration key not set');\n }\n }\n ngOnDestroy() {\n this.store = undefined;\n this.notify();\n }\n ngOnChanges(changes) {\n copyChanges(changes, this.store);\n this.notify();\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n markAsVisible() {\n this.store.visible = true;\n this.notify();\n }\n notify() {\n this.configurationService.notify(new Change(this.configKey, this.store));\n }\n}\nSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nSettingsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SettingsComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nclass SeriesTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n get seriesTooltipTemplateRef() {\n return this.seriesTooltipTemplate;\n }\n}\nSeriesTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesTooltipComponent, selector: \"kendo-chart-series-item-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, queries: [{ propertyName: \"seriesTooltipTemplate\", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] } });\n\nconst toggle = (flag) => flag === undefined ? false : !flag;\n/**\n * The configuration component for a series item.\n */\nclass SeriesItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n /**\n * Toggles the series visibility and updates the parent Chart\n * without animated transitions.\n */\n toggleVisibility() {\n this.options.visible = toggle(this.options.visible);\n this.notify();\n }\n /**\n * Toggles the visibility of a point with the given index.\n * Applicable for the Pie, Donut, and Funnel series.\n *\n * @param pointIndex - The zero-based index of the point to toggle.\n */\n togglePointVisibility(pointIndex) {\n const pv = this.options.pointVisibility = this.options.pointVisibility || {};\n pv[pointIndex] = toggle(pv[pointIndex]);\n this.notify();\n }\n get seriesTooltipTemplateRef() {\n if (this.seriesTooltip) {\n return this.seriesTooltip.seriesTooltipTemplateRef;\n }\n }\n}\nSeriesItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesItemComponent, selector: \"kendo-chart-series-item\", inputs: { aggregate: \"aggregate\", autoFit: \"autoFit\", axis: \"axis\", border: \"border\", categoryAxis: \"categoryAxis\", categoryField: \"categoryField\", closeField: \"closeField\", color: \"color\", colorField: \"colorField\", connectors: \"connectors\", currentField: \"currentField\", dashType: \"dashType\", data: \"data\", downColor: \"downColor\", downColorField: \"downColorField\", dynamicHeight: \"dynamicHeight\", dynamicSlope: \"dynamicSlope\", errorHighField: \"errorHighField\", errorLowField: \"errorLowField\", explodeField: \"explodeField\", field: \"field\", fromField: \"fromField\", gap: \"gap\", highField: \"highField\", holeSize: \"holeSize\", line: \"line\", lowField: \"lowField\", lowerField: \"lowerField\", margin: \"margin\", maxSize: \"maxSize\", mean: \"mean\", meanField: \"meanField\", median: \"median\", medianField: \"medianField\", minSize: \"minSize\", missingValues: \"missingValues\", name: \"name\", neckRatio: \"neckRatio\", negativeColor: \"negativeColor\", negativeValues: \"negativeValues\", noteTextField: \"noteTextField\", opacity: \"opacity\", openField: \"openField\", outliersField: \"outliersField\", overlay: \"overlay\", padding: \"padding\", q1Field: \"q1Field\", q3Field: \"q3Field\", segmentSpacing: \"segmentSpacing\", size: \"size\", sizeField: \"sizeField\", spacing: \"spacing\", stack: \"stack\", startAngle: \"startAngle\", style: \"style\", summaryField: \"summaryField\", target: \"target\", toField: \"toField\", type: \"type\", upperField: \"upperField\", visible: \"visible\", visibleInLegend: \"visibleInLegend\", visibleInLegendField: \"visibleInLegendField\", visual: \"visual\", width: \"width\", whiskers: \"whiskers\", xAxis: \"xAxis\", xErrorHighField: \"xErrorHighField\", xErrorLowField: \"xErrorLowField\", xField: \"xField\", yAxis: \"yAxis\", yErrorHighField: \"yErrorHighField\", yErrorLowField: \"yErrorLowField\", yField: \"yField\", zIndex: \"zIndex\", errorBars: \"errorBars\", extremes: \"extremes\", highlight: \"highlight\", labels: \"labels\", markers: \"markers\", notes: \"notes\", outliers: \"outliers\", tooltip: \"tooltip\" }, providers: [ConfigurationService], queries: [{ propertyName: \"seriesTooltip\", first: true, predicate: SeriesTooltipComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-series-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { aggregate: [{\n type: Input\n }], autoFit: [{\n type: Input\n }], axis: [{\n type: Input\n }], border: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], categoryField: [{\n type: Input\n }], closeField: [{\n type: Input\n }], color: [{\n type: Input\n }], colorField: [{\n type: Input\n }], connectors: [{\n type: Input\n }], currentField: [{\n type: Input\n }], dashType: [{\n type: Input\n }], data: [{\n type: Input\n }], downColor: [{\n type: Input\n }], downColorField: [{\n type: Input\n }], dynamicHeight: [{\n type: Input\n }], dynamicSlope: [{\n type: Input\n }], errorHighField: [{\n type: Input\n }], errorLowField: [{\n type: Input\n }], explodeField: [{\n type: Input\n }], field: [{\n type: Input\n }], fromField: [{\n type: Input\n }], gap: [{\n type: Input\n }], highField: [{\n type: Input\n }], holeSize: [{\n type: Input\n }], line: [{\n type: Input\n }], lowField: [{\n type: Input\n }], lowerField: [{\n type: Input\n }], margin: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], mean: [{\n type: Input\n }], meanField: [{\n type: Input\n }], median: [{\n type: Input\n }], medianField: [{\n type: Input\n }], minSize: [{\n type: Input\n }], missingValues: [{\n type: Input\n }], name: [{\n type: Input\n }], neckRatio: [{\n type: Input\n }], negativeColor: [{\n type: Input\n }], negativeValues: [{\n type: Input\n }], noteTextField: [{\n type: Input\n }], opacity: [{\n type: Input\n }], openField: [{\n type: Input\n }], outliersField: [{\n type: Input\n }], overlay: [{\n type: Input\n }], padding: [{\n type: Input\n }], q1Field: [{\n type: Input\n }], q3Field: [{\n type: Input\n }], segmentSpacing: [{\n type: Input\n }], size: [{\n type: Input\n }], sizeField: [{\n type: Input\n }], spacing: [{\n type: Input\n }], stack: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], style: [{\n type: Input\n }], summaryField: [{\n type: Input\n }], target: [{\n type: Input\n }], toField: [{\n type: Input\n }], type: [{\n type: Input\n }], upperField: [{\n type: Input\n }], visible: [{\n type: Input\n }], visibleInLegend: [{\n type: Input\n }], visibleInLegendField: [{\n type: Input\n }], visual: [{\n type: Input\n }], width: [{\n type: Input\n }], whiskers: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], xErrorHighField: [{\n type: Input\n }], xErrorLowField: [{\n type: Input\n }], xField: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], yErrorHighField: [{\n type: Input\n }], yErrorLowField: [{\n type: Input\n }], yField: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], errorBars: [{\n type: Input\n }], extremes: [{\n type: Input\n }], highlight: [{\n type: Input\n }], labels: [{\n type: Input\n }], markers: [{\n type: Input\n }], notes: [{\n type: Input\n }], outliers: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], seriesTooltip: [{\n type: ContentChild,\n args: [SeriesTooltipComponent, { static: false }]\n }] } });\n\nconst POSITION_MODE = 'absolute';\nconst COLLISION = { horizontal: \"fit\", vertical: \"fit\" };\n/**\n * @hidden\n */\nclass BaseTooltip {\n constructor(popupService, localizationService) {\n this.popupService = popupService;\n this.localizationService = localizationService;\n this.style = {};\n this.popupRef = null;\n }\n get active() {\n return this.popupRef !== null;\n }\n show(e) {\n const align = e.anchor.align;\n const offset = this.position(e.anchor.point);\n this.style = e.style;\n if (!this.popupRef) {\n this.popupRef = this.popupService.open(Object.assign({\n offset: offset,\n popupAlign: align,\n animate: this.animate,\n content: this.templateRef,\n collision: COLLISION,\n positionMode: POSITION_MODE\n }, this.popupSettings));\n if (this.localizationService.rtl) {\n this.popupRef.popupElement.setAttribute('dir', 'rtl');\n }\n this.onInit();\n }\n else {\n const popup = this.popupRef.popup.instance;\n popup.offset = offset;\n popup.popupAlign = align;\n }\n }\n hide() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n onInit() {\n }\n ngOnDestroy() {\n this.hide();\n }\n position(offset) {\n if (!this.popupSettings || !this.popupSettings.appendTo) {\n return offset;\n }\n const appendTo = this.popupSettings.appendTo.element.nativeElement;\n console.log('appendTo', appendTo);\n const bbox = appendTo.getBoundingClientRect();\n const { scrollLeft, scrollTop } = this.scrollOffset(appendTo);\n return {\n left: offset.left - bbox.left - scrollLeft,\n top: offset.top - bbox.top - scrollTop\n };\n }\n scrollOffset(element) {\n if (!element) {\n return null;\n }\n let scrollLeft = element.scrollLeft;\n let scrollTop = element.scrollTop;\n let parent = element.parentElement;\n while (parent) {\n scrollLeft += parent.scrollLeft;\n scrollTop += parent.scrollTop;\n parent = parent.parentElement;\n }\n return { scrollLeft, scrollTop };\n }\n}\nBaseTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseTooltip, deps: [{ token: i1.PopupService }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nBaseTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseTooltip, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseTooltip, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i4.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nfunction bodyFactory() {\n if (isDocumentAvailable()) {\n return new ElementRef(document.body);\n }\n}\n\n/**\n * @hidden\n */\nclass CrosshairTooltipComponent extends BaseTooltip {\n constructor(popupService, localizationService) {\n super(popupService, localizationService);\n this.animate = false;\n }\n show(e) {\n super.show(e);\n this.value = e.value;\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n}\nCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipComponent, deps: [{ token: i1.PopupService }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CrosshairTooltipComponent, selector: \"kendo-chart-crosshair-tooltip\", inputs: { key: \"key\", popupSettings: \"popupSettings\" }, providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }], viewQueries: [{ propertyName: \"templateRef\", first: true, predicate: [\"content\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n {{ value }}\n
\n
\n `, isInline: true, directives: [{ type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }],\n selector: 'kendo-chart-crosshair-tooltip',\n template: `\n \n
\n {{ value }}\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i4.LocalizationService }]; }, propDecorators: { templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], key: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }] } });\n\nconst AXES = [\"categoryAxis\", \"valueAxis\", \"xAxis\", \"yAxis\"];\n/**\n * @hidden\n */\nclass CrosshairTooltipsContainerComponent {\n constructor() {\n this.tooltipKeys = [];\n this.tooltipsMap = {};\n }\n show(e) {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n const axisName = e.axisName;\n const axisIndex = e.axisIndex;\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n if (tooltipComponents[idx].key === axisName + axisIndex) {\n tooltipComponents[idx].show(e);\n break;\n }\n }\n }\n hide() {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n tooltipComponents[idx].hide();\n }\n }\n get active() {\n return this.tooltipKeys.length > 0;\n }\n createCrosshairTooltips(options) {\n const newMap = this.mapTooltips(options);\n const map = this.tooltipsMap;\n for (let key in map) {\n if (!newMap[key]) {\n this.removeTooltip(key);\n delete map[key];\n }\n }\n for (let key in newMap) {\n if (!map[key]) {\n map[key] = newMap[key];\n this.tooltipKeys.push(key);\n }\n }\n }\n removeTooltip(key) {\n const keys = this.tooltipKeys;\n for (let idx = 0; idx < keys.length; idx++) {\n if (keys[idx] === key) {\n keys.splice(idx, 1);\n break;\n }\n }\n }\n mapTooltips(options) {\n const map = {};\n for (let idx = 0; idx < AXES.length; idx++) {\n const tooltips = this.axesCrosshairTooltipOptions(options, AXES[idx]);\n for (let tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n const tooltip = tooltips[tooltipIdx];\n map[tooltip.name + tooltip.index] = tooltip;\n }\n }\n return map;\n }\n axesCrosshairTooltipOptions(options, name) {\n const result = [];\n if (options[name]) {\n const axes = [].concat(options[name]);\n for (let idx = 0; idx < axes.length; idx++) {\n const tooltip = (axes[idx].crosshair || {}).tooltip;\n if (tooltip && tooltip.visible) {\n result.push({\n index: idx,\n name: name\n });\n }\n }\n }\n return result;\n }\n}\nCrosshairTooltipsContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCrosshairTooltipsContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: { popupSettings: \"popupSettings\" }, viewQueries: [{ propertyName: \"crossahirTooltipComponents\", predicate: CrosshairTooltipComponent, descendants: true }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: CrosshairTooltipComponent, selector: \"kendo-chart-crosshair-tooltip\", inputs: [\"key\", \"popupSettings\"] }], directives: [{ type: i4$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipsContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chart-crosshair-tooltips-container',\n template: `\n \n \n `\n }]\n }], propDecorators: { popupSettings: [{\n type: Input\n }], crossahirTooltipComponents: [{\n type: ViewChildren,\n args: [CrosshairTooltipComponent]\n }] } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [series tooltip]({% slug tooltips_chart_charts %}#toc-series-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Value is {{value}}\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SeriesTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nSeriesTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nSeriesTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesTooltipTemplateDirective, selector: \"[kendoChartSeriesTooltipTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartSeriesTooltipTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [shared series tooltip]({% slug tooltips_chart_charts %}#toc-shared-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
{{ category }}
\n *
\n * {{ point.series.name }} : {{ point.value }}\n *
\n *
\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SharedTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nSharedTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nSharedTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SharedTooltipTemplateDirective, selector: \"[kendoChartSharedTooltipTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedTooltipTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartSharedTooltipTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * The point that is passed to the tooltip template.\n */\nclass TooltipTemplatePoint {\n /**\n * @hidden\n */\n constructor(point, format, template) {\n this.value = point.value;\n this.category = point.category;\n this.categoryIndex = point.categoryIx;\n this.series = point.series;\n this.dataItem = point.dataItem;\n this.percentage = point.percentage;\n this.runningTotal = point.runningTotal;\n this.total = point.total;\n this.low = point.low;\n this.high = point.high;\n this.xLow = point.xLow;\n this.xHigh = point.xHigh;\n this.yLow = point.yLow;\n this.yHigh = point.yHigh;\n this.template = template;\n this.point = point;\n this.format = format;\n }\n /**\n * @hidden\n */\n get formattedValue() {\n return this.format ? this.point.formatValue(this.format) : String(this.value);\n }\n}\n\n/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n let current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n\n/**\n * @hidden\n */\nclass TooltipTemplateService {\n setTemplate(template) {\n this.template = template;\n }\n getTemplate(seriesIndex) {\n if (this.seriesTemplates && this.seriesTemplates[seriesIndex]) {\n return this.seriesTemplates[seriesIndex];\n }\n return this.template;\n }\n setSeriesTemplates(seriesTemplates) {\n this.seriesTemplates = seriesTemplates;\n }\n setSharedTemplate(sharedTemplate) {\n this.sharedTemplate = sharedTemplate;\n }\n getSharedTemplate() {\n return this.sharedTemplate;\n }\n}\nTooltipTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService, decorators: [{\n type: Injectable\n }] });\n\nconst SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nconst TOOLTIP_CLASS = \"k-chart-tooltip\";\n/**\n * @hidden\n */\nclass TooltipPopupComponent extends BaseTooltip {\n constructor(popupService, templateService, localizationService, ngZone) {\n super(popupService, localizationService);\n this.popupService = popupService;\n this.templateService = templateService;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.seriesTooltipContext = {};\n this.seriesSharedTooltipContext = {};\n this.animate = true;\n this.wrapperClass = 'k-chart-tooltip-wrapper';\n this.leave = new EventEmitter();\n this.popupClasses = {};\n }\n show(e) {\n this.shared = e.shared;\n this.popupClasses = Object.assign({\n [SHARED_TOOLTIP_CLASS]: e.shared,\n [TOOLTIP_CLASS]: true,\n [e.className]: !!e.className\n }, this.classNames);\n if (!e.shared) {\n this.seriesTooltipContext = new TooltipTemplatePoint(e.point, e.format);\n this.seriesTooltipTemplateRef = this.pointTemplateRef(e.point);\n }\n else {\n this.seriesSharedTooltipTemplateRef = this.templateService.getSharedTemplate()\n || this.defaultSharedTooltipTemplate.templateRef;\n this.seriesSharedTooltipContext = this.sharedTemplateContext(e);\n }\n super.show(e);\n }\n containsElement(element) {\n if (this.popupRef) {\n return hasParent(element, this.popupRef.popupElement);\n }\n }\n sharedTemplateContext(e) {\n const points = e.points;\n const nameColumn = points.filter((point) => typeof point.series.name !== 'undefined').length > 0;\n const colorMarker = e.series.length > 1;\n let colspan = 1;\n if (nameColumn) {\n colspan++;\n }\n if (colorMarker) {\n colspan++;\n }\n return {\n category: e.category,\n categoryText: e.categoryText,\n colorMarker: colorMarker,\n colspan: colspan,\n nameColumn: nameColumn,\n points: this.wrapPoints(e.points, e.format)\n };\n }\n pointTemplateRef(point) {\n return this.templateService.getTemplate(point.series.index) || this.defaultSeriesTooltipTemplate.templateRef;\n }\n wrapPoints(points, format) {\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const template = this.pointTemplateRef(point);\n const pointFormat = ((point.options || {}).tooltip || {}).format || format;\n result.push(new TooltipTemplatePoint(point, pointFormat, template));\n }\n return result;\n }\n onInit() {\n this.ngZone.runOutsideAngular(() => {\n this.mouseleaveSubscription = this.popupRef.popupElement.addEventListener('mouseleave', (args) => {\n this.leave.emit(args);\n });\n });\n this.popupRef.popupElement.className += ` ${this.wrapperClass}`;\n }\n hide() {\n if (this.mouseleaveSubscription) {\n this.mouseleaveSubscription();\n this.mouseleaveSubscription = null;\n }\n super.hide();\n }\n}\nTooltipPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipPopupComponent, deps: [{ token: i1.PopupService }, { token: TooltipTemplateService }, { token: i4.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTooltipPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: { animate: \"animate\", classNames: \"classNames\", popupSettings: \"popupSettings\", wrapperClass: \"wrapperClass\" }, outputs: { leave: \"leave\" }, providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }], viewQueries: [{ propertyName: \"defaultSeriesTooltipTemplate\", first: true, predicate: SeriesTooltipTemplateDirective, descendants: true }, { propertyName: \"defaultSharedTooltipTemplate\", first: true, predicate: SharedTooltipTemplateDirective, descendants: true }, { propertyName: \"templateRef\", first: true, predicate: [\"content\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n \n \n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n
{{ categoryText }}
\n {{ point.series.name }}\n  \n \n \n \n
\n
\n `, isInline: true, directives: [{ type: i4$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: SeriesTooltipTemplateDirective, selector: \"[kendoChartSeriesTooltipTemplate]\" }, { type: SharedTooltipTemplateDirective, selector: \"[kendoChartSharedTooltipTemplate]\" }, { type: i4$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipPopupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }],\n selector: 'kendo-chart-tooltip-popup',\n template: `\n \n
\n \n \n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n
{{ categoryText }}
\n {{ point.series.name }}\n  \n \n \n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: TooltipTemplateService }, { type: i4.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { defaultSeriesTooltipTemplate: [{\n type: ViewChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], defaultSharedTooltipTemplate: [{\n type: ViewChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }], templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], animate: [{\n type: Input\n }], classNames: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], leave: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass ChartInstanceObserver extends InstanceObserver {\n constructor(instance) {\n super(instance);\n this.handlerMap = {\n hideTooltip: 'onHideTooltip',\n legendItemClick: 'onLegendItemClick',\n render: 'onRender',\n showTooltip: 'onShowTooltip',\n init: 'onInit'\n };\n }\n}\n\n/**\n * @hidden\n */\nclass BaseEvent {\n /**\n * @hidden\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nBaseEvent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseEvent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nBaseEvent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseEvent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseEvent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }]; } });\n\n/**\n * Arguments for the `axisLabelClick` event.\n */\nclass AxisLabelClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.dataItem = e.dataItem;\n this.index = e.index;\n this.text = e.text;\n this.value = e.value;\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent extends BaseEvent {\n constructor() {\n super(...arguments);\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\nPreventableEvent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PreventableEvent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPreventableEvent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PreventableEvent, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PreventableEvent, decorators: [{\n type: Directive\n }] });\n\n/**\n * Arguments for the `drag` event.\n */\nclass DragEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragEnd` event.\n */\nclass DragEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragStart` event.\n */\nclass DragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * @hidden\n */\nclass LegendEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.series = e.series;\n this.seriesIndex = e.seriesIndex;\n this.pointIndex = e.pointIndex;\n this.text = e.text;\n }\n}\n\n/**\n * Arguments for the `legendItemHover` event.\n */\nclass LegendItemHoverEvent extends LegendEvent {\n /**\n * If called, the series highlight is not shown as a result of hovering over the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/* eslint-disable no-empty */\n/**\n * Arguments for the `legendItemLeave` event.\n */\nclass LegendItemLeaveEvent extends LegendEvent {\n /**\n * @hidden\n */\n preventDefault() {\n }\n /**\n * @hidden\n */\n isDefaultPrevented() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NoteEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.series = e.series;\n this.value = e.value;\n this.visual = e.visual;\n }\n}\n\n/**\n * Arguments for the `noteClick` event.\n */\nclass NoteClickEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteHover` event.\n */\nclass NoteHoverEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteLeave` event.\n */\nclass NoteLeaveEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `paneRender` event.\n */\nclass PaneRenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(args, sender) {\n super(sender);\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `plotAreaClick` event.\n */\nclass PlotAreaClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\n/**\n * Arguments for the `plotAreaHover` event.\n */\nclass PlotAreaHoverEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\nclass PlotAreaLeaveEvent extends BaseEvent {\n}\n\n/**\n * Arguments for the `render` event.\n */\nclass RenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(_e, sender) {\n super(sender);\n }\n}\n\n/**\n * Arguments for the `select` event.\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectEnd` event.\n */\nclass SelectEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectStart` event.\n */\nclass SelectStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `seriesClick` event.\n */\nclass SeriesClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * @hidden\n */\nclass SeriesEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * Arguments for the `seriesHover` event.\n */\nclass SeriesHoverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesOver` event.\n */\nclass SeriesOverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesLeave` event.\n */\nclass SeriesLeaveEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `zoom` event.\n */\nclass ZoomEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.delta = e.delta;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomEnd` event.\n */\nclass ZoomEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomStart` event.\n */\nclass ZoomStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\nconst EVENT_MAP$1 = {\n axisLabelClick: AxisLabelClickEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent,\n dragStart: DragStartEvent,\n legendItemHover: LegendItemHoverEvent,\n legendItemLeave: LegendItemLeaveEvent,\n noteClick: NoteClickEvent,\n noteHover: NoteHoverEvent,\n noteLeave: NoteLeaveEvent,\n paneRender: PaneRenderEvent,\n plotAreaClick: PlotAreaClickEvent,\n plotAreaHover: PlotAreaHoverEvent,\n plotAreaLeave: PlotAreaLeaveEvent,\n render: RenderEvent,\n select: SelectEvent,\n selectEnd: SelectEndEvent,\n selectStart: SelectStartEvent,\n seriesClick: SeriesClickEvent,\n seriesHover: SeriesHoverEvent,\n seriesOver: SeriesOverEvent,\n seriesLeave: SeriesLeaveEvent,\n zoom: ZoomEvent,\n zoomEnd: ZoomEndEvent,\n zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nclass InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP$1[name]) {\n return new EVENT_MAP$1[name](args, sender);\n }\n }\n}\n\n/**\n * Arguments for the `legendItemClick` event.\n */\nclass LegendItemClickEvent extends LegendEvent {\n /**\n * If called, the series visibility is not toggled as a result of clicking the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-charts',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1651230557,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Fallback theme in case the Theme Service fails\n * to read the variables from the main theme.\n *\n * @hidden\n */\nconst chartDefaultTheme = () => Object.assign({}, chartBaseTheme(), {\n axisDefaults: {\n crosshair: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '12px serif'\n },\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n majorGridLines: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n minorGridLines: {\n color: 'rgba(0, 0, 0, 0.04)'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n chartArea: {\n background: 'rgb(255, 255, 255)'\n },\n legend: {\n inactiveItems: {\n labels: {\n color: 'rgba(102, 102, 102, 0.5)'\n },\n markers: {\n color: 'rgba(102, 102, 102, 0.5)'\n }\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n seriesDefaults: {\n boxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n bullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n candlestick: {\n downColor: 'rgb(101, 101, 101)',\n line: {\n color: 'rgb(101, 101, 101)'\n }\n },\n errorBars: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n horizontalWaterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n icon: {\n border: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n labels: {\n background: 'rgb(255, 255, 255)',\n color: 'rgb(101, 101, 101)',\n opacity: 0.8,\n font: '12px serif'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n overlay: {\n gradient: \"none\"\n },\n verticalBoxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n verticalBullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n waterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n area: {\n opacity: 0.8\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '16px serif'\n },\n seriesColors: [\n 'rgb(255, 99, 88)',\n 'rgb(255, 210, 70)',\n 'rgb(120, 210, 55)',\n 'rgb(40, 180, 200)',\n 'rgb(45, 115, 245)',\n 'rgb(170, 70, 190)'\n ]\n});\n\nconst font = (style) => `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\nconst computedBackgroundColor = (element) => window.getComputedStyle(element).backgroundColor;\nconst letterPos = (letter) => letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0);\nconst seriesPos = (name) => {\n const alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n const num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n};\nconst SERIES_COLORS = 30;\nconst seriesTemplate = () => {\n let template = `\n
\n
\n
\n
\n
\n
\n `;\n for (let i = 0; i < SERIES_COLORS; i++) {\n template += `\n
`;\n }\n return template;\n};\nconst template = () => `\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n ${seriesTemplate()}\n
\n`;\n/**\n * @hidden\n */\nclass ThemeService extends ConfigurationService {\n constructor(ngZone) {\n super(ngZone);\n this.loaded = false;\n }\n loadTheme() {\n if (this.loaded || !isDocumentAvailable()) {\n return;\n }\n if (!this.readTheme()) {\n this.readDefaultTheme();\n }\n this.loaded = true;\n this.next();\n }\n readTheme() {\n this.createElement();\n const available = this.queryColor('accent') !==\n this.queryColor('accent-contrast');\n try {\n if (available) {\n this.push(chartBaseTheme());\n this.setColors();\n this.setFonts();\n this.setSeriesColors();\n }\n }\n finally {\n this.destroyElement();\n }\n return available;\n }\n readDefaultTheme() {\n this.push(chartDefaultTheme());\n }\n createElement() {\n const container = this.element = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template();\n document.body.appendChild(container);\n }\n destroyElement() {\n if (this.element) {\n document.body.removeChild(this.element);\n this.element = undefined;\n }\n }\n setStyle(key, value) {\n this.set(key, value);\n }\n setColors() {\n this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('axisDefaults.title.color', 'normal-text-color');\n this.mapColor('chartArea.background', 'background');\n this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n this.mapColor('legend.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.labels.background', 'background');\n this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n this.mapColor('title.color', 'normal-text-color');\n const opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n if (!isNaN(opacity)) {\n this.setStyle('seriesDefaults.area.opacity', opacity);\n this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n this.setStyle('seriesDefaults.labels.opacity', opacity);\n }\n this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n }\n setInactiveOpacity(seriesTypes, selector) {\n const inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(type => this.setStyle(`seriesDefaults.${type}.highlight.inactiveOpacity`, inactiveOpacity));\n }\n }\n setFonts() {\n const defaultFont = font(this.queryStyle('chart-font'));\n const titleFont = font(this.queryStyle('chart-title-font'));\n const paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n const labelFont = font(this.queryStyle('chart-label-font'));\n this.setStyle('axisDefaults.labels.font', labelFont);\n this.setStyle('axisDefaults.notes.label.font', defaultFont);\n this.setStyle('axisDefaults.title.font', defaultFont);\n this.setStyle('legend.labels.font', defaultFont);\n this.setStyle('seriesDefaults.labels.font', labelFont);\n this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n this.setStyle('title.font', titleFont);\n this.setStyle('paneDefaults.title.font', paneTitleFont);\n }\n setSeriesColors() {\n const element = this.element;\n const series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n const unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n const seriesColors = series.reduce((arr, el) => {\n const pos = seriesPos(el.className);\n const color = computedBackgroundColor(el);\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n return arr;\n }, [] // Will populate the series colors in this array\n );\n this.setStyle('seriesColors', seriesColors);\n }\n mapColor(key, varName) {\n this.setStyle(key, this.queryColor(varName));\n }\n queryColor(varName) {\n return this.queryStyle(varName).backgroundColor;\n }\n queryStyle(varName) {\n const element = this.element.querySelector(`.k-var--${varName}`);\n return window.getComputedStyle(element);\n }\n}\nThemeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nThemeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nfunction hasObservers(emitter) {\n return emitter.observers.length > 0;\n}\n/**\n * The root Chart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public legendVisible: boolean = true;\n * public seriesVisible: boolean = true;\n *\n * public toggleSeries(): void {\n * this.seriesVisible = !this.seriesVisible;\n * }\n *\n * public toggleLegend(): void {\n * this.legendVisible = !this.legendVisible;\n * }\n * }\n *\n * ```\n */\nclass ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when the user clicks an axis label ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.axisLabelClick = new EventEmitter();\n /**\n * Fires as long as the user is dragging the Chart with the mouse or through swipe gestures.\n */\n this.drag = new EventEmitter();\n /**\n * Fires when the user stops dragging the Chart.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts dragging the Chart.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the user hovers over a legend item ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.legendItemHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a legend item.\n */\n this.legendItemLeave = new EventEmitter();\n /**\n * Fires when the user clicks a note.\n */\n this.noteClick = new EventEmitter();\n /**\n * Fires when the user hovers over a note.\n */\n this.noteHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a note.\n */\n this.noteLeave = new EventEmitter();\n /**\n * Fires when a pane is rendered because the Chart:\n * * Is rendered.\n * * Performs panning or zooming.\n * * Is exported with different options.\n * The event is used to render custom visuals in the panes.\n */\n this.paneRender = new EventEmitter();\n /**\n * Fires when the user clicks the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n * The `click` event is triggered by the `tap` and `contextmenu` events.\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.plotAreaClick = new EventEmitter();\n /**\n * Fires when the user hovers the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.plotAreaHover = new EventEmitter();\n /**\n * Fires when the cursor leaves the plot area.\n */\n this.plotAreaLeave = new EventEmitter();\n /**\n * Fires when the Chart is ready to render on screen ([see example]({% slug overview_chart_charts %}#toc-events)).\n * For example, you can use it to remove loading indicators.\n * Any changes made to the options are ignored.\n */\n this.render = new EventEmitter();\n /**\n * Fires when the user modifies the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the user completes the modification of the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectEnd = new EventEmitter();\n /**\n * Fires when the user starts modifying the axis selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectStart = new EventEmitter();\n /**\n * Fires when the user clicks the Chart series.\n *\n * The `click` event will be triggered by the `tap` and `contextmenu` events ([see example]({% slug overview_chart_charts %}#toc-events)).\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.seriesClick = new EventEmitter();\n /**\n * Fires when the user hovers the Chart series ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.seriesHover = new EventEmitter();\n /**\n * Fires when the cursor enters a series.\n */\n this.seriesOver = new EventEmitter();\n /**\n * Fires when the cursor leaves a series.\n */\n this.seriesLeave = new EventEmitter();\n /**\n * Fires as long as the user is zooming the Chart by using the mousewheel operation.\n */\n this.zoom = new EventEmitter();\n /**\n * Fires when the user stops zooming the Chart.\n */\n this.zoomEnd = new EventEmitter();\n /**\n * Fires when the user uses the mousewheel to zoom the Chart.\n */\n this.zoomStart = new EventEmitter();\n /**\n * Fires when a legend item is clicked before the selected series visibility is toggled.\n * Can be prevented.\n */\n this.legendItemClick = new EventEmitter();\n /**\n * Limits the automatic resizing of the Chart. Sets the maximum number of times per second\n * that the component redraws its content when the size of its container changes.\n * Defaults to `10`. To disable the automatic resizing, set it to `0`.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * seriesData: number[] = [1, 2, 3, 5];\n * }\n * ```\n */\n this.resizeRateLimit = 10;\n this.theme = null;\n this.suppressTransitions = false;\n this.rtl = false;\n this.hostClasses = ['k-chart', 'k-widget'];\n validatePackage(packageMetadata);\n this.themeService.loadTheme();\n this.refreshWait();\n }\n ngOnInit() {\n if (this.element) {\n this.hostClasses.forEach(name => {\n this.renderer.addClass(this.element.nativeElement, name);\n });\n this.renderer.setStyle(this.element.nativeElement, 'position', 'relative');\n }\n }\n ngAfterViewInit() {\n if (this.canRender) {\n this.ngZone.runOutsideAngular(() => {\n const chartMouseleave = this.renderer.listen(this.surfaceElement.nativeElement, 'mouseleave', this.chartMouseleave.bind(this));\n this.domSubscriptions = () => {\n chartMouseleave();\n };\n });\n }\n this.setDirection();\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.subscriptions.add(this.localizationService.changes.subscribe(this.rtlChange.bind(this)));\n }\n ngAfterViewChecked() {\n if (this.instance && this.autoResize) {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resize();\n }, 0);\n });\n }\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n store.popupSettings = null;\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * chart.notifyChanges({ title: { text: 'New Title' } });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.destroyed = true;\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.domSubscriptions) {\n this.domSubscriptions();\n this.domSubscriptions = null;\n }\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.resizeTimeout);\n clearTimeout(this.redrawTimeout);\n }\n createInstance(element, observer) {\n this.instance = new Chart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n /**\n * Exports the Chart as an image. The export operation is asynchronous and returns a promise.\n *\n * @param {ImageExportOptions} options - The parameters for the exported image.\n * @returns {Promise} - A promise that will be resolved with a PNG image encoded as a Data URI.\n */\n exportImage(options = {}) {\n return exportImage(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as an SVG document. The export operation is asynchronous and returns a promise.\n *\n * @param options - The parameters for the exported file.\n * @returns - A promise that will be resolved with an SVG document that is encoded as a Data URI.\n */\n exportSVG(options = {}) {\n return exportSVG(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as a Drawing `Scene`.\n *\n * @param options - The parameters for the export operation.\n * @returns - The root Group of the scene.\n */\n exportVisual(options = {}) {\n return this.instance.exportVisual(options);\n }\n /**\n * Returns the axis with the specified name.\n *\n * @param {string} name - The axis name.\n * @returns {ChartAxis} - The axis with a corresponding name.\n */\n findAxisByName(name) {\n if (this.instance) {\n return this.instance.findAxisByName(name);\n }\n }\n /**\n * Returns the pane at the specified index.\n *\n * @param {number} index - The pane index.\n * @returns {ChartPane} - The pane at the specified index.\n */\n findPaneByIndex(index) {\n if (this.instance) {\n return this.instance.findPaneByIndex(index);\n }\n }\n /**\n * Returns the pane with the specified name.\n *\n * @param {string} name - The name of the pane.\n * @returns {ChartPane} - The pane with the provided name.\n */\n findPaneByName(name) {\n if (this.instance) {\n return this.instance.findPaneByName(name);\n }\n }\n /**\n * Returns the plot area of the Chart.\n * @returns {ChartPlotArea} - The plot area of the Chart.\n */\n getPlotArea() {\n if (this.instance) {\n return this.instance.plotArea();\n }\n }\n /**\n * Highlights the series points or the segments of a Pie, Donut, or Funnel charts.\n *\n * See [Series Highlight]({% slug serieshighlight_chart_charts %}) for more details.\n *\n * In the following example, the callback is evaluated for each data point.\n * If the function returns `true`, the point is highlighted.\n *\n * {% meta height:500 %}\n * {% embed_file elements/highlight/api/app.component.ts preview %}\n * {% embed_file shared/app.module.ts hidden %}\n * {% embed_file shared/main.ts hidden %}\n * {% endmeta %}\n *\n * @param show - A Boolean value that indicates whether the highlight is shown or hidden.\n * @param filter - A string that represents the series or category name, an object with the series and category name, or a function which will be called for each point. The function should return `true` for the points for which the highlight is toggled.\n */\n toggleHighlight(show, filter) {\n if (this.instance) {\n this.instance.toggleHighlight(show, filter);\n }\n }\n /**\n * Hides the tooltip of the Chart.\n */\n hideTooltip() {\n if (this.instance) {\n this.instance.hideTooltip();\n }\n }\n /**\n * Shows the Chart tooltip of a specific point or the shared tooltip of a specific category.\n *\n * @param filter - The category for a shared tooltip or a function which will be called for each point until the function returns `true`.\n */\n showTooltip(filter) {\n if (this.instance) {\n this.instance.showTooltip(filter);\n }\n }\n init() {\n if (!this.canRender) {\n return;\n }\n const element = this.surfaceElement.nativeElement;\n const instanceObserver = new ChartInstanceObserver(this);\n this.createInstance(element, instanceObserver);\n }\n /**\n * Detects the size of the container and redraws the Chart.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n if (this.instance) {\n this.instance.resize();\n }\n }\n /**\n * @hidden\n */\n onResize(_event) {\n if (this.autoResize) {\n this.resize();\n }\n }\n onLegendItemClick(e) {\n this.run(() => {\n const args = new LegendItemClickEvent(e, this);\n this.legendItemClick.emit(args);\n if (!args.isDefaultPrevented()) {\n const series = this.seriesComponents.toArray()[e.series.index];\n if (!series) {\n return;\n }\n if (e.pointIndex === undefined) {\n series.toggleVisibility();\n }\n else {\n series.togglePointVisibility(e.pointIndex);\n }\n this.suppressTransitions = true;\n }\n }, hasObservers(this.legendItemClick), this.seriesComponents.length > 0);\n }\n onInit(e) {\n this.instance = e.sender;\n }\n onRender(e) {\n const donutCenterStyle = this.getDonutCenterStyle();\n this.run(() => {\n const args = new RenderEvent(e, this);\n this.surface = e.sender.surface;\n this.render.emit(args);\n this.donutCenterStyle = donutCenterStyle;\n }, hasObservers(this.render), this.donutCenterStyle !== donutCenterStyle);\n }\n onShowTooltip(e) {\n this.run(() => {\n if (!e.crosshair) {\n this.tooltipInstance.show(e);\n }\n else {\n this.crossahirTooltips.show(e);\n }\n }, !e.crosshair, true);\n }\n onHideTooltip(e) {\n if (!e.crosshair) {\n if (this.tooltipInstance.active) {\n this.tooltipInstance.hide();\n this.detectChanges();\n }\n }\n else if (this.crossahirTooltips.active) {\n this.crossahirTooltips.hide();\n this.detectChanges();\n }\n }\n trigger(name, e) {\n if (name === 'resize') {\n return;\n }\n const emitter = this.activeEmitter(name);\n if (emitter) {\n const args = this.instanceEventService.create(name, e, this);\n this.run(() => {\n emitter.emit(args);\n });\n return args.isDefaultPrevented && args.isDefaultPrevented();\n }\n }\n requiresHandlers(names) {\n for (let idx = 0; idx < names.length; idx++) {\n if (this.activeEmitter(names[idx])) {\n return true;\n }\n }\n return false;\n }\n refresh() {\n clearTimeout(this.redrawTimeout);\n this.updateDirection();\n this.crossahirTooltips.createCrosshairTooltips(this.options);\n this.setChartAreaSize();\n if (!this.instance) {\n this.init();\n return;\n }\n const transitions = this.options.transitions;\n if (this.suppressTransitions) {\n this.options.transitions = false;\n }\n this.updateOptions();\n if (this.suppressTransitions) {\n this.options.transitions = transitions;\n this.suppressTransitions = false;\n }\n }\n setChartAreaSize() {\n if (!this.element) {\n return;\n }\n const element = this.element.nativeElement;\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n element.style.width = `${chartArea.width}px`;\n }\n if (chartArea.height) {\n element.style.height = `${chartArea.height}px`;\n }\n }\n updateOptions() {\n this.instance.setOptions(this.options);\n }\n /**\n * @hidden\n */\n tooltipMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !hasParent(relatedTarget, chartElement))) {\n this.instance.hideElements();\n }\n }\n /**\n * @hidden\n */\n chartMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !(this.tooltipInstance.containsElement(relatedTarget) || hasParent(relatedTarget, chartElement))) &&\n !this.instance.handlingTap) {\n this.instance.hideElements();\n }\n }\n get canRender() {\n return isDocumentAvailable() && Boolean(this.surfaceElement);\n }\n get autoResize() {\n return this.resizeRateLimit > 0;\n }\n activeEmitter(name) {\n const emitter = this[name];\n if (emitter && emitter.emit && hasObservers(emitter)) {\n return emitter;\n }\n }\n getDonutCenterStyle() {\n if (!this.instance || !this.options || !this.options.series) {\n return;\n }\n const firstSeries = this.options.series[0];\n const charts = this.instance._plotArea.charts;\n if (!firstSeries || firstSeries.type !== 'donut' || !charts || charts[0].points.length === 0) {\n return;\n }\n const firstPoint = charts[0].points[0];\n const center = firstPoint.box.center();\n const radius = firstPoint.sector.innerRadius;\n const top = center.y - radius;\n const left = center.x - radius;\n const size = radius * 2;\n return {\n height: size + 'px',\n left: left + 'px',\n top: top + 'px',\n width: size + 'px'\n };\n }\n refreshWait() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = combineLatest(this.configurationService.onChange$, this.themeService.onChange$).pipe(tap((result) => {\n this.options = result[0];\n this.theme = result[1];\n }), auditTime(THROTTLE_MS))\n .subscribe(() => {\n this.refresh();\n });\n });\n }\n run(callback, inZone = true, detectChanges) {\n if (inZone) {\n if (detectChanges) {\n this.changeDetector.markForCheck();\n }\n this.ngZone.run(callback);\n }\n else {\n callback();\n if (detectChanges) {\n this.detectChanges();\n }\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.changeDetector.detectChanges();\n }\n }\n intlChange() {\n if (this.instance) {\n this.deferredRedraw();\n }\n }\n rtlChange() {\n if (this.instance && this.rtl !== this.isRTL) {\n this.deferredRedraw();\n }\n }\n deferredRedraw() {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.redrawTimeout);\n this.redrawTimeout = setTimeout(() => {\n this.updateDirection();\n this.instance.noTransitionsRedraw();\n }, 0);\n });\n }\n updateDirection() {\n const current = this.isRTL;\n if (this.rtl !== current) {\n this.setDirection();\n if (this.instance) {\n this.instance.setDirection(current);\n }\n }\n }\n setDirection() {\n this.rtl = this.isRTL;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n get isRTL() {\n return Boolean(this.localizationService.rtl);\n }\n}\nChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: InstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChartComponent, selector: \"kendo-chart\", inputs: { pannable: \"pannable\", renderAs: \"renderAs\", seriesColors: \"seriesColors\", title: \"title\", transitions: \"transitions\", zoomable: \"zoomable\", axisDefaults: \"axisDefaults\", categoryAxis: \"categoryAxis\", chartArea: \"chartArea\", legend: \"legend\", panes: \"panes\", paneDefaults: \"paneDefaults\", plotArea: \"plotArea\", series: \"series\", seriesDefaults: \"seriesDefaults\", tooltip: \"tooltip\", valueAxis: \"valueAxis\", xAxis: \"xAxis\", yAxis: \"yAxis\", resizeRateLimit: \"resizeRateLimit\", popupSettings: \"popupSettings\" }, outputs: { axisLabelClick: \"axisLabelClick\", drag: \"drag\", dragEnd: \"dragEnd\", dragStart: \"dragStart\", legendItemHover: \"legendItemHover\", legendItemLeave: \"legendItemLeave\", noteClick: \"noteClick\", noteHover: \"noteHover\", noteLeave: \"noteLeave\", paneRender: \"paneRender\", plotAreaClick: \"plotAreaClick\", plotAreaHover: \"plotAreaHover\", plotAreaLeave: \"plotAreaLeave\", render: \"render\", select: \"select\", selectEnd: \"selectEnd\", selectStart: \"selectStart\", seriesClick: \"seriesClick\", seriesHover: \"seriesHover\", seriesOver: \"seriesOver\", seriesLeave: \"seriesLeave\", zoom: \"zoom\", zoomEnd: \"zoomEnd\", zoomStart: \"zoomStart\", legendItemClick: \"legendItemClick\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], queries: [{ propertyName: \"donutCenterTemplate\", first: true, predicate: DonutCenterTemplateDirective, descendants: true }, { propertyName: \"seriesComponents\", predicate: SeriesItemComponent, descendants: true }], viewQueries: [{ propertyName: \"tooltipInstance\", first: true, predicate: TooltipPopupComponent, descendants: true, static: true }, { propertyName: \"crossahirTooltips\", first: true, predicate: CrosshairTooltipsContainerComponent, descendants: true, static: true }, { propertyName: \"surfaceElement\", first: true, predicate: [\"surface\"], descendants: true, static: true }], exportAs: [\"kendoChart\"], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n \n \n \n
\n \n
\n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-chart',\n template: `\n
\n \n \n \n \n \n
\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: InstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { pannable: [{\n type: Input\n }], renderAs: [{\n type: Input\n }], seriesColors: [{\n type: Input\n }], title: [{\n type: Input\n }], transitions: [{\n type: Input\n }], zoomable: [{\n type: Input\n }], axisDefaults: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], chartArea: [{\n type: Input\n }], legend: [{\n type: Input\n }], panes: [{\n type: Input\n }], paneDefaults: [{\n type: Input\n }], plotArea: [{\n type: Input\n }], series: [{\n type: Input\n }], seriesDefaults: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], valueAxis: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], axisLabelClick: [{\n type: Output\n }], drag: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], legendItemHover: [{\n type: Output\n }], legendItemLeave: [{\n type: Output\n }], noteClick: [{\n type: Output\n }], noteHover: [{\n type: Output\n }], noteLeave: [{\n type: Output\n }], paneRender: [{\n type: Output\n }], plotAreaClick: [{\n type: Output\n }], plotAreaHover: [{\n type: Output\n }], plotAreaLeave: [{\n type: Output\n }], render: [{\n type: Output\n }], select: [{\n type: Output\n }], selectEnd: [{\n type: Output\n }], selectStart: [{\n type: Output\n }], seriesClick: [{\n type: Output\n }], seriesHover: [{\n type: Output\n }], seriesOver: [{\n type: Output\n }], seriesLeave: [{\n type: Output\n }], zoom: [{\n type: Output\n }], zoomEnd: [{\n type: Output\n }], zoomStart: [{\n type: Output\n }], legendItemClick: [{\n type: Output\n }], resizeRateLimit: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], seriesComponents: [{\n type: ContentChildren,\n args: [SeriesItemComponent, { descendants: true }]\n }], donutCenterTemplate: [{\n type: ContentChild,\n args: [DonutCenterTemplateDirective, { static: false }]\n }], tooltipInstance: [{\n type: ViewChild,\n args: [TooltipPopupComponent, { static: true }]\n }], crossahirTooltips: [{\n type: ViewChild,\n args: [CrosshairTooltipsContainerComponent, { static: true }]\n }], surfaceElement: [{\n type: ViewChild,\n args: ['surface', { static: true }]\n }] } });\n\n/**\n * The default options for all Chart axes.\n * Accepts the options which are supported by [`categoryAxis`]({% slug api_charts_categoryaxisitemcomponent %}),\n * [`valueAxis`]({% slug api_charts_valueaxisitemcomponent %}),\n * [`xAxis`]({% slug api_charts_xaxisitemcomponent %}),\n * and [`yAxis`]({% slug api_charts_yaxisitemcomponent %}).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [4, 8, 8, 9, 9, 9, 3, 8, 9, 6]\n * }, {\n * name: \"Russian Federation\",\n * data: [4, 7, 7, 6, 8, 8, 5, 8, 4, 4]\n * }, {\n * name: \"Germany\",\n * data: [0, 0, 1, 1, 4, 3, 1, 5, 4, 3]\n * },{\n * name: \"World\",\n * data: [2, 3, 4, 4, 4, 4, 1, 2, 4, 3]\n * }];\n *\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n *\n * public background = 'white';\n * // public color = 'cyan'; // will override the line.color option\n * public crosshair = {\n * visible: true\n * };\n * public labels = {\n * font: 'bold 12px/30px Helvetica, Arial, sans-serif',\n * color: '#4CAF50',\n * padding: 5,\n * rotation: 45,\n * background: 'white',\n * border: {\n * color: '#4CAF50',\n * width: 2\n * },\n * };\n * public line = {\n * color: 'black',\n * width: 3\n * };\n *\n * public majorGridLines = {\n * color: 'black',\n * visible: true\n * }\n *\n * public minorGridLines = {\n * color: 'lightgray',\n * visible: true\n * }\n *\n * public majorTicks = {\n * color: 'black',\n * size: 15\n * }\n *\n * public minorTicks = {\n * color: 'lightgray',\n * size: 10\n * }\n *\n * public title = {\n * text: 'Default Axis Title',\n * color: 'black',\n * background: 'white',\n * border: {\n * color: 'black',\n * width: 2\n * },\n * padding: 10\n * }\n * }\n * ```\n */\nclass AxisDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsComponent, selector: \"kendo-chart-axis-defaults\", inputs: { background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nAxisDefaultsCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsCrosshairComponent, selector: \"kendo-chart-axis-defaults-crosshair\", inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], dashType: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the [`axisDefaults.crosshair.tooltip.visible`]({% slug api_charts_axisdefaultscrosshairtooltipcomponent %}#toc-visible)\n * option is set to `true`.\n */\nclass AxisDefaultsCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nAxisDefaultsCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsCrosshairTooltipComponent, selector: \"kendo-chart-axis-defaults-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis labels ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsLabelsComponent, selector: \"kendo-chart-axis-defaults-labels\", inputs: { content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis title ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsTitleComponent, selector: \"kendo-chart-axis-defaults-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass CollectionComponent {\n constructor(configKey, configurationService, collectionService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.items = [];\n this.subscription = collectionService.onItemChange$.subscribe(changes => this.processChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n ngAfterContentInit() {\n this.readItems();\n this.children.changes.subscribe(() => this.readItems());\n }\n processChanges(changes) {\n if (!this.children) {\n return;\n }\n const index = this.children.toArray().indexOf(changes.sender);\n if (index < 0) {\n return;\n }\n this.items[index] = changes.options;\n this.change();\n }\n readItems() {\n this.items = this.children.map(s => s.options);\n this.change();\n }\n change() {\n this.configurationService.notify(new Change(this.configKey, this.items.length === 0 ? undefined : this.items));\n }\n}\nCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nCollectionComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionComponent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * The configuration component for a category axis ([see example]({% slug axes_chart_charts %})).\n */\nclass CategoryAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nCategoryAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisItemComponent, selector: \"kendo-chart-category-axis-item\", inputs: { autoBaseUnitSteps: \"autoBaseUnitSteps\", axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", baseUnitStep: \"baseUnitStep\", categories: \"categories\", color: \"color\", justified: \"justified\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", max: \"max\", maxDateGroups: \"maxDateGroups\", maxDivisions: \"maxDivisions\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", name: \"name\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", roundToBaseUnit: \"roundToBaseUnit\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", select: \"select\", title: \"title\", rangeLabels: \"rangeLabels\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-category-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { autoBaseUnitSteps: [{\n type: Input\n }], axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], baseUnitStep: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], justified: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], max: [{\n type: Input\n }], maxDateGroups: [{\n type: Input\n }], maxDivisions: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], name: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], roundToBaseUnit: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], weekStartDay: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], select: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeLabels: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more category axis items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n * ```\n */\nclass CategoryAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('categoryAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nCategoryAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisComponent, selector: \"kendo-chart-category-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: CategoryAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-category-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [CategoryAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nclass CategoryAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nCategoryAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisCrosshairComponent, selector: \"kendo-chart-category-axis-item-crosshair\", inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], dashType: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass CategoryAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nCategoryAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisCrosshairTooltipComponent, selector: \"kendo-chart-category-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis labels ([see example]({% slug labels_chart_charts %})).\n */\nclass CategoryAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisLabelsComponent, selector: \"kendo-chart-category-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis date range labels ([see example]({% slug labels_chart_charts %})).\n */\nclass CategoryAxisRangeLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.configKey = 'rangeLabels';\n this.markAsVisible();\n }\n}\nCategoryAxisRangeLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisRangeLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisRangeLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisRangeLabelsComponent, selector: \"kendo-chart-category-axis-item-range-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisRangeLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-range-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the category axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nclass CategoryAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesComponent, selector: \"kendo-chart-category-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass CategoryAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesIconComponent, selector: \"kendo-chart-category-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass CategoryAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesLabelComponent, selector: \"kendo-chart-category-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the\n * ([`select.from`]({% slug api_charts_categoryaxisselectcomponent %}#toc-from)\n * —[`select.to`]({% slug api_charts_categoryaxisselectcomponent %}#toc-to)) range will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has to be also specified with date values.\n */\nclass CategoryAxisSelectComponent extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisSelectComponent, selector: \"kendo-chart-category-axis-item-select\", inputs: { from: \"from\", max: \"max\", min: \"min\", mousewheel: \"mousewheel\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { from: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the category axis title.\n */\nclass CategoryAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisTitleComponent, selector: \"kendo-chart-category-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart area.\n * Represents the entire visible area of the Chart\n * ([see example]({% slug chartarea_chart_charts %})).\n */\nclass ChartAreaComponent extends SettingsComponent {\n constructor(configurationService) {\n super('chartArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nChartAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nChartAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChartAreaComponent, selector: \"kendo-chart-area\", inputs: { background: \"background\", border: \"border\", height: \"height\", margin: \"margin\", opacity: \"opacity\", width: \"width\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartAreaComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], width: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart legend\n * ([see example]({% slug legend_chart_charts %})).\n */\nclass LegendComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendComponent, selector: \"kendo-chart-legend\", inputs: { align: \"align\", background: \"background\", border: \"border\", height: \"height\", labels: \"labels\", margin: \"margin\", offsetX: \"offsetX\", offsetY: \"offsetY\", orientation: \"orientation\", padding: \"padding\", position: \"position\", reverse: \"reverse\", visible: \"visible\", width: \"width\", markers: \"markers\", spacing: \"spacing\", inactiveItems: \"inactiveItems\", item: \"item\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], height: [{\n type: Input\n }], labels: [{\n type: Input\n }], margin: [{\n type: Input\n }], offsetX: [{\n type: Input\n }], offsetY: [{\n type: Input\n }], orientation: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], reverse: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], markers: [{\n type: Input\n }], spacing: [{\n type: Input\n }], inactiveItems: [{\n type: Input\n }], item: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the inactive Chart legend items.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass LegendInactiveItemsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend.inactiveItems', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendInactiveItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendInactiveItemsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendInactiveItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendInactiveItemsComponent, selector: \"kendo-chart-legend-inactive-items\", inputs: { labels: \"labels\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendInactiveItemsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-inactive-items',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { labels: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart legend item.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass LegendItemComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend.item', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendItemComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendItemComponent, selector: \"kendo-chart-legend-item\", inputs: { cursor: \"cursor\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { cursor: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for a Chart pane.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public seriesData: number[][] = [[1, 2, 3, 5], [0, 1, 0, 1]];\n * }\n * ```\n */\nclass PaneComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneComponent, selector: \"kendo-chart-pane, kendo-chart-panes-item\", inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", name: \"name\", padding: \"padding\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-pane, kendo-chart-panes-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], clip: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], name: [{\n type: Input\n }], padding: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The default options for all chart panes,\n * ([see example]({% slug panes_chart_charts %}#toc-default-panes-configuration)).\n */\nclass PaneDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nPaneDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPaneDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneDefaultsComponent, selector: \"kendo-chart-pane-defaults\", inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", padding: \"padding\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], clip: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the pane default title.\n */\nclass PaneDefaultsTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n}\nPaneDefaultsTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPaneDefaultsTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneDefaultsTitleComponent, selector: \"kendo-chart-pane-defaults-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more pane configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass PanesComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('panes', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPanesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nPanesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanesComponent, selector: \"kendo-chart-panes\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: PaneComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-panes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [PaneComponent]\n }] } });\n\n/**\n * The configuration of the Chart pane title.\n */\nclass PanesTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nPanesTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPanesTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanesTitleComponent, selector: \"kendo-chart-pane-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], position: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the plot area\n * ([see example]({% slug plotarea_chart_charts %})).\n * The plot area is the area which displays the series.\n */\nclass PlotAreaComponent extends SettingsComponent {\n constructor(configurationService) {\n super('plotArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nPlotAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PlotAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPlotAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PlotAreaComponent, selector: \"kendo-chart-plot-area\", inputs: { background: \"background\", border: \"border\", margin: \"margin\", opacity: \"opacity\", padding: \"padding\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PlotAreaComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-plot-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], padding: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more series items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SeriesComponent extends CollectionComponent {\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super('series', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n ngAfterContentChecked() {\n this.readTooltipTemplates();\n }\n readTooltipTemplates() {\n const templates = this.children.map((item) => item.seriesTooltipTemplateRef);\n this.tooltipTemplateService.setSeriesTemplates(templates);\n }\n}\nSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesComponent, selector: \"kendo-chart-series\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: SeriesItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-series',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [SeriesItemComponent]\n }] } });\n\n/**\n * The default options for all series\n * ([see example]({% slug series_chart_charts %}#toc-default-series-configuration)).\n */\nclass SeriesDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsComponent, selector: \"kendo-chart-series-defaults\", inputs: { border: \"border\", gap: \"gap\", highlight: \"highlight\", overlay: \"overlay\", spacing: \"spacing\", stack: \"stack\", type: \"type\", visual: \"visual\", labels: \"labels\", notes: \"notes\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { border: [{\n type: Input\n }], gap: [{\n type: Input\n }], highlight: [{\n type: Input\n }], overlay: [{\n type: Input\n }], spacing: [{\n type: Input\n }], stack: [{\n type: Input\n }], type: [{\n type: Input\n }], visual: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series label.\n */\nclass SeriesDefaultsLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsComponent, selector: \"kendo-chart-series-defaults-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The `from` label configuration of the Chart series.\n */\nclass SeriesDefaultsLabelsFromComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.from', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsFromComponent, selector: \"kendo-chart-series-defaults-labels-from\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The `to` label configuration of the Chart series.\n */\nclass SeriesDefaultsLabelsToComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.to', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsToComponent, selector: \"kendo-chart-series-defaults-labels-to\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the [`seriesDefaults`]({% slug api_charts_seriesdefaultscomponent %}) notes.\n */\nclass SeriesDefaultsNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesComponent, selector: \"kendo-chart-series-defaults-notes\", inputs: { line: \"line\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { line: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass SeriesDefaultsNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesIconComponent, selector: \"kendo-chart-series-defaults-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass SeriesDefaultsNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesLabelComponent, selector: \"kendo-chart-series-defaults-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart series tooltip.\n */\nclass SeriesDefaultsTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsTooltipComponent, selector: \"kendo-chart-series-defaults-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The error bars of the Chart series\n * ([see example]({% slug errorbars_chart_charts %})).\n */\nclass SeriesErrorBarsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('errorBars', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesErrorBarsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesErrorBarsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesErrorBarsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesErrorBarsComponent, selector: \"kendo-chart-series-item-error-bars\", inputs: { color: \"color\", endCaps: \"endCaps\", line: \"line\", value: \"value\", visual: \"visual\", xValue: \"xValue\", yValue: \"yValue\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesErrorBarsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-error-bars',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], endCaps: [{\n type: Input\n }], line: [{\n type: Input\n }], value: [{\n type: Input\n }], visual: [{\n type: Input\n }], xValue: [{\n type: Input\n }], yValue: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series extremes.\n * Applies to extreme outliers.\n * For more information, refer to [`series.outliers`]({% slug api_charts_seriesitemcomponent %}#toc-outliers).\n */\nclass SeriesExtremesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('extremes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesExtremesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesExtremesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesExtremesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesExtremesComponent, selector: \"kendo-chart-series-item-extremes\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesExtremesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-extremes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\n\n/**\n * The Chart series highlighting configuration options.\n */\nclass SeriesHighlightComponent extends SettingsComponent {\n constructor(configurationService) {\n super('highlight', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesHighlightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesHighlightComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesHighlightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesHighlightComponent, selector: \"kendo-chart-series-item-highlight\", inputs: { border: \"border\", color: \"color\", line: \"line\", markers: \"markers\", opacity: \"opacity\", toggle: \"toggle\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesHighlightComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-highlight',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { border: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], markers: [{\n type: Input\n }], opacity: [{\n type: Input\n }], toggle: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series label\n * ([see example]({% slug labels_chart_charts %})).\n */\nclass SeriesLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsComponent, selector: \"kendo-chart-series-item-labels\", inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", content: \"content\", distance: \"distance\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], distance: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The `from` label configuration of the Chart series.\n */\nclass SeriesLabelsFromComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels.from', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsFromComponent, selector: \"kendo-chart-series-item-labels-from\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The `to` label configuration of the Chart series.\n */\nclass SeriesLabelsToComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels.to', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsToComponent, selector: \"kendo-chart-series-item-labels-to\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series marker.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855],\n * markers: {\n * background: 'red',\n * size: 20,\n * type: 'circle'\n * }\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3],\n * markers: {\n * background: 'yellow',\n * size: 10,\n * type: 'square',\n * rotation: 45\n * }\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995],\n * markers: {\n * background: 'green',\n * size: 20,\n * type: 'triangle'\n * }\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727],\n * markers: {\n * background: 'blue',\n * size: 10,\n * type: 'cross'\n * }\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nclass SeriesMarkersComponent extends SettingsComponent {\n constructor(configurationService) {\n super('markers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesMarkersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesMarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesMarkersComponent, selector: \"kendo-chart-series-item-markers\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesMarkersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-markers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The series notes configuration\n * ([see example]({% slug notes_chart_charts %})).\n */\nclass SeriesNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesComponent, selector: \"kendo-chart-series-item-notes\", inputs: { line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass SeriesNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesIconComponent, selector: \"kendo-chart-series-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass SeriesNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesLabelComponent, selector: \"kendo-chart-series-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series outliers.\n * Applies to mild outliers.\n * For more information, refer to the [`series.extremes`]({% slug api_charts_seriesitemcomponent %}#toc-extremes) option.\n */\nclass SeriesOutliersComponent extends SettingsComponent {\n constructor(configurationService) {\n super('outliers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesOutliersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesOutliersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesOutliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesOutliersComponent, selector: \"kendo-chart-series-item-outliers\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesOutliersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-outliers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart title or text\n * ([see example]({% slug title_chart_charts %})).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *

\n * \n * `\n * })\n * export class AppComponent {\n * public isVisible = true;\n * public borderOptions = {\n * color: \"rgba(255, 0, 0, 0.8)\",\n * dashType: 'dash',\n * width: 2\n * };\n *\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nclass TitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TitleComponent, selector: \"kendo-chart-title\", inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", text: \"text\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nclass TooltipComponent extends SettingsComponent {\n constructor(configurationService, templateService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n this.templateService = templateService;\n this.markAsVisible();\n }\n ngAfterContentChecked() {\n this.templateService.setTemplate(this.seriesTooltipTemplate ? this.seriesTooltipTemplate.templateRef : null);\n this.templateService.setSharedTemplate(this.sharedTooltipTemplate ? this.sharedTooltipTemplate.templateRef : null);\n }\n}\nTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipComponent, deps: [{ token: ConfigurationService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipComponent, selector: \"kendo-chart-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", opacity: \"opacity\", padding: \"padding\", shared: \"shared\", visible: \"visible\" }, queries: [{ propertyName: \"seriesTooltipTemplate\", first: true, predicate: SeriesTooltipTemplateDirective, descendants: true }, { propertyName: \"sharedTooltipTemplate\", first: true, predicate: SharedTooltipTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chart-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: TooltipTemplateService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], opacity: [{\n type: Input\n }], padding: [{\n type: Input\n }], shared: [{\n type: Input\n }], visible: [{\n type: Input\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], sharedTooltipTemplate: [{\n type: ContentChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }] } });\n\n/**\n * The configuration component for a value axis.\n */\nclass ValueAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisItemComponent, selector: \"kendo-chart-value-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-value-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more value axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass ValueAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('valueAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisComponent, selector: \"kendo-chart-value-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: ValueAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-value-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [ValueAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nclass ValueAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nValueAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisCrosshairComponent, selector: \"kendo-chart-value-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass ValueAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nValueAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisCrosshairTooltipComponent, selector: \"kendo-chart-value-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass ValueAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisLabelsComponent, selector: \"kendo-chart-value-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the value axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nclass ValueAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesComponent, selector: \"kendo-chart-value-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass ValueAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesIconComponent, selector: \"kendo-chart-value-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass ValueAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesLabelComponent, selector: \"kendo-chart-value-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the value axis.\n */\nclass ValueAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisTitleComponent, selector: \"kendo-chart-value-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for an X axis\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nclass XAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.intl = intl;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nXAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nXAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisItemComponent, selector: \"kendo-chart-x-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", categories: \"categories\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-x-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], weekStartDay: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more X-axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nclass XAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('xAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nXAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisComponent, selector: \"kendo-chart-x-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: XAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-x-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [XAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nclass XAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nXAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisCrosshairComponent, selector: \"kendo-chart-x-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass XAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nXAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisCrosshairTooltipComponent, selector: \"kendo-chart-x-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass XAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisLabelsComponent, selector: \"kendo-chart-x-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the X-axis notes.\n * For an example on the basic usage of the XAxisNotesComponent,\n * refer to the [demo on the XAxisComponent]({% slug api_charts_xaxiscomponent %})\n * or to the documentation about the\n * [axis notes]({% slug notes_chart_charts %}#toc-axis-notes).\n */\nclass XAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesComponent, selector: \"kendo-chart-x-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass XAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesIconComponent, selector: \"kendo-chart-x-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass XAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesLabelComponent, selector: \"kendo-chart-x-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the Scatter Chart X axis.\n */\nclass XAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisTitleComponent, selector: \"kendo-chart-x-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for the Y axis\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisItemComponent, selector: \"kendo-chart-y-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", categories: \"categories\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-y-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more Y-axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nclass YAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('yAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisComponent, selector: \"kendo-chart-y-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: YAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-y-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [YAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nYAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisCrosshairComponent, selector: \"kendo-chart-y-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass YAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nYAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisCrosshairTooltipComponent, selector: \"kendo-chart-y-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass YAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisLabelsComponent, selector: \"kendo-chart-y-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Y axis notes\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesComponent, selector: \"kendo-chart-y-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass YAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesIconComponent, selector: \"kendo-chart-y-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass YAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesLabelComponent, selector: \"kendo-chart-y-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the Scatter Chart Y axis.\n */\nclass YAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisTitleComponent, selector: \"kendo-chart-y-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * Specifies if the Chart can be zoomed.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * ```\n */\nclass ZoomableComponent extends SettingsComponent {\n constructor(configurationService) {\n super('zoomable', configurationService);\n this.configurationService = configurationService;\n }\n}\nZoomableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ZoomableComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nZoomableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ZoomableComponent, selector: \"kendo-chart-zoomable\", inputs: { mousewheel: \"mousewheel\", selection: \"selection\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ZoomableComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-zoomable',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { mousewheel: [{\n type: Input\n }], selection: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst CHART_DIRECTIVES = [\n ChartComponent,\n TooltipPopupComponent,\n SeriesTooltipTemplateDirective,\n SharedTooltipTemplateDirective,\n CrosshairTooltipsContainerComponent,\n CrosshairTooltipComponent,\n DonutCenterTemplateDirective,\n AxisDefaultsComponent,\n AxisDefaultsCrosshairComponent,\n AxisDefaultsCrosshairTooltipComponent,\n AxisDefaultsLabelsComponent,\n AxisDefaultsTitleComponent,\n CategoryAxisComponent,\n CategoryAxisCrosshairComponent,\n CategoryAxisCrosshairTooltipComponent,\n CategoryAxisItemComponent,\n CategoryAxisLabelsComponent,\n CategoryAxisRangeLabelsComponent,\n CategoryAxisNotesComponent,\n CategoryAxisNotesIconComponent,\n CategoryAxisNotesLabelComponent,\n CategoryAxisSelectComponent,\n CategoryAxisTitleComponent,\n ChartAreaComponent,\n LegendComponent,\n LegendInactiveItemsComponent,\n LegendItemComponent,\n PaneComponent,\n PaneDefaultsComponent,\n PaneDefaultsTitleComponent,\n PanesComponent,\n PanesTitleComponent,\n PlotAreaComponent,\n SeriesComponent,\n SeriesDefaultsComponent,\n SeriesDefaultsLabelsComponent,\n SeriesDefaultsLabelsFromComponent,\n SeriesDefaultsLabelsToComponent,\n SeriesDefaultsNotesComponent,\n SeriesDefaultsNotesIconComponent,\n SeriesDefaultsNotesLabelComponent,\n SeriesDefaultsTooltipComponent,\n SeriesErrorBarsComponent,\n SeriesExtremesComponent,\n SeriesHighlightComponent,\n SeriesItemComponent,\n SeriesLabelsComponent,\n SeriesLabelsFromComponent,\n SeriesLabelsToComponent,\n SeriesMarkersComponent,\n SeriesNotesComponent,\n SeriesNotesIconComponent,\n SeriesNotesLabelComponent,\n SeriesOutliersComponent,\n SeriesTooltipComponent,\n TitleComponent,\n TooltipComponent,\n ValueAxisComponent,\n ValueAxisCrosshairComponent,\n ValueAxisCrosshairTooltipComponent,\n ValueAxisItemComponent,\n ValueAxisLabelsComponent,\n ValueAxisNotesComponent,\n ValueAxisNotesIconComponent,\n ValueAxisNotesLabelComponent,\n ValueAxisTitleComponent,\n XAxisComponent,\n XAxisCrosshairComponent,\n XAxisCrosshairTooltipComponent,\n XAxisItemComponent,\n XAxisLabelsComponent,\n XAxisNotesComponent,\n XAxisNotesIconComponent,\n XAxisNotesLabelComponent,\n XAxisTitleComponent,\n YAxisComponent,\n YAxisCrosshairComponent,\n YAxisCrosshairTooltipComponent,\n YAxisItemComponent,\n YAxisLabelsComponent,\n YAxisNotesComponent,\n YAxisNotesIconComponent,\n YAxisNotesLabelComponent,\n YAxisTitleComponent,\n ZoomableComponent\n];\n\n// Re-export event types\n\n/**\n * Specifies the `weekStartDay` of a [CategoryAxisItemComponent]({% slug api_charts_categoryaxisitemcomponent %}).\n */\nvar WeekStartDay;\n(function (WeekStartDay) {\n /**\n * Specifies Sunday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * Specifies Monday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Monday\"] = 1] = \"Monday\";\n /**\n * Specifies Tuesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * Specifies Wednesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * Specifies Thursday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * Specifies Friday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Friday\"] = 5] = \"Friday\";\n /**\n * Specifies Saturday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekStartDay || (WeekStartDay = {}));\n\n/**\n * The arguments for the `navigatorFilter` event.\n */\nclass NavigatorFilterEvent extends BaseEvent {\n /**\n * Constructs the event arguments from a raw object.\n */\n constructor(e, sender) {\n super(sender);\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n// Re-export event types\n\n/**\n * @hidden\n */\nclass RootConfigurationService extends ConfigurationService {\n}\nRootConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nRootConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService, decorators: [{\n type: Injectable\n }] });\n\nconst EVENT_MAP = {\n navigatorFilter: NavigatorFilterEvent\n};\n/**\n * @hidden\n */\nclass StockInstanceEventService extends InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP[name]) {\n return new EVENT_MAP[name](args, sender);\n }\n return super.create(name, args, sender);\n }\n}\n\nconst NAVIGATOR_DEFAULTS = {\n autoBindElements: true,\n liveDrag: false,\n partialRedraw: true\n};\n/**\n * The root StockChart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nclass StockChartComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when the navigator range is changed.\n */\n this.navigatorFilter = new EventEmitter();\n this.redrawSlaves = false;\n this.hostClasses = ['k-chart', 'k-stockchart'];\n validatePackage(packageMetadata);\n }\n /**\n * If called, the navigator pane is not redrawn the next time the StockChart options are updated.\n * The method is useful if you need to update only the main series data for the selected period.\n */\n skipNavigatorRedraw() {\n this.redrawSlaves = true;\n }\n createInstance(element, observer) {\n this.applyNavigatorDefaults();\n if (this.isDevMode() && (this.options.zoomable || this.options.pannable)) {\n throw new Error('The pannable and zoomable options are not supported by the StockChart component.');\n }\n this.instance = new StockChart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.applyNavigatorDefaults();\n if (this.redrawSlaves) {\n this.instance.applyOptions(this.options);\n this.instance.bindCategories();\n this.instance.navigator.redrawSlaves();\n }\n else {\n this.instance.setOptions(this.options);\n }\n this.redrawSlaves = false;\n }\n applyNavigatorDefaults() {\n this.options.navigator = Object.assign({}, this.options.navigator, NAVIGATOR_DEFAULTS);\n }\n isDevMode() {\n return isDevMode();\n }\n}\nStockChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: StockInstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nStockChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StockChartComponent, selector: \"kendo-stockchart\", inputs: { navigator: \"navigator\", pannable: \"pannable\", zoomable: \"zoomable\" }, outputs: { navigatorFilter: \"navigatorFilter\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], exportAs: [\"kendoStockChart\"], usesInheritance: true, ngImport: i0, template: `\n
\n \n \n \n \n \n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoStockChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-stockchart',\n template: `\n
\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: StockInstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { navigator: [{\n type: Input\n }], pannable: [{\n type: Input\n }], zoomable: [{\n type: Input\n }], navigatorFilter: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nconst PREFIX = new InjectionToken('configuration prefix');\n/**\n * @hidden\n */\nclass PrefixConfigurationService extends ConfigurationService {\n constructor(rootService, prefix, ngZone) {\n super(ngZone);\n this.rootService = rootService;\n this.prefix = prefix;\n }\n push(store) {\n this.rootService.notify(new Change(this.prefix, store));\n }\n notify(change) {\n change.key = this.prefix + (change.key ? `.${change.key}` : '');\n this.rootService.notify(change);\n }\n}\nPrefixConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService, deps: [{ token: RootConfigurationService }, { token: PREFIX }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nPrefixConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: RootConfigurationService, decorators: [{\n type: Inject,\n args: [RootConfigurationService]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PREFIX]\n }] }, { type: i0.NgZone }]; } });\n\n/**\n * The configuration options of the navigator\n * ([see runnable example]({% slug overview_stockchart_charts %}#toc-navigator)).\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *

\n * \n * `\n * })\n * ```\n */\nclass NavigatorComponent extends SettingsComponent {\n constructor(configurationService) {\n super('', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorComponent, selector: \"kendo-chart-navigator\", inputs: { visible: \"visible\", categoryAxis: \"categoryAxis\", hint: \"hint\", pane: \"pane\", select: \"select\", series: \"series\" }, providers: [{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { visible: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], hint: [{\n type: Input\n }], pane: [{\n type: Input\n }], select: [{\n type: Input\n }], series: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of the navigator category axis.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NavigatorCategoryAxisComponent extends CategoryAxisItemComponent {\n constructor(configurationService, intl, localeId) {\n super(configurationService, null, intl, localeId);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisComponent, deps: [{ token: ConfigurationService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisComponent, selector: \"kendo-chart-navigator-category-axis\", providers: [{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }],\n selector: 'kendo-chart-navigator-category-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * The configuration options of the crosshair.\n */\nclass NavigatorCategoryAxisCrosshairComponent extends CategoryAxisCrosshairComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisCrosshairComponent, selector: \"kendo-chart-navigator-category-axis-crosshair\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass NavigatorCategoryAxisCrosshairTooltipComponent extends CategoryAxisCrosshairTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisCrosshairTooltipComponent, selector: \"kendo-chart-navigator-category-axis-crosshair-tooltip\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the axis labels.\n */\nclass NavigatorCategoryAxisLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisLabelsComponent, selector: \"kendo-chart-navigator-category-axis-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the category axis notes.\n */\nclass NavigatorCategoryAxisNotesComponent extends CategoryAxisNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesComponent, selector: \"kendo-chart-navigator-category-axis-notes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The icon of the notes.\n */\nclass NavigatorCategoryAxisNotesIconComponent extends CategoryAxisNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesIconComponent, selector: \"kendo-chart-navigator-category-axis-notes-icon\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label of the notes.\n */\nclass NavigatorCategoryAxisNotesLabelComponent extends CategoryAxisNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesLabelComponent, selector: \"kendo-chart-navigator-category-axis-notes-label\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the range (`select.from`, `select.to`) will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has also to be specified with date values.\n */\nclass NavigatorCategoryAxisSelectComponent extends CategoryAxisSelectComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisSelectComponent, selector: \"kendo-chart-navigator-category-axis-select\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The title configuration of the navigator category axis.\n */\nclass NavigatorCategoryAxisTitleComponent extends CategoryAxisTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisTitleComponent, selector: \"kendo-chart-navigator-category-axis-title\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The default options of the navigator hint\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nclass NavigatorHintComponent extends SettingsComponent {\n constructor(configurationService) {\n super('hint', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorHintComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorHintComponent, selector: \"kendo-chart-navigator-hint\", inputs: { content: \"content\", format: \"format\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorHintComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-hint',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { content: [{\n type: Input\n }], format: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of the navigator pane\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nclass NavigatorPaneComponent extends PaneComponent {\n constructor(configurationService) {\n super(configurationService, null);\n this.configurationService = configurationService;\n }\n}\nNavigatorPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorPaneComponent, selector: \"kendo-chart-navigator-pane\", providers: [{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator-pane',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The title configuration of the StockChart navigator pane.\n */\nclass NavigatorPaneTitleComponent extends PanesTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorPaneTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorPaneTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorPaneTitleComponent, selector: \"kendo-chart-navigator-pane-title\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-pane-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * Specifies the initially selected range.\n * If no range is specified, the full range of values is rendered.\n */\nclass NavigatorSelectComponent extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSelectComponent, selector: \"kendo-chart-navigator-select\", inputs: { from: \"from\", to: \"to\", mousewheel: \"mousewheel\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { from: [{\n type: Input\n }], to: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of a navigator series item\n * ([see example]({% slug navigator_stockchart_charts %})).\n */\nclass NavigatorSeriesItemComponent extends SeriesItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nNavigatorSeriesItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesItemComponent, selector: \"kendo-chart-navigator-series-item\", providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-navigator-series-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * A collection of one or more navigator series items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nclass NavigatorSeriesComponent extends SeriesComponent {\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super(configurationService, collectionService, tooltipTemplateService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n readTooltipTemplates() {\n }\n}\nNavigatorSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesComponent, selector: \"kendo-chart-navigator-series\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: NavigatorSeriesItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-navigator-series',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [NavigatorSeriesItemComponent]\n }] } });\n\n/**\n * The error bars of the StockChart navigator series.\n */\nclass NavigatorSeriesErrorBarsComponent extends SeriesErrorBarsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesErrorBarsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesErrorBarsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesErrorBarsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesErrorBarsComponent, selector: \"kendo-chart-navigator-series-item-error-bars\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesErrorBarsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-error-bars',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The extremes configuration of the StockChart navigator series. Applies to extreme outliers.\n */\nclass NavigatorSeriesExtremesComponent extends SeriesExtremesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesExtremesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesExtremesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesExtremesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesExtremesComponent, selector: \"kendo-chart-navigator-series-item-extremes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesExtremesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-extremes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the StockChart series highlight.\n */\nclass NavigatorSeriesHighlightComponent extends SeriesHighlightComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesHighlightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesHighlightComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesHighlightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesHighlightComponent, selector: \"kendo-chart-navigator-series-item-highlight\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesHighlightComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-highlight',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsComponent extends SeriesLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsComponent, selector: \"kendo-chart-navigator-series-item-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The `from` label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsFromComponent extends SeriesLabelsFromComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsFromComponent, selector: \"kendo-chart-navigator-series-item-labels-from\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The `to` label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsToComponent extends SeriesLabelsToComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsToComponent, selector: \"kendo-chart-navigator-series-item-labels-to\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The marker configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesMarkersComponent extends SeriesMarkersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesMarkersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesMarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesMarkersComponent, selector: \"kendo-chart-navigator-series-item-markers\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesMarkersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-markers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The notes configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesNotesComponent extends SeriesNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesComponent, selector: \"kendo-chart-navigator-series-item-notes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The icon of the notes.\n */\nclass NavigatorSeriesNotesIconComponent extends SeriesNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesIconComponent, selector: \"kendo-chart-navigator-series-item-notes-icon\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label of the notes.\n */\nclass NavigatorSeriesNotesLabelComponent extends SeriesNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesLabelComponent, selector: \"kendo-chart-navigator-series-item-notes-label\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The outliers configuration of the StockChart navigator series. Applies to mild outliers.\n */\nclass NavigatorSeriesOutliersComponent extends SeriesOutliersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesOutliersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesOutliersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesOutliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesOutliersComponent, selector: \"kendo-chart-navigator-series-item-outliers\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesOutliersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-outliers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The tooltip configuration of the StockChart navigator series.\n * The StockChart navigator series tooltip is displayed when the `navigator.series.tooltip.visible` option is set to `true`.\n */\nclass NavigatorSeriesTooltipComponent extends SeriesTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesTooltipComponent, selector: \"kendo-chart-navigator-series-item-tooltip\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * @hidden\n */\nconst STOCK_CHART_DIRECTIVES = [\n StockChartComponent,\n NavigatorComponent,\n NavigatorCategoryAxisComponent,\n NavigatorCategoryAxisCrosshairComponent,\n NavigatorCategoryAxisCrosshairTooltipComponent,\n NavigatorCategoryAxisLabelsComponent,\n NavigatorCategoryAxisNotesComponent,\n NavigatorCategoryAxisNotesIconComponent,\n NavigatorCategoryAxisNotesLabelComponent,\n NavigatorCategoryAxisSelectComponent,\n NavigatorCategoryAxisTitleComponent,\n NavigatorHintComponent,\n NavigatorPaneComponent,\n NavigatorPaneTitleComponent,\n NavigatorSelectComponent,\n NavigatorSeriesComponent,\n NavigatorSeriesItemComponent,\n NavigatorSeriesErrorBarsComponent,\n NavigatorSeriesExtremesComponent,\n NavigatorSeriesHighlightComponent,\n NavigatorSeriesLabelsComponent,\n NavigatorSeriesLabelsFromComponent,\n NavigatorSeriesLabelsToComponent,\n NavigatorSeriesMarkersComponent,\n NavigatorSeriesNotesComponent,\n NavigatorSeriesNotesIconComponent,\n NavigatorSeriesNotesLabelComponent,\n NavigatorSeriesOutliersComponent,\n NavigatorSeriesTooltipComponent\n];\n\n/**\n * The root Chart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [\n * 936, 968, 1025, 999, 998, 1014, 1017, 1010, 1010, 1007,\n * 1004, 988, 990, 988, 987, 995, 946, 954, 991, 984,\n * 974, 956, 986, 936, 955, 1021, 1013, 1005, 958, 953,\n * 952, 940, 937, 980, 966, 965, 928, 916, 910, 980\n * ];\n * }\n *\n * ```\n */\nclass SparklineComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.tooltipWrapperClass = 'k-sparkline-tooltip-wrapper';\n /**\n * @hidden\n */\n this.tooltipContentClasses = {\n 'k-sparkline-tooltip': true\n };\n this.hostClasses = ['k-sparkline', 'k-widget'];\n validatePackage(packageMetadata);\n }\n createInstance(element, observer) {\n this.instance = new Sparkline(element, Sparkline.normalizeOptions(this.options), this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.instance.setOptions(Sparkline.normalizeOptions(this.options));\n }\n}\nSparklineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: InstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSparklineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SparklineComponent, selector: \"kendo-sparkline\", inputs: { type: \"type\", data: \"data\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], exportAs: [\"kendoSparkline\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoSparkline',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-sparkline',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: InstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { type: [{\n type: Input\n }], data: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst SPARKLINE_DIRECTIVES = [\n SparklineComponent\n];\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Chart component and directives.\n *\n * Imports the ChartModule into your application\n * [root module]({{ site.data.url.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Chart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass ChartModule {\n}\nChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, declarations: [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent], imports: [CommonModule, PopupModule, ResizeSensorModule], exports: [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent] });\nChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, providers: [\n ThemeService\n ], imports: [[CommonModule, PopupModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CHART_DIRECTIVES],\n exports: [CHART_DIRECTIVES],\n imports: [CommonModule, PopupModule, ResizeSensorModule],\n providers: [\n ThemeService\n ]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the StockChart component and directives.\n *\n * Imports the StockChartModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the StockChart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { StockChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, StockChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass StockChartModule {\n}\nStockChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStockChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, declarations: [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent], imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule], exports: [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, ChartModule] });\nStockChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [STOCK_CHART_DIRECTIVES],\n exports: [STOCK_CHART_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Sparkline component and directives.\n *\n * Imports the SparklineModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Sparkline component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { SparklineModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, SparklineModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass SparklineModule {\n}\nSparklineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSparklineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, declarations: [SparklineComponent], imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule], exports: [SparklineComponent, ChartModule] });\nSparklineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SPARKLINE_DIRECTIVES],\n exports: [SPARKLINE_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes all Chart components and directives.\n *\n * Imports the ChartsModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Charts components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartsModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartsModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass ChartsModule {\n}\nChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, exports: [ChartModule, SparklineModule, StockChartModule] });\nChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, imports: [ChartModule, SparklineModule, StockChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ChartModule, SparklineModule, StockChartModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, AxisLabelClickEvent, CHART_DIRECTIVES, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisRangeLabelsComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, ChartComponent, ChartModule, ChartsModule, CrosshairTooltipComponent, CrosshairTooltipsContainerComponent, DonutCenterTemplateDirective, DragEndEvent, DragEvent, DragStartEvent, LegendComponent, LegendInactiveItemsComponent, LegendItemClickEvent, LegendItemComponent, LegendItemHoverEvent, LegendItemLeaveEvent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorComponent, NavigatorFilterEvent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesItemComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, NoteClickEvent, NoteHoverEvent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PaneRenderEvent, PanesComponent, PanesTitleComponent, PlotAreaClickEvent, PlotAreaComponent, PlotAreaHoverEvent, RenderEvent, SPARKLINE_DIRECTIVES, STOCK_CHART_DIRECTIVES, SelectEndEvent, SelectEvent, SelectStartEvent, SeriesClickEvent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesHoverEvent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, SparklineComponent, SparklineModule, StockChartComponent, StockChartModule, TitleComponent, TooltipComponent, TooltipPopupComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, WeekStartDay, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomEndEvent, ZoomEvent, ZoomStartEvent, ZoomableComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, NgModule, Injectable, Component } from '@angular/core';\nimport Draggable from '@telerik/kendo-draggable';\nimport { CommonModule } from '@angular/common';\nimport { auditTime } from 'rxjs/operators';\nimport { merge, fromEvent, from } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isDocumentAvailable = () => typeof document !== 'undefined';\n\n/**\n * @hidden\n */\nconst isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&\n (!changes[propertyName].isFirstChange() || !skipFirstChange) &&\n changes[propertyName].previousValue !== changes[propertyName].currentValue);\n\n/**\n * @hidden\n */\nconst anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));\n\n/**\n * @hidden\n */\nconst hasObservers = (emitter) => emitter && emitter.observers.length > 0;\n\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n for (let i = 0; i < 32; i++) {\n const random = Math.random() * 16 | 0; // eslint-disable-line no-bitwise\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n // eslint-disable-next-line no-bitwise\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n\nclass DraggableDirective {\n constructor(element, ngZone) {\n this.element = element;\n this.ngZone = ngZone;\n this.enableDrag = true;\n this.kendoPress = new EventEmitter();\n this.kendoDrag = new EventEmitter();\n this.kendoRelease = new EventEmitter();\n }\n ngOnInit() {\n this.toggleDraggable();\n }\n ngOnChanges(changes) {\n if (isChanged('enableDrag', changes)) {\n this.toggleDraggable();\n }\n }\n ngOnDestroy() {\n this.destroyDraggable();\n }\n toggleDraggable() {\n if (isDocumentAvailable()) {\n this.destroyDraggable();\n if (this.enableDrag) {\n this.draggable = new Draggable({\n drag: (e) => this.kendoDrag.next(e),\n press: (e) => this.kendoPress.next(e),\n release: (e) => this.kendoRelease.next(e)\n });\n this.ngZone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n }\n }\n destroyDraggable() {\n if (this.draggable) {\n this.draggable.destroy();\n this.draggable = null;\n }\n }\n}\nDraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DraggableDirective, selector: \"[kendoDraggable]\", inputs: { enableDrag: \"enableDrag\" }, outputs: { kendoPress: \"kendoPress\", kendoDrag: \"kendoDrag\", kendoRelease: \"kendoRelease\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDraggable]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { enableDrag: [{\n type: Input\n }], kendoPress: [{\n type: Output\n }], kendoDrag: [{\n type: Output\n }], kendoRelease: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass DraggableModule {\n}\nDraggableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDraggableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, declarations: [DraggableDirective], imports: [CommonModule], exports: [DraggableDirective] });\nDraggableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DraggableDirective],\n exports: [DraggableDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst contains = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const tabIndex = element.getAttribute('tabIndex');\n const visible = !checkVisibility || isVisible(element);\n return visible && tabIndex !== '-1';\n};\n\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n\nconst NODE_NAME_PREDICATES = {};\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n\n/**\n * Normalizes a scroll position value in RTL mode.\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass EventsOutsideAngularDirective {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.events = {};\n }\n ngOnInit() {\n if (!this.element || !this.element.nativeElement) {\n return;\n }\n const events = this.events;\n this.subscriptions = [];\n this.ngZone.runOutsideAngular(() => {\n for (let name in events) {\n if (events.hasOwnProperty(name)) {\n this.subscriptions.push(this.renderer.listen(this.element.nativeElement, name, this.scope ? events[name].bind(this.scope) : events[name]));\n }\n }\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n for (let idx = 0; idx < this.subscriptions.length; idx++) {\n this.subscriptions[idx]();\n }\n this.subscriptions = null;\n }\n }\n}\nEventsOutsideAngularDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nEventsOutsideAngularDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: { events: [\"kendoEventsOutsideAngular\", \"events\"], scope: \"scope\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEventsOutsideAngular]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { events: [{\n type: Input,\n args: ['kendoEventsOutsideAngular']\n }], scope: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass EventsModule {\n}\nEventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nEventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, declarations: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] });\nEventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EventsOutsideAngularDirective],\n exports: [EventsOutsideAngularDirective]\n }]\n }] });\n\nclass ResizeService {\n constructor(resizeBatchService) {\n this.resizeBatchService = resizeBatchService;\n this.resize = new EventEmitter();\n this.acceptedSize = false;\n this.state = 0 /* Initial */;\n }\n acceptSize(size = this.measure()) {\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n this.acceptedSize = true;\n }\n checkChanges() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.state === 0 /* Initial */) {\n this.state = 1 /* Initializing */;\n // batch initial measure\n this.resizeBatchService.schedule(this, this.init);\n }\n }\n destroy() {\n this.resizeBatchService.cancel(this);\n }\n checkSize() {\n if (!this.parentElement) {\n return;\n }\n const { width, height } = this.measure();\n const sameSize = width === this.lastWidth && height === this.lastHeight;\n if (sameSize) {\n return;\n }\n this.lastWidth = width;\n this.lastHeight = height;\n this.acceptedSize = false;\n this.resize.emit();\n return true;\n }\n initSize() {\n const size = this.measure();\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n }\n measure() {\n let width = 0;\n let height = 0;\n if (this.parentElement) {\n height = this.parentElement.offsetHeight;\n width = this.parentElement.offsetWidth;\n }\n return { height, width };\n }\n}\n\n// eslint-disable import/no-deprecated\nconst div = style => {\n const el = document.createElement('div');\n el.style.cssText = style;\n return el;\n};\nconst computedProp = (elem, prop) => getComputedStyle(elem, null).getPropertyValue(prop);\nconst WRAP_STYLE = 'position: absolute; display: block; left: 0; top: 0; right: 0; bottom: 0; z-index: -1;' +\n 'overflow: hidden; visibility: hidden;';\nconst EXPAND_CHILD_STYLE = 'position: absolute; left: 0; top: 0; transition: 0s;';\nconst SHRINK_CHILD_STYLE = EXPAND_CHILD_STYLE + 'width: 200%; height: 200%;';\nclass ResizeCompatService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n checkChanges() {\n if (this.state === 2 /* Initialized */) {\n if (!this.resizeBatchService.isScheduled(this)) {\n this.resizeBatchService.schedule(this, this.checkSize);\n }\n return;\n }\n super.checkChanges();\n }\n destroy() {\n super.destroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.expand) {\n const element = this.element.nativeElement;\n element.removeChild(this.expand);\n element.removeChild(this.shrink);\n this.expand.removeChild(this.expandChild);\n this.expand = this.expandChild = this.shrink = this.element = null;\n }\n }\n checkSize() {\n if (super.checkSize()) {\n this.reset();\n return true;\n }\n }\n init() {\n const parentElement = this.parentElement = this.element.nativeElement.parentElement;\n if (computedProp(parentElement, 'position') === 'static') {\n parentElement.style.position = 'relative';\n }\n this.state = 2 /* Initialized */;\n this.render();\n this.reset();\n this.initSize();\n this.subscribe();\n }\n render() {\n const element = this.element.nativeElement;\n element.style.cssText = WRAP_STYLE;\n element.setAttribute('dir', 'ltr');\n this.expand = div(WRAP_STYLE);\n this.expandChild = div(EXPAND_CHILD_STYLE);\n this.expand.appendChild(this.expandChild);\n element.appendChild(this.expand);\n this.shrink = div(WRAP_STYLE);\n const shrinkChild = div(SHRINK_CHILD_STYLE);\n this.shrink.appendChild(shrinkChild);\n element.appendChild(this.shrink);\n }\n reset() {\n const expandChild = this.expandChild;\n expandChild.style.width = 100000 + 'px';\n expandChild.style.height = 100000 + 'px';\n const expand = this.expand;\n expand.scrollLeft = 100000;\n expand.scrollTop = 100000;\n const shrink = this.shrink;\n shrink.scrollLeft = 100000;\n shrink.scrollTop = 100000;\n }\n subscribe() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = merge(fromEvent(this.shrink, 'scroll'), fromEvent(this.expand, 'scroll'))\n .subscribe(() => {\n this.checkSize();\n });\n });\n }\n}\n\nconst HAS_OBSERVER = typeof ResizeObserver !== 'undefined';\n/**\n * @hidden\n */\nclass ResizeObserverService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n static supported() {\n return HAS_OBSERVER;\n }\n destroy() {\n super.destroy();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n this.parentElement = null;\n }\n init() {\n this.parentElement = this.element.nativeElement.parentElement;\n this.initSize();\n this.state = 2 /* Initialized */;\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkSize();\n });\n this.resizeObserver.observe(this.parentElement);\n });\n }\n}\n\n/**\n * @hidden\n */\nclass ResizeBatchService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.scheduled = [];\n this.resolvedPromise = Promise.resolve(null);\n this.flush = this.flush.bind(this);\n }\n schedule(instance, method) {\n this.scheduled.push({ instance, method });\n if (!this.subscription) {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = from(this.resolvedPromise)\n .subscribe(this.flush);\n });\n }\n }\n isScheduled(instance) {\n return Boolean(this.scheduled.find(item => item.instance === instance));\n }\n cancel(instance) {\n const scheduled = this.scheduled;\n const count = scheduled.length;\n for (let idx = 0; idx < count; idx++) {\n if (scheduled[idx].instance === instance) {\n scheduled.splice(idx, 1);\n if (!scheduled.length) {\n this.unsubscribe();\n }\n return;\n }\n }\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n flush() {\n this.scheduled.forEach(item => {\n item.method.call(item.instance);\n });\n this.scheduled = [];\n this.unsubscribe();\n }\n}\nResizeBatchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeBatchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Emit up to 10 resize events per second by default.\n * Chosen as a compromise between responsiveness and performance.\n */\nconst DEFAULT_RATE_LIMIT = 10;\n/**\n * Resize Sensor Component\n *\n * Triggers a \"resize\" event whenever the parent DOM element size changes.\n */\nclass ResizeSensorComponent {\n constructor(resizeBatchService, element, ngZone) {\n /**\n * The maximum number of resize events to emit per second.\n *\n * Defaults to 10.\n */\n this.rateLimit = DEFAULT_RATE_LIMIT;\n /**\n * Fires when the parent DOM element has been resized.\n */\n this.resize = new EventEmitter();\n const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;\n this.resizeService = new serviceType(resizeBatchService, element, ngZone);\n const throttleTime = 1000 / (this.rateLimit || DEFAULT_RATE_LIMIT);\n this.subscription = this.resizeService.resize\n .pipe(auditTime(throttleTime))\n .subscribe(() => {\n if (!this.resizeService.acceptedSize) {\n this.resize.emit();\n }\n });\n }\n ngAfterViewChecked() {\n this.resizeService.checkChanges();\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.resizeService.destroy();\n }\n acceptSize(size) {\n this.resizeService.acceptSize(size);\n }\n}\nResizeSensorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nResizeSensorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: { rateLimit: \"rateLimit\" }, outputs: { resize: \"resize\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-resize-sensor',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ResizeBatchService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rateLimit: [{\n type: Input\n }], resize: [{\n type: Output\n }] } });\n\nconst COMPONENT_DIRECTIVES = [ResizeSensorComponent];\n/**\n * Resize Sensor module\n */\nclass ResizeSensorModule {\n}\nResizeSensorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nResizeSensorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, declarations: [ResizeSensorComponent], exports: [ResizeSensorComponent] });\nResizeSensorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, providers: [ResizeBatchService] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n providers: [ResizeBatchService]\n }]\n }] });\n\nclass KendoInput {\n}\n\n/**\n * Enum with key codes.\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"Alt\"] = 18] = \"Alt\";\n Keys[Keys[\"ArrowDown\"] = 40] = \"ArrowDown\";\n Keys[Keys[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Keys[Keys[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Keys[Keys[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Keys[Keys[\"Backspace\"] = 8] = \"Backspace\";\n Keys[Keys[\"Control\"] = 17] = \"Control\";\n Keys[Keys[\"Delete\"] = 46] = \"Delete\";\n Keys[Keys[\"Digit0\"] = 48] = \"Digit0\";\n Keys[Keys[\"Digit1\"] = 49] = \"Digit1\";\n Keys[Keys[\"Digit2\"] = 50] = \"Digit2\";\n Keys[Keys[\"Digit3\"] = 51] = \"Digit3\";\n Keys[Keys[\"Digit4\"] = 52] = \"Digit4\";\n Keys[Keys[\"Digit5\"] = 53] = \"Digit5\";\n Keys[Keys[\"Digit6\"] = 54] = \"Digit6\";\n Keys[Keys[\"Digit7\"] = 55] = \"Digit7\";\n Keys[Keys[\"Digit8\"] = 56] = \"Digit8\";\n Keys[Keys[\"Digit9\"] = 57] = \"Digit9\";\n Keys[Keys[\"End\"] = 35] = \"End\";\n Keys[Keys[\"Enter\"] = 13] = \"Enter\";\n Keys[Keys[\"Escape\"] = 27] = \"Escape\";\n Keys[Keys[\"F1\"] = 112] = \"F1\";\n Keys[Keys[\"F2\"] = 113] = \"F2\";\n Keys[Keys[\"F10\"] = 121] = \"F10\";\n Keys[Keys[\"Home\"] = 36] = \"Home\";\n Keys[Keys[\"Insert\"] = 45] = \"Insert\";\n Keys[Keys[\"KeyA\"] = 65] = \"KeyA\";\n Keys[Keys[\"KeyB\"] = 66] = \"KeyB\";\n Keys[Keys[\"KeyC\"] = 67] = \"KeyC\";\n Keys[Keys[\"KeyD\"] = 68] = \"KeyD\";\n Keys[Keys[\"KeyE\"] = 69] = \"KeyE\";\n Keys[Keys[\"KeyF\"] = 70] = \"KeyF\";\n Keys[Keys[\"KeyG\"] = 71] = \"KeyG\";\n Keys[Keys[\"KeyH\"] = 72] = \"KeyH\";\n Keys[Keys[\"KeyI\"] = 73] = \"KeyI\";\n Keys[Keys[\"KeyJ\"] = 74] = \"KeyJ\";\n Keys[Keys[\"KeyK\"] = 75] = \"KeyK\";\n Keys[Keys[\"KeyL\"] = 76] = \"KeyL\";\n Keys[Keys[\"KeyM\"] = 77] = \"KeyM\";\n Keys[Keys[\"KeyN\"] = 78] = \"KeyN\";\n Keys[Keys[\"KeyO\"] = 79] = \"KeyO\";\n Keys[Keys[\"KeyP\"] = 80] = \"KeyP\";\n Keys[Keys[\"KeyQ\"] = 81] = \"KeyQ\";\n Keys[Keys[\"KeyR\"] = 82] = \"KeyR\";\n Keys[Keys[\"KeyS\"] = 83] = \"KeyS\";\n Keys[Keys[\"KeyT\"] = 84] = \"KeyT\";\n Keys[Keys[\"KeyU\"] = 85] = \"KeyU\";\n Keys[Keys[\"KeyV\"] = 86] = \"KeyV\";\n Keys[Keys[\"KeyW\"] = 87] = \"KeyW\";\n Keys[Keys[\"KeyX\"] = 88] = \"KeyX\";\n Keys[Keys[\"KeyY\"] = 89] = \"KeyY\";\n Keys[Keys[\"KeyZ\"] = 90] = \"KeyZ\";\n Keys[Keys[\"NumpadDecimal\"] = 110] = \"NumpadDecimal\";\n Keys[Keys[\"PageDown\"] = 34] = \"PageDown\";\n Keys[Keys[\"PageUp\"] = 33] = \"PageUp\";\n Keys[Keys[\"Shift\"] = 16] = \"Shift\";\n Keys[Keys[\"Space\"] = 32] = \"Space\";\n Keys[Keys[\"Tab\"] = 9] = \"Tab\";\n})(Keys || (Keys = {}));\n\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\nconst canCreateElement = () => isDocumentAvailable() && document.createElement;\nconst propName = '--kendo-scrollbar-width';\nfunction scrollbarWidth() {\n let scrollbarWidth = 0;\n if (canCreateElement()) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n scrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return scrollbarWidth;\n}\n/**\n * @hidden\n */\nclass ScrollbarWidthService {\n constructor() {\n this.changes = new EventEmitter();\n if (typeof window !== 'undefined' && isDocumentAvailable()) {\n document.body.style.setProperty(propName, `${scrollbarWidth()}px`);\n }\n }\n}\nScrollbarWidthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nScrollbarWidthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DraggableDirective, DraggableModule, EventsModule, EventsOutsideAngularDirective, KendoInput, Keys, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ResizeSensorModule, ScrollbarWidthService, anyChanged, closest, closestInScope, contains, findElement, findFocusable, findFocusableChild, guid, hasClasses, hasObservers, isChanged, isDocumentAvailable, isFocusable, isFocusableWithTabKey, isVisible, matchesClasses, matchesNodeName, rtlScrollPosition };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, isDevMode, Directive, Input, Component, Output, ChangeDetectionStrategy, HostBinding, forwardRef, ElementRef, ContentChild, ViewChild, HostListener, InjectionToken, Inject, NgZone, Optional, ViewContainerRef, ViewChildren, TemplateRef, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';\nimport { cloneDate, addDays, getDate, isEqual, addDecades, addCenturies, firstDecadeOfCentury, lastDecadeOfCentury, firstYearOfDecade, createDate, lastYearOfDecade, lastMonthOfYear, lastDayOfMonth, durationInCenturies, addYears, durationInDecades, addWeeks, addMonths, firstDayOfMonth, dayOfWeek, durationInMonths, firstMonthOfYear, durationInYears, weekInYear } from '@progress/kendo-date-math';\nimport * as i5 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, guid, Keys, hasObservers, KendoInput, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-intl';\nimport { IntlModule } from '@progress/kendo-angular-intl';\nimport { Subject, Subscription, ReplaySubject, Observable, combineLatest, of, interval, animationFrameScheduler, fromEvent, EMPTY, from, BehaviorSubject, merge } from 'rxjs';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { map, scan, takeWhile, debounceTime, tap, filter } from 'rxjs/operators';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { touchEnabled } from '@progress/kendo-common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dateinputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652250169,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nvar Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n\n/**\n * @hidden\n *\n * The Enum which defines all possible Calendar view types.\n */\nvar CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n\n/**\n * @hidden\n */\nconst MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nconst MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nconst MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n\n/**\n * @hidden\n */\nconst EMPTY_SELECTIONRANGE = { start: null, end: null };\n\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n */\nconst preventDefault = (args) => args.preventDefault();\n/**\n * @hidden\n */\nconst currentFocusTarget = (blurArgs) => blurArgs.relatedTarget || document.activeElement;\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== undefined && value !== null;\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are numbers, returns `true.\n */\nconst isNumberArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => typeof item === 'number');\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are dates, returns `true`.\n */\nconst isDateArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => item instanceof Date);\n\nconst isSet = (value) => value !== null && value !== undefined;\nconst setter = (method) => (date, value) => {\n const clone = cloneDate(date);\n clone[method](value);\n return clone;\n};\n/**\n * @hidden\n */\nconst setTime = (origin, candidate) => {\n const date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\nconst normalizeTimes = (candidate, min, max) => ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ||\n (min.getHours() === max.getHours() && min.getMinutes() < max.getMinutes()) ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n});\n/**\n * @hidden\n */\nconst setYears = setter('setFullYear');\n/**\n * @hidden\n */\nconst setHours$1 = setter('setHours');\n/**\n * @hidden\n */\nconst setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nconst setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nconst setMilliseconds = setter('setMilliseconds');\n/**\n * @hidden\n */\nconst range = (start, end, step = 1) => {\n const result = [];\n for (let i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nconst isInRange = (candidate, min, max) => (!candidate || !((min && min > candidate) || (max && max < candidate)));\n/**\n * @hidden\n */\nconst isInTimeRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return true;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nconst isValidRange = (min, max) => (!isSet(min) || !isSet(max) || min <= max);\n/**\n * @hidden\n */\nconst dateInRange = (candidate, min, max) => {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst timeInRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return candidate;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst getNow = () => new Date();\n/**\n * @hidden\n */\nconst getToday = () => getDate(new Date());\n/**\n * @hidden\n */\nconst noop$2 = (_) => { }; // eslint-disable-line no-empty\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst stringifyClassObject = (classes) => {\n const pushToAcc = (acc, cls) => classes[cls] ? acc.concat(cls) : acc;\n return Object.keys(classes).reduce(pushToAcc, []).join(' ');\n};\n/**\n * @hidden\n */\nconst shiftWeekNames = (names, offset) => (names.slice(offset).concat(names.slice(0, offset)));\n/**\n * @hidden\n */\nconst approximateStringMatching = (oldTextOrigin, oldFormat, newTextOrigin, caret) => {\n // Remove the right part of the cursor.\n //oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n const oldIndex = caret + oldTextOrigin.length - newTextOrigin.length;\n const oldTextSeparator = oldTextOrigin[oldIndex];\n const oldText = oldTextOrigin.substring(0, caret + oldTextOrigin.length - newTextOrigin.length);\n const newText = newTextOrigin.substring(0, caret);\n const diff = [];\n // Handle typing a single character over the same selection.\n if (oldText === newText && caret > 0) {\n diff.push([oldFormat[caret - 1], newText[caret - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n // Handle Delete/Backspace.\n let deletedSymbol = \"\";\n //XXX:\n // Whole text is replaced with a same char\n // Nasty patch required to keep the selection in the first segment\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (let i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== \"_\") {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, \"\"]);\n }\n }\n return diff;\n }\n // Handle inserting text (the new text is longer than the previous one).\n // Handle typing over a literal as well.\n if (newText.indexOf(oldText) === 0 || oldFormat[caret - 1] === \"_\") {\n let symbol = oldFormat[0];\n for (let i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== \"_\") {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[caret - 1]]];\n }\n // Handle entering a space or a separator, for navigation to the next item.\n if (newText[newText.length - 1] === \" \" || (newText[newText.length - 1] === oldTextSeparator && oldFormat[oldIndex] === '_')) {\n return [[oldFormat[caret - 1], \"_\"]];\n }\n // Handle typing over a correctly selected part.\n return [[oldFormat[caret - 1], newText[caret - 1]]];\n};\n/**\n * @hidden\n */\nconst domContainerFactory = (type) => (children, classes = \"\", styles = {}) => {\n const container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(key => container.style[key] = styles[key]);\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(child => child && container.appendChild(child));\n }\n return container;\n};\n/**\n * @hidden\n */\nconst hasChange = (changes, field) => changes[field] !== undefined;\n/**\n * @hidden\n */\nconst hasExistingValue = (changes, field) => changes[field] && changes[field].currentValue !== undefined && changes[field].currentValue !== null;\n/**\n * @hidden\n */\nconst last = (list = []) => list && list[list.length - 1];\n/**\n * @hidden\n */\nconst isInSelectionRange = (value, selectionRange) => {\n const { start, end } = selectionRange || EMPTY_SELECTIONRANGE;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nconst either = (value1, value2) => value1 || value2;\n/**\n * @hidden\n */\nconst clampRange = (value) => ({ start: value, end: value });\n/**\n * @hidden\n */\nconst isEqualRange = (initial, updated) => {\n const { start: initialStart, end: initialEnd } = initial || EMPTY_SELECTIONRANGE;\n const { start: updatedStart, end: updatedEnd } = updated || EMPTY_SELECTIONRANGE;\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\nconst areDatesEqual = (first, second) => {\n first = first || [];\n second = second || [];\n return first.length === second.length && first.every((date, index) => isEqual(date, second[index]));\n};\n/**\n * @hidden\n */\nconst sortDates = (dates) => {\n return dates.filter(date => isPresent(date)).sort((a, b) => a.getTime() - b.getTime());\n};\n/**\n * @hidden\n *\n * Creates a new date based on the date information from the specified date portion\n * and the time information from the time portion.\n * If a parameter is not provided, returns `null`.\n */\nconst mergeDateAndTime = (date, time) => {\n if (!(date && time)) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n};\n/**\n * @hidden\n */\nconst lastMillisecondOfDate = (date) => {\n if (!date) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n};\n/**\n * @hidden\n *\n * Returns an array with dates ranging between and including the specified start and\n * end dates that are evaluated as disabled.\n */\nconst disabledDatesInRange = (start, end, isDateDisabled) => {\n if (!(start && end && isDateDisabled) || (start > end)) {\n return [];\n }\n const dates = [];\n let current = start;\n while (current <= end) {\n if (isDateDisabled(current)) {\n dates.push(current);\n }\n current = addDays(current, 1);\n }\n return dates;\n};\n/**\n * @hidden\n *\n * Crops the last two digits from the year of the provided date value.\n */\nconst cropTwoDigitYear = (date) => {\n if (!isPresent(date) || isNaN(date.getTime())) {\n return 0;\n }\n return Number(date\n .getFullYear()\n .toString()\n .slice(-2));\n};\n/**\n * @hidden\n *\n * Used when resetting millisecond segment value in the DateInput\n */\nconst msPaddingFromFormat = (format) => {\n return Array(format.match(/S+(\\1)/)[0].length).join(\"0\");\n};\n/**\n * @hidden\n */\nconst millisecondDigitsInFormat = (format) => {\n const result = format && format.match(/S+(\\1)/);\n return result ? result[0].length : 0;\n};\n/**\n * @hidden\n */\nconst millisecondStepFor = (digits) => {\n return Math.pow(10, 3 - digits);\n};\n/**\n * @hidden\n *\n * Checks if a tab keydown would would move the focus outside of the calendar.\n */\nconst isTabExitingCalendar = (calendarType, focusedElement, shiftKey) => {\n if (!isPresent(focusedElement)) {\n return false;\n }\n return calendarType === 'infinite' || ( // infinte calendar is always exited on first tab keydown\n calendarType === 'classic' &&\n (shiftKey && focusedElement.classList.contains('k-calendar')) || // exited on main calendar element focused and back-tab\n (!shiftKey && focusedElement.classList.contains('k-next-view')) // exited on next button focused and regular tab\n );\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n/**\n * @hidden\n */\nconst DEFAULT_ROUNDED = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_SIZE = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_FILL_MODE = 'solid';\n\nconst EMPTY_DATA$3 = [[]];\nconst CELLS_LENGTH$3 = 4;\nconst ROWS_LENGTH$3 = 3;\nconst ACTIONS$3 = {\n [Action.Left]: (date) => addDecades(date, -1),\n [Action.Up]: (date) => addDecades(date, -5),\n [Action.Right]: (date) => addDecades(date, 1),\n [Action.Down]: (date) => addDecades(date, 5),\n [Action.PrevView]: (date) => addCenturies(date, -1),\n [Action.NextView]: (date) => addCenturies(date, 1),\n [Action.FirstInView]: (date) => firstDecadeOfCentury(date),\n [Action.LastInView]: (date) => lastDecadeOfCentury(date)\n};\n/**\n * @hidden\n */\nclass CenturyViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDecades(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addCenturies(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addCenturies(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$3;\n }\n const cells = range(0, CELLS_LENGTH$3);\n const firstDate = firstDecadeOfCentury(viewDate);\n const lastDate = lastDecadeOfCentury(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$3).map(rowOffset => {\n const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH$3);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDecades(baseDate, cellOffset), min, max);\n const nextCentury = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextCentury) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n }\n isInRange(candidate, min, max) {\n const year = firstYearOfDecade(candidate).getFullYear();\n const aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n const belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(firstDecadeOfCentury(date));\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const decade = lastDecadeOfCentury(date);\n const year = lastYearOfDecade(decade);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 1000 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$3[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return firstYearOfDecade(value).getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstDecadeOfCentury(value).getFullYear()} - ${lastDecadeOfCentury(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$3;\n }\n skip(value, min) {\n return durationInCenturies(min, value);\n }\n total(min, max) {\n return durationInCenturies(min, max) + 1;\n }\n value(current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const centuriesToSubtract = viewsCount - viewsInRange;\n return addCenturies(date, -1 * centuriesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nCenturyViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCenturyViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$2 = [[]];\nconst CELLS_LENGTH$2 = 4;\nconst ROWS_LENGTH$2 = 3;\nconst ACTIONS$2 = {\n [Action.Left]: (date) => addYears(date, -1),\n [Action.Up]: (date) => addYears(date, -5),\n [Action.Right]: (date) => addYears(date, 1),\n [Action.Down]: (date) => addYears(date, 5),\n [Action.PrevView]: (date) => addDecades(date, -1),\n [Action.NextView]: (date) => addDecades(date, 1),\n [Action.FirstInView]: (date) => firstYearOfDecade(date),\n [Action.LastInView]: (date) => lastYearOfDecade(date)\n};\n/**\n * @hidden\n */\nclass DecadeViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addYears(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addDecades(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addDecades(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$2;\n }\n const cells = range(0, CELLS_LENGTH$2);\n const firstDate = firstYearOfDecade(viewDate);\n const lastDate = lastYearOfDecade(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$2).map(rowOffset => {\n const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH$2);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addYears(baseDate, cellOffset), min, max);\n const nextDecade = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextDecade) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n }\n isInRange(candidate, min, max) {\n const year = candidate.getFullYear();\n const aboveMin = !min || min.getFullYear() <= year;\n const belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(date);\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const year = lastYearOfDecade(date);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 100 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$2[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return value.getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstYearOfDecade(value).getFullYear()} - ${lastYearOfDecade(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$2;\n }\n skip(value, min) {\n return durationInDecades(min, value);\n }\n total(min, max) {\n return durationInDecades(min, max) + 1;\n }\n value(current) {\n return current ? current.getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const decadesToSubtract = viewsCount - viewsInRange;\n return addDecades(date, -1 * decadesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nDecadeViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDecadeViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$1 = [[]];\nconst CELLS_LENGTH$1 = 7;\nconst ROWS_LENGTH$1 = 6;\nconst ACTIONS$1 = {\n [Action.Left]: (date) => addDays(date, -1),\n [Action.Up]: (date) => addWeeks(date, -1),\n [Action.Right]: (date) => addDays(date, 1),\n [Action.Down]: (date) => addWeeks(date, 1),\n [Action.PrevView]: (date) => addMonths(date, -1),\n [Action.NextView]: (date) => addMonths(date, 1),\n [Action.FirstInView]: (date) => firstDayOfMonth(date),\n [Action.LastInView]: (date) => lastDayOfMonth(date)\n};\n/**\n * @hidden\n */\nclass MonthViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDays(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addMonths(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addMonths(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate, isDateDisabled = () => false } = options;\n if (!viewDate) {\n return EMPTY_DATA$1;\n }\n const firstMonthDate = firstDayOfMonth(viewDate);\n const firstMonthDay = getDate(firstMonthDate);\n const lastMonthDate = lastDayOfMonth(viewDate);\n const lastMonthDay = getDate(lastMonthDate);\n const backward = -1;\n const date = dayOfWeek(firstMonthDate, this._intlService.firstDay(), backward);\n const cells = range(0, CELLS_LENGTH$1);\n const today = getToday();\n return range(0, ROWS_LENGTH$1).map(rowOffset => {\n const baseDate = addDays(date, rowOffset * CELLS_LENGTH$1);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDays(baseDate, cellOffset), min, max);\n const cellDay = getDate(cellDate);\n const otherMonth = cellDay < firstMonthDay || cellDay > lastMonthDay;\n const outOfRange = cellDate < min || cellDate > max;\n if (outOfRange) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastMonthDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate,\n isDisabled: isDateDisabled(cellDate),\n isOtherMonth: otherMonth\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n }\n isInArray(date, dates) {\n if (dates.length === 0) {\n return false;\n }\n const lowerBound = this.beginningOfPeriod(dates[0]);\n const upperBound = this.beginningOfPeriod(addMonths(dates[dates.length - 1], 1));\n return lowerBound <= date && date < upperBound;\n }\n isInRange(candidate, min, max) {\n const value = getDate(candidate);\n const aboveMin = !min || getDate(min) <= value;\n const belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), date.getMonth(), 1);\n }\n lastDayOfPeriod(date) {\n return lastDayOfMonth(date);\n }\n isRangeStart(value) {\n return !value.getMonth();\n }\n move(value, action) {\n const modifier = ACTIONS$1[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return this._intlService.formatDate(value, 'D');\n }\n navigationTitle(value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n }\n title(current) {\n return `${this.wideMonthNames()[current.getMonth()]} ${current.getFullYear()}`;\n }\n rowLength(options = {}) {\n return CELLS_LENGTH$1 + (options.prependCell ? 1 : 0);\n }\n skip(value, min) {\n return durationInMonths(min, value);\n }\n total(min, max) {\n return durationInMonths(min, max) + 1;\n }\n value(current) {\n return current ? current.getDate().toString() : \"\";\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const monthsToSubtract = viewsCount - viewsInRange;\n return addMonths(date, -1 * monthsToSubtract);\n }\n return date;\n }\n isWeekend(date) {\n const { start, end } = this._intlService.weekendRange();\n const day = date.getDay();\n if (end < start) {\n return day <= end || start <= day;\n }\n return start <= day && day <= end;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n wideMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'wide', type: 'months' });\n }\n}\nMonthViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMonthViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst EMPTY_DATA = [[]];\nconst CELLS_LENGTH = 4;\nconst ROWS_LENGTH = 3;\nconst upStep = (month) => {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nconst downStep = (month) => {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nconst ACTIONS = {\n [Action.Left]: (date) => addMonths(date, -1),\n [Action.Up]: (date) => addMonths(date, upStep(date.getMonth())),\n [Action.Right]: (date) => addMonths(date, 1),\n [Action.Down]: (date) => addMonths(date, downStep(date.getMonth())),\n [Action.PrevView]: (date) => addYears(date, -1),\n [Action.NextView]: (date) => addYears(date, 1),\n [Action.FirstInView]: (date) => firstMonthOfYear(date),\n [Action.LastInView]: (date) => lastMonthOfYear(date)\n};\n/**\n * @hidden\n */\nclass YearViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addMonths(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addYears(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addYears(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n const months = this.abbrMonthNames();\n const firstDate = firstMonthOfYear(viewDate);\n const lastDate = lastMonthOfYear(viewDate);\n const currentYear = firstDate.getFullYear();\n const cells = range(0, CELLS_LENGTH);\n const today = getToday();\n return range(0, ROWS_LENGTH).map(rowOffset => {\n const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addMonths(baseDate, cellOffset), min, max);\n const changedYear = currentYear < cellDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || changedYear) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: months[cellDate.getMonth()],\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n }\n isInRange(candidate, min, max) {\n const candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n const aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n const belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const month = lastMonthOfYear(date);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 10 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return `${value.getFullYear()} ${this.value(value)}`;\n }\n navigationTitle(value) {\n return this.title(value);\n }\n title(current) {\n return current ? current.getFullYear().toString() : '';\n }\n rowLength() {\n return CELLS_LENGTH;\n }\n skip(value, min) {\n return durationInYears(min, value);\n }\n total(min, max) {\n return durationInYears(min, max) + 1;\n }\n value(current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const yearsToSubtract = viewsCount - viewsInRange;\n return addYears(date, -1 * yearsToSubtract);\n }\n return date;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nYearViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nYearViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst services$1 = {\n [CalendarViewEnum.month]: MonthViewService,\n [CalendarViewEnum.year]: YearViewService,\n [CalendarViewEnum.decade]: DecadeViewService,\n [CalendarViewEnum.century]: CenturyViewService\n};\nconst viewOffset = (view, offset) => {\n const candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nclass BusViewService {\n constructor(injector) {\n this.injector = injector;\n this.viewChanged = new EventEmitter();\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n }\n configure(bottom, top) {\n this.bottom = bottom;\n this.top = top;\n }\n service(view) {\n const serviceType = services$1[view];\n return serviceType ? this.injector.get(serviceType) : null;\n }\n moveDown(view) {\n this.move(view, -1);\n }\n moveUp(view) {\n this.move(view, 1);\n }\n moveToBottom(activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.viewChanged.emit({ view: this.bottom });\n }\n canMoveDown(view) {\n return this.bottom < view;\n }\n canMoveUp(view) {\n return view < this.top;\n }\n clamp(view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n }\n move(view, offset) {\n const candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.viewChanged.emit({ view: candidate });\n }\n}\nBusViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nBusViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\n/**\n * @hidden\n */\nclass WeekNamesService {\n constructor(intl) {\n this.intl = intl;\n }\n getWeekNames(includeWeekNumber = false) {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n }\n}\nWeekNamesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nWeekNamesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst noop$1 = () => false;\nconst DISABLED_DATES_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/disabled-dates/';\n/**\n * @hidden\n */\nclass DisabledDatesService {\n constructor() {\n /**\n * Emits every time the `isDateDisabled` method changes.\n */\n this.changes = new Subject();\n /**\n * Based on the user-defined `disabledDates` input evaluates if the date is disabled.\n * If not set, returns `false`.\n */\n this.isDateDisabled = noop$1;\n }\n /**\n * Configures the `isDateDisabled` function.\n *\n * * If a function is provided, uses it as-is and passes each date to it for evaluation.\n * The time part is set to `midnight`.\n * * If a `Date[]` is provided, creates a function that checks the targeted date against\n * the listed dates and, if the targeted date is listed, marks it as disabled.\n * * If a `Day[]` is provided, creates a function that evaluates the provided days of the\n * week as disabled.\n */\n initialize(disabledDates) {\n if (typeof disabledDates === 'function') {\n this.isDateDisabled = (date) => disabledDates(getDate(date));\n }\n else if (isNumberArray(disabledDates)) {\n const disabledWeekDays = new Set(disabledDates);\n this.isDateDisabled = (date) => disabledWeekDays.has(date.getDay());\n }\n else if (isDateArray(disabledDates)) {\n const normalizedDisabledDates = new Set(disabledDates.map(date => getDate(date).getTime()));\n this.isDateDisabled = (date) => normalizedDisabledDates.has(getDate(date).getTime());\n }\n else {\n this.isDateDisabled = noop$1;\n this.notifyInvalidInput(disabledDates);\n }\n this.notifyServiceChange();\n }\n notifyInvalidInput(disabledDates) {\n if (isPresent(disabledDates) && isDevMode()) {\n throw new Error(`The 'disabledDates' value should be a function, a Day array or a Date array. Check ${DISABLED_DATES_DOC_LINK} for more information.`);\n }\n }\n notifyServiceChange() {\n this.changes.next();\n }\n}\nDisabledDatesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDisabledDatesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass KForOfContext {\n constructor($implicit, kForOf, index, count) {\n this.$implicit = $implicit;\n this.kForOf = kForOf;\n this.index = index;\n this.count = count;\n }\n get first() { return this.index === 0; }\n get last() { return this.index === this.count - 1; }\n get even() { return this.index % 2 === 0; }\n get odd() { return !this.even; }\n}\n/**\n * @hidden\n */\n// eslint-disable-next-line\nclass KForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._differ = null;\n }\n set kForTemplate(value) {\n if (value) {\n this._template = value;\n }\n }\n ngOnChanges(changes) {\n if ('kForOf' in changes) {\n const value = changes.kForOf.currentValue;\n if (this._differ || !value) {\n return;\n }\n try {\n this._differ = this._differs.find(value).create(this.kForTrackBy);\n }\n catch (e) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'.`);\n }\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this.kForOf);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _applyChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const viewContainerLength = this._viewContainer.length;\n const dataLength = this.kForOf.length;\n const tuples = {};\n changes.forEachOperation((record, _, currentIndex) => {\n if (currentIndex !== null) {\n tuples[currentIndex] = record.item;\n }\n });\n for (let i = viewContainerLength; i < dataLength; i++) {\n this._viewContainer.createEmbeddedView(this._template, new KForOfContext(null, this.kForOf, -1, -1), i);\n }\n for (let i = this._viewContainer.length; i > dataLength; i--) {\n this._viewContainer.remove(i - 1);\n }\n for (let i = 0; i < this._viewContainer.length; i++) {\n const view = this._viewContainer.get(i);\n view.context.index = i;\n view.context.count = length;\n view.context.$implicit = tuples[i] || null;\n }\n }\n}\nKForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nKForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: KForOf, selector: \"[kFor][kForOf]\", inputs: { kForOf: \"kForOf\", kForTrackBy: \"kForTrackBy\", kForTemplate: \"kForTemplate\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[kFor][kForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { kForOf: [{\n type: Input\n }], kForTrackBy: [{\n type: Input\n }], kForTemplate: [{\n type: Input\n }] } });\n/**\n * @hidden\n */\nfunction getTypeNameForDebugging(type) {\n return type.name || typeof type;\n}\n\n/**\n * @hidden\n */\nclass ViewComponent {\n constructor(bus, intl, cdr, element, zone, renderer, disabledDatesService) {\n this.bus = bus;\n this.intl = intl;\n this.cdr = cdr;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this.disabledDatesService = disabledDatesService;\n this.direction = 'vertical';\n this.isActive = true;\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.colSpan = 0;\n this.subscriptions = new Subscription();\n this.domEvents = [];\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.disabledDatesChange.bind(this)));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.activeView === CalendarViewEnum.month;\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n ngOnInit() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.colSpan = this.service.rowLength({ prependCell: this.weekNumber });\n this.title = this.service.title(this.viewDate);\n this.updateData();\n if (changes.activeView) {\n this.currentCellIndex = null;\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domEvents.forEach(unsubscribeCallback => unsubscribeCallback());\n }\n isHorizontal() {\n return this.direction === 'horizontal';\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n shouldRenderCellContent(cellCtx) {\n return isPresent(cellCtx) && !(!this.isHorizontal() && cellCtx.isOtherMonth);\n }\n firstDate(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n return ctx ? ctx.value : null;\n }\n getWeekNumber(date) {\n if (!this.weekNumber) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n }\n getWeekNumberContext(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n if (!this.weekNumber || !ctx) {\n return null;\n }\n const weekNumber = weekInYear(ctx.value, this.intl.firstDay()).toString();\n return {\n formattedValue: weekNumber,\n id: null,\n isFocused: false,\n isSelected: false,\n isWeekend: false,\n title: weekNumber,\n value: cloneDate(ctx.value)\n };\n }\n getStyles(context) {\n const { isRangeEnd, isRangeStart } = context;\n const isEndActive = this.activeRangeEnd === 'end' && isRangeEnd;\n const isStartActive = this.activeRangeEnd === 'start' && isRangeStart;\n return stringifyClassObject({\n 'k-range-end': !context.isOtherMonth && isRangeEnd,\n 'k-range-mid': !context.isOtherMonth && context.isRangeMid,\n 'k-range-split-end': !context.isOtherMonth && context.isRangeSplitEnd,\n 'k-range-split-start': !context.isOtherMonth && context.isRangeSplitStart,\n 'k-range-start': !context.isOtherMonth && isRangeStart,\n 'k-state-active': isStartActive || isEndActive,\n 'k-state-focused': !context.isOtherMonth && this.isActive && context.isFocused,\n 'k-state-selected': !context.isOtherMonth && (context.isSelected || isRangeStart || isRangeEnd),\n 'k-today': !context.isOtherMonth && context.isToday,\n 'k-weekend': context.isWeekend,\n 'k-disabled': context.isDisabled,\n 'k-other-month': context.isOtherMonth\n });\n }\n tableCellIndex(rowIndex, cellIndex) {\n return `${rowIndex}:${cellIndex}`;\n }\n handleWeekNumberClick(week) {\n const availableDates = week.map(item => item.value).filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.weekNumberCellClick.emit(availableDates);\n }\n firstWeekDateContext(rowCtx) {\n if (!this.weekNumber) {\n return null;\n }\n let idx = 0;\n let ctx = this.shouldRenderCellContent(rowCtx[idx]) ? rowCtx[idx] : null;\n while (!ctx && idx < rowCtx.length) {\n const cellCtx = rowCtx[++idx];\n ctx = this.shouldRenderCellContent(cellCtx) ? cellCtx : null;\n }\n return ctx;\n }\n updateData() {\n const time = last(this.selectedDates) || getToday();\n const viewDate = setTime(this.viewDate, time);\n this.data = this.service.data({\n cellUID: this.cellUID,\n focusedDate: this.focusedDate,\n isActiveView: !this.bus.canMoveDown(this.activeView),\n max: this.max,\n min: this.min,\n selectedDates: this.selectedDates,\n selectionRange: this.selectionRange,\n viewDate: viewDate,\n isDateDisabled: this.disabledDatesService.isDateDisabled,\n direction: this.direction\n });\n }\n intlChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n disabledDatesChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', this.cellMouseoverHandler.bind(this)), this.renderer.listen(element, 'mouseleave', this.mouseLeaveHandler.bind(this)), this.renderer.listen(element, 'click', this.clickHandler.bind(this)));\n }\n clickHandler(args) {\n const cell = this.closestCell(args);\n if (!cell) {\n return;\n }\n const index = cell.getAttribute('data-cell-index');\n const cellContext = this.cellByIndex(index);\n if (!cellContext.isDisabled) {\n const { ctrlKey, metaKey, shiftKey } = args;\n this.cellClick.emit({\n date: cellContext.value,\n modifiers: { ctrlKey, metaKey, shiftKey }\n });\n }\n }\n mouseLeaveHandler() {\n if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n cellMouseoverHandler(args) {\n const cell = this.closestCell(args);\n if (cell) {\n const index = cell.getAttribute('data-cell-index');\n if (this.currentCellIndex && this.currentCellIndex !== index) {\n this.emitCellLeave();\n }\n const value = this.cellByIndex(index).value;\n this.cellEnter.emit(value);\n this.currentCellIndex = index;\n }\n else if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n closestCell(eventArgs) {\n return closestInScope(eventArgs.target, node => node.hasAttribute('data-cell-index'), this.element.nativeElement);\n }\n emitCellLeave() {\n const item = this.cellByIndex(this.currentCellIndex);\n if (item) {\n this.cellLeave.emit(item.value);\n }\n this.currentCellIndex = null;\n }\n cellByIndex(index) {\n const [rowIndex, cellIndex] = index.split(':');\n return this.data[rowIndex][cellIndex];\n }\n}\nViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: { direction: \"direction\", isActive: \"isActive\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", viewDate: \"viewDate\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\", viewIndex: \"viewIndex\", templateRef: \"templateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\" }, usesOnChanges: true, ngImport: i0, template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n
\n \n \n \n {{cell.formattedValue}}\n
\n \n \n \n \n `, isInline: true, directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line\n selector: '[kendoCalendarView]',\n template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n
\n \n \n \n {{cell.formattedValue}}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DisabledDatesService }]; }, propDecorators: { direction: [{\n type: Input\n }], isActive: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], viewIndex: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst DEFAULT_VIEWS_LENGTH = 2;\n/**\n * @hidden\n */\nclass HorizontalViewListComponent {\n constructor(bus, intl, weekService, cdr, element, renderer) {\n this.bus = bus;\n this.intl = intl;\n this.weekService = weekService;\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.activeView = CalendarViewEnum.month;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.views = DEFAULT_VIEWS_LENGTH;\n this.showViewHeader = false;\n this.animateNavigation = false;\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.getComponentClass = true;\n this.weekNames = [];\n this.dates = [];\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnChanges(changes) {\n this.initService();\n if (this.weekNames.length === 0 || changes.weekNumber) {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n }\n if (!this.service) {\n return;\n }\n this.views = this.views || DEFAULT_VIEWS_LENGTH;\n const focusedDate = this.focusedDate;\n const viewDate = this.clampDate(this.service.viewDate(focusedDate, this.max, this.views));\n this.skip = this.service.skip(viewDate, this.min);\n this.total = this.service.total(this.min, this.max);\n const activeViewChanged = hasChange(changes, 'activeView');\n const viewsHasChanged = this.views > 0 && hasChange(changes, 'views');\n if (activeViewChanged || !this.isInDates(focusedDate) || viewsHasChanged || !this.activeDate) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n this.activeDate = cloneDate(this.dates[0]);\n this.activeDateChange.emit(this.activeDate);\n }\n }\n ngAfterViewInit() {\n // make the calendar look the same in the different browsers\n // which also smoothens the navigation animation\n if (this.views === 1) {\n this.setTableMinWidth();\n }\n }\n ngOnDestroy() {\n this.intlSubscription.unsubscribe();\n }\n initService() {\n this.service = this.bus.service(this.activeView);\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n getCaptionTitle(date) {\n return this.service.title(date);\n }\n getCaptionClass() {\n return this.isMonthView() ? 'k-month-header' : 'k-meta-header';\n }\n animateView(action) {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n // the whole width excluding padding/margin\n const initialContainerWidth = parseFloat(getComputedStyle(container).width);\n // table width\n const tableWidth = parseFloat(getComputedStyle(table).width);\n this.renderer.setStyle(container, 'width', `${initialContainerWidth}px`);\n this.renderer.setStyle(container, 'overflow', 'visible');\n // initialize an additional view for the animation\n if (action === Action.NextView) {\n // animating Action.NextView requires adding an additional view before the rendered views\n this.nextAnimationDate = cloneDate(this.dates[0]);\n }\n else {\n // animating Action.PrevView requires adding an additional view after the rendered views\n this.prevAnimationDate = cloneDate(this.dates[this.dates.length - 1]);\n }\n // run cdr to render the additional view\n this.cdr.detectChanges();\n container.querySelectorAll('table').forEach(table => {\n this.renderer.setStyle(table, 'width', `${tableWidth}px`);\n if (this.views === 1) {\n this.renderer.setStyle(table, 'min-width', `${initialContainerWidth}px`);\n }\n });\n // we always slide by the width of 1 table\n // cross-browser compatibility is ensured by measuring the client rectangle and substracting the gap\n const tabRect = table.getBoundingClientRect();\n const containerGap = parseFloat(getComputedStyle(container).columnGap);\n const start = action === Action.NextView ? 'translateX(0)' : `translateX(-${tabRect.width + containerGap}px)`;\n const end = action === Action.NextView ? `translateX(-${tabRect.width + containerGap}px)` : 'translateX(0)';\n if (!this.animation) {\n this.animation = container.animate([\n { transform: start },\n { transform: end }\n ], {\n duration: 500,\n easing: 'ease-out'\n });\n this.animation.oncancel = this.animation.onfinish = () => {\n // clear all inline styles\n this.renderer.removeStyle(container, 'width');\n this.renderer.removeStyle(container, 'overflow');\n container.querySelectorAll('table').forEach(table => {\n this.renderer.removeStyle(table, 'width');\n });\n // clear the animation and the animation view\n this.animation = null;\n this.nextAnimationDate = null;\n this.prevAnimationDate = null;\n // run cdr to remove additional animation view from the markup\n this.cdr.detectChanges();\n };\n }\n else {\n // if animation is already running, cancel it and show the end navigation result on multiple prev/next button clicks\n this.animation.cancel();\n }\n }\n navigate(action) {\n if (this.animateNavigation && isDocumentAvailable() && isPresent(this.element.nativeElement.animate)) {\n this.animateView(action);\n }\n const candidate = this.move(action);\n const list = this.service.datesList(candidate, this.getTake(this.skip));\n if (this.isListInRange(list)) {\n this.dates = list;\n }\n this.activeDate = cloneDate(this.dates[0]);\n this.focusedDate = cloneDate(candidate);\n this.cdr.markForCheck();\n this.activeDateChange.emit(this.activeDate);\n return cloneDate(candidate);\n }\n canNavigate(action) {\n if (!this.service) {\n return false;\n }\n return this.isListInRange(this.service.datesList(this.move(action), this.getTake(this.skip)));\n }\n setTableMinWidth() {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n if (table) {\n const containerWidth = parseFloat(getComputedStyle(container).width);\n this.renderer.setStyle(table, 'min-width', `${containerWidth}px`);\n }\n }\n intlChange() {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n this.cdr.markForCheck();\n }\n clampDate(value) {\n return dateInRange(value, this.min, this.max);\n }\n move(action) {\n return this.service.move(this.dates[0] || this.focusedDate, action);\n }\n isListInRange(list) {\n const lowerBound = this.service.beginningOfPeriod(this.min);\n const upperBound = this.service.beginningOfPeriod(this.service.addToDate(this.max, 1));\n return lowerBound <= list[0] && list[list.length - 1] < upperBound;\n }\n isInDates(value) {\n return this.service.isInArray(value, this.dates);\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.views);\n }\n}\nHorizontalViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: WeekNamesService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nHorizontalViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", activeRangeEnd: \"activeRangeEnd\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectionRange: \"selectionRange\", selectedDates: \"selectedDates\", views: \"views\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", activeDateChange: \"activeDateChange\" }, host: { properties: { \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\", \"class.k-align-items-start\": \"this.getComponentClass\", \"class.k-justify-content-center\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `, isInline: true, components: [{ type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-horizontal',\n template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: WeekNamesService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], views: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-align-items-start\"]\n }, {\n type: HostBinding,\n args: [\"class.k-justify-content-center\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\n/**\n * @hidden\n */\nclass HeaderComponent {\n constructor(bus, cdr, localization, intl, disabledDatesService) {\n this.bus = bus;\n this.cdr = cdr;\n this.localization = localization;\n this.intl = intl;\n this.disabledDatesService = disabledDatesService;\n this.navigate = true;\n this.todayAvailable = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.rangeLength = 1;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.showNavigationButtons = false;\n this.todayButtonClick = new EventEmitter();\n this.prevButtonClick = new EventEmitter();\n this.nextButtonClick = new EventEmitter();\n this.getComponentClass = true;\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(this.l10nChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.setTodayAvailability.bind(this)));\n }\n ngOnChanges(_) {\n const service = this.bus.service(this.activeView);\n if (!service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n this.todayMessage = this.localization.get('today');\n this.setTodayAvailability();\n this.navigate = this.bus.canMoveUp(this.activeView);\n this.title = this.getTitle();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleTodayClick() {\n if (!this.todayAvailable) {\n return;\n }\n this.bus.moveToBottom(this.activeView);\n this.todayButtonClick.emit(dateInRange(getToday(), this.min, this.max));\n }\n handleNavigation() {\n if (!this.navigate) {\n return;\n }\n this.bus.moveUp(this.activeView);\n }\n intlChange() {\n if (this.currentDate && this.bus.service(this.activeView)) {\n this.title = this.getTitle();\n this.cdr.markForCheck();\n }\n }\n l10nChange() {\n this.prevButtonTitle = this.localization.get('prevButtonTitle');\n this.nextButtonTitle = this.localization.get('nextButtonTitle');\n this.todayMessage = this.localization.get('today');\n this.cdr.markForCheck();\n }\n getTitle() {\n if (!this.currentDate) {\n return '';\n }\n const service = this.bus.service(this.activeView);\n const take = this.rangeLength - 1;\n const title = service.title(this.currentDate);\n const nextDate = service.addToDate(this.currentDate, take);\n if (take < 1 || !service.isInRange(nextDate, this.min, this.max)) {\n return title;\n }\n return `${title} - ${service.title(nextDate)}`;\n }\n setTodayAvailability() {\n const today = getToday();\n const isTodayInRange = isInRange(today, getDate(this.min), getDate(this.max));\n const isDisabled = this.disabledDatesService.isDateDisabled(today);\n this.todayAvailable = isTodayInRange && !isDisabled;\n this.cdr.markForCheck();\n }\n}\nHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1$1.LocalizationService }, { token: i1.IntlService }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: { activeView: \"activeView\", currentDate: \"currentDate\", min: \"min\", max: \"max\", rangeLength: \"rangeLength\", templateRef: \"templateRef\", isPrevDisabled: \"isPrevDisabled\", isNextDisabled: \"isNextDisabled\", showNavigationButtons: \"showNavigationButtons\" }, outputs: { todayButtonClick: \"todayButtonClick\", prevButtonClick: \"prevButtonClick\", nextButtonClick: \"nextButtonClick\" }, host: { properties: { \"class.k-calendar-header\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-calendar-header',\n template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1$1.LocalizationService }, { type: i1.IntlService }, { type: DisabledDatesService }]; }, propDecorators: { activeView: [{\n type: Input\n }], currentDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeLength: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], isPrevDisabled: [{\n type: Input\n }], isNextDisabled: [{\n type: Input\n }], showNavigationButtons: [{\n type: Input\n }], todayButtonClick: [{\n type: Output\n }], prevButtonClick: [{\n type: Output\n }], nextButtonClick: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }] } });\n\nconst KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(bus) {\n this.bus = bus;\n }\n action(event) {\n const action = `${event.ctrlKey || event.metaKey ? 'meta+' : ''}${event.keyCode}`;\n return KEY_TO_ACTION[action];\n }\n move(value, action, activeView) {\n const service = this.bus.service(activeView);\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView);\n return value;\n }\n return service.move(value, action);\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor(bus) {\n this.bus = bus;\n }\n performSelection(args) {\n let { date, modifiers, selectionMode, activeViewEnum, rangePivot } = args;\n let selectedDates = args.selectedDates.slice();\n if (selectionMode === 'multiple') {\n if (modifiers.ctrlKey || modifiers.metaKey) {\n if (this.isDateSelected(selectedDates, date)) {\n selectedDates = selectedDates.filter(item => !isEqual(item, date));\n }\n else {\n selectedDates.push(date);\n }\n rangePivot = date;\n }\n else if (modifiers.shiftKey) {\n const [start, end] = sortDates([rangePivot || date, date]);\n selectedDates = this.bus.service(activeViewEnum).dateRange(start, end);\n rangePivot = date > selectedDates[0] ? selectedDates[0] : last(selectedDates);\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n return { selectedDates, rangePivot };\n }\n isDateSelected(selectedDates, date) {\n return selectedDates.some(item => isEqual(item, date));\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * Used for rendering the cell content of the Calendar. To define the cell template, nest an `` tag\n * with the `kendoCalendarCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details\n * about the current cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * > `kendoCalendarCellTemplate` is equivalent to\n * > [`kendoCalendarMonthCellTemplate`]({% slug api_dateinputs_monthcelltemplatedirective %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{date.getDate()}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellTemplateDirective, selector: \"[kendoCalendarCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the month cell content of the Calendar. To define the month cell template, nest an `` tag\n * with the `kendoCalendarMonthCellTemplate` directive inside the component tag. The template context is set to the current\n * component. To get a reference to the current date, use the `let-date` directive. To provide more details about the current\n * month cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MonthCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMonthCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMonthCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthCellTemplateDirective, selector: \"[kendoCalendarMonthCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarMonthCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the year cell content of the Calendar. To define the year cell template, nest an\n * `` tag with the `kendoCalendarYearCellTemplate` directive inside the component tag.\n * The template context is set to the current component. To get a reference to the current date, use\n * the `let-date` directive. To provide more details about the current year cell, get a reference to the\n * current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'year';\n * }\n * ```\n */\nclass YearCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nYearCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nYearCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YearCellTemplateDirective, selector: \"[kendoCalendarYearCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarYearCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the decade cell content of the Calendar. To define the decade cell template, nest an ``\n * tag with the `kendoCalendarDecadeCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current decade cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'decade';\n * }\n * ```\n */\nclass DecadeCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDecadeCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDecadeCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DecadeCellTemplateDirective, selector: \"[kendoCalendarDecadeCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarDecadeCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the century cell content of the Calendar. To define the century cell template, nest an ``\n * tag with the `kendoCalendarCenturyCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current century cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'century';\n * }\n * ```\n */\nclass CenturyCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCenturyCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCenturyCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CenturyCellTemplateDirective, selector: \"[kendoCalendarCenturyCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCenturyCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the week number cell content in the month view of the Calendar. To define the month week number cell template,\n * nest an `` tag with the `kendoCalendarWeekNumberCellTemplate` directive inside the component tag. The template\n * context is set to the current component. To get a reference to the current date, use the `let-date` directive. To provide more\n * details about the current week number cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass WeekNumberCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nWeekNumberCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nWeekNumberCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WeekNumberCellTemplateDirective, selector: \"[kendoCalendarWeekNumberCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarWeekNumberCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the header title of the Calendar. To define the header title template, nest an `` tag\n * with the `kendoCalendarHeaderTitleTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current title, use the `let-title` directive. To provide more details about\n * the current title, get a reference to the current `date` by using the `let-date` directive or get a reference to the\n * current active view by using the `let-activeView` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass HeaderTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTitleTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTitleTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTitleTemplateDirective, selector: \"[kendoCalendarHeaderTitleTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarHeaderTitleTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nconst minValidator = (minValue) => {\n return (control) => {\n const err = {\n minError: {\n minValue: minValue,\n value: control.value\n }\n };\n if (!minValue || !control.value) {\n return null;\n }\n return control.value < minValue ? err : null;\n };\n};\n\n/**\n * @hidden\n */\nconst maxValidator = (maxValue) => {\n return (control) => {\n const err = {\n maxError: {\n maxValue: maxValue,\n value: control.value\n }\n };\n if (!maxValue || !control.value) {\n return null;\n }\n return control.value > maxValue ? err : null;\n };\n};\n\nconst noop = () => null;\n/**\n * @hidden\n */\nconst disabledDatesRangeValidator = (isDateDisabled) => {\n if (!isPresent(isDateDisabled)) {\n return noop;\n }\n return (selectedRange) => {\n const isRangeComplete = isPresent(selectedRange) && isPresent(selectedRange.start) && isPresent(selectedRange.end);\n if (!isRangeComplete || selectedRange.start > selectedRange.end) {\n return null;\n }\n const disabledDates = disabledDatesInRange(selectedRange.start, selectedRange.end, isDateDisabled);\n const error = {\n disabledDatesInRange: disabledDates\n };\n return disabledDates.length ? error : null;\n };\n};\n\n/**\n * @hidden\n */\nclass Messages$1 extends ComponentMessages {\n}\nMessages$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages$1.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages$1, selector: \"kendo-multiview-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-multiview-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass MultiViewCalendarLocalizedMessagesDirective extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nMultiViewCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nMultiViewCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoMultiViewCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$5 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * Represents the Kendo UI MultiViewCalendar component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MultiViewCalendarComponent {\n constructor(bus, element, navigator, renderer, cdr, zone, disabledDatesService, selectionService) {\n this.bus = bus;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.zone = zone;\n this.disabledDatesService = disabledDatesService;\n this.selectionService = selectionService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_multiviewcalendar %}#toc-validation)).\n */\n this.disabledDatesRangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_multiviewcalendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_multiviewcalendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.isActive = false;\n /**\n * @hidden\n */\n this.isHeaderActive = false;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_multiviewcalendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view, to which the user can navigate\n * ([see example]({% slug dates_multiviewcalendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view, to which the user can navigate.\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to display a header for every view (for example the month name).\n */\n this.showViewHeader = false;\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_multiviewcalendar %})).\n */\n this.weekNumber = false;\n /**\n * Sets or gets the `views` property of the Calendar and\n * defines the number of rendered months.\n */\n this.views = 2;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_multiviewcalendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when a view cell is entered\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellEnter = new EventEmitter();\n /**\n * Fires when a view cell is leaved\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellLeave = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.blurEvent = new EventEmitter();\n this.cellUID = guid();\n this.isHovered = false;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.prevView = Action.PrevView;\n this.nextView = Action.NextView;\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.resolvedPromise = Promise.resolve();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesRangeValidateFn = noop$2;\n this.subscriptions = new Subscription();\n this.setClasses(element.nativeElement);\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n this._focusedDate = focusedDate || getToday();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value.\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value.\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the MultiViewCalendar that will be disabled\n * ([see example]({% slug disabled_dates_multiviewcalendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n }\n /**\n * Sets or gets the `selectionRange` property of the Calendar and\n * defines the selection range of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-selection-range)).\n */\n set selectionRange(range) {\n this._selectionRange = range;\n if (this.disabledDatesRangeValidation) {\n this.onValidatorChange();\n }\n }\n get selectionRange() {\n return this._selectionRange;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get ariaActivedescendant() {\n return this.cellUID + this.focusedDate.getTime();\n }\n /**\n * @hidden\n */\n handleFocusout(event) {\n const relatedTarget = event.relatedTarget;\n if (!this.element.nativeElement.contains(relatedTarget)) {\n this.blurEvent.emit(event);\n this.onControlTouched();\n }\n this.isActive = false;\n this.isHovered = false; //ensure that hovered is also not active\n this.isHeaderActive = this.headerElement.nativeElement.contains(relatedTarget);\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n this.isHeaderActive = false;\n }\n /**\n * @hidden\n */\n handleMouseEnter() {\n this.isHovered = true;\n }\n /**\n * @hidden\n */\n handleMouseLeave() {\n this.isHovered = false;\n }\n /**\n * @hidden\n */\n handleMousedown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleClick() {\n if (this.isActive) {\n return;\n }\n this.focus();\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (this.isHeaderActive) {\n return;\n }\n if (event.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, event);\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(event), this.activeViewEnum), this.min, this.max);\n if (isEqual(this.focusedDate, candidate)) {\n return;\n }\n this.focusedDate = candidate;\n event.preventDefault();\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n ngOnInit() {\n this.subscriptions.add(this.bus.viewChanged.subscribe(({ view }) => {\n this.activeView = CalendarViewEnum[view];\n this.activeViewChange.emit(this.activeView);\n this.cdr.detectChanges();\n this.updateButtonState();\n }));\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDates || changes.disabledDatesRangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesRangeValidateFn = this.disabledDatesRangeValidation ? disabledDatesRangeValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.onValidatorChange();\n }\n if (changes.min || changes.max || changes.focusedDate || changes.activeView) {\n this.updateButtonState();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n ngAfterViewInit() {\n this.updateButtonState();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n /**\n * @hidden\n */\n handleHeaderFocus() {\n this.isHeaderActive = true;\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = args.selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n const sameDates = !canNavigateDown && areDatesEqual(availableDates, this.selectedDates);\n if (this.disabled || sameDates) {\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n }\n /**\n * @hidden\n */\n handleTodayButtonClick(args) {\n const todayDate = args.focusedDate;\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(todayDate, this.viewList.dates);\n const isBottomView = !this.bus.canMoveDown(this.activeViewEnum);\n if (!isSameView && isBottomView) {\n this.emitNavigate(todayDate);\n }\n this.handleDateChange(args);\n }\n /**\n * @hidden\n */\n setActiveDate(date) {\n this.activeDate = cloneDate(date);\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesRangeValidateFn(this.selectionRange);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n navigateView(action) {\n this.focusedDate = this.viewList.navigate(action);\n this.updateButtonState();\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitCellEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.zone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.zone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, 'k-calendar-range');\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$3} and ${MAX_DOC_LINK$3}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK$1} and ${TOP_VIEW_DOC_LINK$1}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n }\n }\n updateButtonState() {\n this.resolvedPromise.then(() => {\n this.isPrevDisabled = !this.viewList.canNavigate(this.prevView);\n this.isNextDisabled = !this.viewList.canNavigate(this.nextView);\n this.cdr.markForCheck();\n });\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nMultiViewCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, deps: [{ token: BusViewService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: DisabledDatesService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesRangeValidation: \"disabledDatesRangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", isActive: \"isActive\", disabledDates: \"disabledDates\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", views: \"views\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", valueChange: \"valueChange\", blurEvent: \"blur\" }, host: { listeners: { \"focusout\": \"handleFocusout($event)\", \"focus\": \"handleFocus()\", \"mouseenter\": \"handleMouseEnter()\", \"mouseleave\": \"handleMouseLeave()\", \"mousedown\": \"handleMousedown($event)\", \"click\": \"handleClick()\", \"keydown\": \"keydown($event)\" }, properties: { \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\", \"attr.aria-activedescendant\": \"this.ariaActivedescendant\" } }, providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"headerElement\", first: true, predicate: HeaderComponent, descendants: true, read: ElementRef }, { propertyName: \"viewList\", first: true, predicate: HorizontalViewListComponent, descendants: true }], exportAs: [\"kendo-multiviewcalendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"activeRangeEnd\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectionRange\", \"selectedDates\", \"views\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\", \"activeDateChange\"] }], directives: [{ type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-multiviewcalendar',\n providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ],\n selector: 'kendo-multiviewcalendar',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: DisabledDatesService }, { type: SelectionService }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesRangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], isActive: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], views: [{\n type: Input\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerElement: [{\n type: ViewChild,\n args: [HeaderComponent, { static: false, read: ElementRef }]\n }], viewList: [{\n type: ViewChild,\n args: [HorizontalViewListComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleFocusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], handleFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], handleMouseEnter: [{\n type: HostListener,\n args: [\"mouseenter\"]\n }], handleMouseLeave: [{\n type: HostListener,\n args: [\"mouseleave\"]\n }], handleMousedown: [{\n type: HostListener,\n args: [\"mousedown\", ['$event']]\n }], handleClick: [{\n type: HostListener,\n args: [\"click\"]\n }], keydown: [{\n type: HostListener,\n args: [\"keydown\", [\"$event\"]]\n }] } });\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => ([\n ...arr.slice(0, idx + 1),\n ...(arr.slice(idx + 1).map(x => x + value))\n]);\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex) {\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n}\n\nconst normalize = x => Math.max(x, 0);\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip) {\n this.skip = skip;\n }\n}\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n create(rowHeightService, skip, take, total, topOffset = 0, bottomOffset = 0, direction = 'vertical') {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScroll = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n const subject = new ReplaySubject(2);\n const offsetBufferRows = this.rowsForHeight(topOffset);\n const skipWithOffset = normalize(skip - offsetBufferRows);\n subject.next(new ScrollAction(this.rowOffset(skipWithOffset)));\n if (offsetBufferRows) {\n subject.next(new PageAction(skipWithOffset));\n }\n this.subscription = new Observable(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe((x) => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({ scrollLeft, scrollTop, offsetHeight, offsetWidth }, observer) {\n const scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n const offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScroll === scrollPosition) {\n return;\n }\n const up = this.lastScroll >= scrollPosition;\n this.lastScroll = scrollPosition;\n const firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n const lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n observer.next(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n }\n rowOffset(index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n }\n rowsForHeight(height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = null;\n }\n }\n}\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('dateinputs-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nconst FRAME_DURATION = 17;\nconst scrollModifiers = {\n [ScrollDirection.Forward]: (step) => value => value + step,\n [ScrollDirection.Backward]: (step) => value => value - step\n};\nconst scrollNormalizers = {\n [ScrollDirection.Forward]: (end) => value => Math.min(value, end),\n [ScrollDirection.Backward]: (end) => value => Math.max(value, end)\n};\nconst scrollValidators = {\n [ScrollDirection.Forward]: end => start => start < end,\n [ScrollDirection.Backward]: end => start => start > end\n};\nconst differenceToScroll = (scrollTop, staticOffset, maxScrollDifference) => {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\n/**\n * @hidden\n */\nclass VirtualizationComponent {\n constructor(scrollerFactory, container, renderer, zone) {\n this.container = container;\n this.renderer = renderer;\n this.zone = zone;\n this.direction = 'vertical';\n this.itemHeight = 1;\n this.itemWidth = 1;\n this.topOffset = 0;\n this.bottomOffset = 0;\n this.maxScrollDifference = 100;\n this.scrollOffsetSize = 0;\n this.scrollDuration = 150;\n this.activeIndexChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollChange = new EventEmitter();\n this.wrapperClasses = true;\n this.resolvedPromise = Promise.resolve(null);\n this.dispatcher = new Subject();\n this.scroller = scrollerFactory(this.dispatcher);\n }\n get horizontalClass() {\n return this.direction === 'horizontal';\n }\n get totalVertexLength() {\n const value = `${this.totalSize}px`;\n return this.direction === 'vertical' ? { height: value } : { width: value };\n }\n get containerOffsetSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n }\n get containerScrollSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n }\n get containerScrollPosition() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n }\n ngOnChanges(changes) {\n if (changes.direction || changes.take || changes.total) {\n this.initServices();\n this.totalSize = this.rowHeightService.totalHeight() + this.bottomOffset;\n }\n }\n ngOnInit() {\n if (!this.rowHeightService) {\n this.rowHeightService = this.createRowHeightService();\n }\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.containerScrollSubscription = this.scroll$()\n .pipe(map((event) => event.target))\n .subscribe(t => {\n this.dispatcher.next(t);\n this.emitActiveIndex();\n });\n });\n }\n ngOnDestroy() {\n if (this.containerScrollSubscription) {\n this.containerScrollSubscription.unsubscribe();\n }\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n }\n getContainerProperty(propertyName) {\n return this.container.nativeElement[propertyName];\n }\n activeIndex() {\n return this.itemIndex(Math.ceil(this.containerScrollPosition)); //handle subpixeling\n }\n itemIndex(offset) {\n return this.rowHeightService.index(offset);\n }\n itemOffset(index) {\n return this.rowHeightService.offset(index);\n }\n isIndexVisible(index) {\n if (!this.rowHeightService) {\n return false;\n }\n const containerTop = this.containerScrollPosition;\n const containerBottom = containerTop + this.containerOffsetSize;\n const top = this.rowHeightService.offset(index);\n const bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n }\n isListScrolled(index) {\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n }\n scrollTo(value) {\n const scrollProperty = this.direction === \"vertical\" ? 'scrollTop' : 'scrollLeft';\n this.renderer.setProperty(this.container.nativeElement, scrollProperty, value);\n }\n scrollToIndex(index) {\n //XXX: scrolling with tick is required to prevent list jump in Chrome.\n //Original issue: focus first day in the month and press LEFT arrow.\n //Notice how the view jumps on every day change.\n //\n this.zone.runOutsideAngular(() => {\n this.resolvedPromise.then(() => {\n this.scrollTo(this.rowHeightService.offset(index));\n });\n });\n }\n scrollToBottom() {\n this.scrollTo(this.totalSize);\n }\n animateToIndex(index) {\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n const indexOffset = this.rowHeightService.offset(index);\n const direction = this.getContainerScrollDirection(indexOffset);\n const { start, end } = this.scrollRange(indexOffset, direction);\n if (start === end) {\n return;\n }\n const step = this.scrollStep(start, end);\n const modifyScroll = scrollModifiers[direction](step);\n const normalizeScroll = scrollNormalizers[direction](end);\n const isScrollValid = scrollValidators[direction](modifyScroll(end));\n this.zone.runOutsideAngular(() => {\n this.animationSubscription =\n combineLatest(of(start), interval(0, animationFrameScheduler)).pipe(map(stream => stream[0]), scan(modifyScroll), takeWhile(isScrollValid), map(normalizeScroll)).subscribe((x) => this.scrollTo(x));\n });\n }\n scrollRange(indexOffset, direction) {\n const containerScroll = this.containerScrollPosition;\n if (parseInt(indexOffset, 10) === parseInt(containerScroll, 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n const maxScroll = this.containerMaxScroll();\n const sign = direction === ScrollDirection.Backward ? 1 : -1;\n const difference = differenceToScroll(containerScroll, indexOffset, this.maxScrollDifference);\n const end = Math.min(indexOffset, maxScroll);\n const start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start, end };\n }\n scrollStep(start, end) {\n return Math.abs(end - start) / (this.scrollDuration / FRAME_DURATION);\n }\n scroll$() {\n return isDocumentAvailable() ? fromEvent(this.container.nativeElement, 'scroll') : EMPTY;\n }\n initServices() {\n this.rowHeightService = this.createRowHeightService();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n this.scrollSubscription = this.scroller\n .create(this.rowHeightService, this.skip, this.take, this.total, this.topOffset, this.scrollOffsetSize, this.direction)\n .subscribe((x) => {\n if (x instanceof PageAction) {\n this.pageChange.emit(x);\n }\n else {\n this.scrollChange.emit(x);\n }\n });\n }\n createRowHeightService() {\n const dimension = this.direction === 'vertical' ? this.itemHeight : this.itemWidth;\n return new RowHeightService(this.total, dimension, 0);\n }\n emitActiveIndex() {\n const index = this.rowHeightService.index(this.containerScrollPosition - this.topOffset);\n if (this.lastActiveIndex !== index) {\n this.lastActiveIndex = index;\n this.activeIndexChange.emit(index);\n }\n }\n containerMaxScroll() {\n return this.containerScrollSize - this.containerOffsetSize;\n }\n getContainerScrollDirection(indexOffset) {\n return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n }\n}\nVirtualizationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nVirtualizationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: { direction: \"direction\", itemHeight: \"itemHeight\", itemWidth: \"itemWidth\", topOffset: \"topOffset\", bottomOffset: \"bottomOffset\", maxScrollDifference: \"maxScrollDifference\", scrollOffsetSize: \"scrollOffsetSize\", scrollDuration: \"scrollDuration\", skip: \"skip\", take: \"take\", total: \"total\" }, outputs: { activeIndexChange: \"activeIndexChange\", pageChange: \"pageChange\", scrollChange: \"scrollChange\" }, host: { properties: { \"class.k-flex\": \"this.wrapperClasses\", \"class.k-content\": \"this.wrapperClasses\", \"class.k-calendar-content\": \"this.wrapperClasses\", \"class.k-scrollable\": \"this.wrapperClasses\", \"class.k-scrollable-horizontal\": \"this.horizontalClass\" } }, providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }], usesOnChanges: true, ngImport: i0, template: `\n \n \n `, isInline: true, directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }],\n selector: 'kendo-virtualization',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], itemWidth: [{\n type: Input\n }], topOffset: [{\n type: Input\n }], bottomOffset: [{\n type: Input\n }], maxScrollDifference: [{\n type: Input\n }], scrollOffsetSize: [{\n type: Input\n }], scrollDuration: [{\n type: Input\n }], skip: [{\n type: Input\n }], take: [{\n type: Input\n }], total: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollChange: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-flex']\n }, {\n type: HostBinding,\n args: ['class.k-content']\n }, {\n type: HostBinding,\n args: ['class.k-calendar-content']\n }, {\n type: HostBinding,\n args: ['class.k-scrollable']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-scrollable-horizontal']\n }] } });\n\nconst div$1 = domContainerFactory('div');\nconst ul$1 = domContainerFactory('ul');\nconst li$1 = domContainerFactory('li');\nconst td = domContainerFactory('td');\nconst th = domContainerFactory('th');\nconst tr = domContainerFactory('tr');\nconst tbody = domContainerFactory('tbody');\nconst thead = domContainerFactory('thead');\nconst table = domContainerFactory('table');\nconst monthHeader = () => (div$1(`\n March 2017\n \n \n TODAY\n \n `, 'k-calendar-header k-hstack'));\nconst monthWeekHeader = () => (table([\n thead([\n tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n ], 'k-calendar-thead')\n], 'k-calendar-weekdays k-calendar-table'));\nconst repeat = (count, mapper) => new Array(count).fill('1').map(mapper);\nconst content = (rows, cells = 1) => (table([\n tbody([tr([th('1', 'k-calendar-th')], 'k-calendar-tr')].concat(repeat(rows, () => tr(repeat(cells, c => td(`${c}`, 'k-calendar-td')), 'k-calendar-tr'))), 'k-calendar-tbody')\n], 'k-calendar-table'));\nconst scrollable$1 = (children) => div$1(children, 'k-flex k-content k-calendar-content k-scrollable');\nconst view = (contentElement, className, renderWeekHeader) => (div$1([\n monthHeader(),\n renderWeekHeader ? monthWeekHeader() : null,\n scrollable$1([contentElement, contentElement])\n], className, { left: '-10000px', position: 'absolute' }));\nconst navigationList = (() => {\n let navElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!navElement) {\n navElement = div$1([scrollable$1([ul$1([li$1('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n})();\nconst viewFactory = ({ cells, rows }, className, renderWeekHeader) => {\n let viewElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n};\nconst getScrollable = (element) => element.querySelector('.k-scrollable');\nconst horizontal = element => {\n const scrollableElement = getScrollable(element);\n scrollableElement.classList.add('k-scrollable-horizontal');\n return element;\n};\nconst monthView = viewFactory({ cells: 7, rows: 6 }, 'k-vstack k-calendar-view k-calendar-monthview', true);\nconst yearView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-yearview', false);\nconst decadeView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-decadeview', false);\nconst horzMonthView = () => horizontal(monthView());\nconst horzYearView = () => horizontal(yearView());\nconst horzDecadeView = () => horizontal(decadeView());\nconst height = (element) => (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight);\nconst width = (element) => {\n const styles = window.getComputedStyle(element);\n const computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n};\nconst getBody = (element) => element.querySelector('tbody');\n/**\n * @hidden\n */\nclass CalendarDOMService {\n ensureHeights() {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n this.hostContainer = container;\n this.batch(monthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarHeight = height(contentElement);\n this.monthViewHeight = height(viewElement);\n this.headerHeight = height(viewElement.children[0]);\n this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarWidth = width(contentElement);\n this.monthViewWidth = width(viewElement);\n this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), (contentElement) => {\n this.yearViewHeight = height(getBody(contentElement));\n this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), (contentElement) => {\n this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), (contentElement) => {\n this.decadeViewHeight = height(getBody(contentElement));\n this.centuryViewHeight = this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), (contentElement) => {\n this.decadeViewWidth = width(getBody(contentElement));\n this.centuryViewWidth = this.decadeViewWidth;\n });\n this.batch(navigationList(), (contentElement) => {\n this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n }\n viewHeight(viewType) {\n return this.viewDimension(viewType, 'height');\n }\n viewWidth(viewType) {\n return this.viewDimension(viewType, 'width');\n }\n viewDimension(viewType, dimension) {\n const viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[`month${viewProp}`];\n case CalendarViewEnum.year:\n return this[`year${viewProp}`];\n case CalendarViewEnum.decade:\n return this[`decade${viewProp}`];\n case CalendarViewEnum.century:\n return this[`century${viewProp}`];\n default:\n return 1;\n }\n }\n batch(contentElement, action) {\n if (!isPresent(this.hostContainer)) {\n return;\n }\n const hostClone = this.hostContainer.cloneNode();\n document.body.appendChild(hostClone);\n try {\n const appendedContent = hostClone.appendChild(contentElement);\n action(appendedContent);\n }\n catch (error) {\n throw error;\n }\n finally {\n document.body.removeChild(hostClone);\n }\n }\n}\nCalendarDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nclass NavigationComponent {\n constructor(bus, dom, intl, cdr, renderer) {\n this.bus = bus;\n this.dom = dom;\n this.intl = intl;\n this.cdr = cdr;\n this.renderer = renderer;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.focusedDate = new Date();\n this.valueChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.dates = [];\n this.take = ITEMS_COUNT;\n this.indexToScroll = -1;\n }\n get getComponentClass() {\n return true;\n }\n ngOnInit() {\n this.dom.ensureHeights();\n const calendarHeight = this.dom.calendarHeight;\n this.itemHeight = this.dom.navigationItemHeight;\n this.maxViewHeight = this.dom.monthViewHeight;\n this.topOffset = (calendarHeight - this.itemHeight) / 2;\n this.bottomOffset = calendarHeight - this.itemHeight;\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n const viewDate = dateInRange(this.focusedDate, this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n if (totalChanged || !this.service.isInArray(viewDate, this.dates)) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!!changes.focusedDate || totalChanged) {\n this.indexToScroll = this.service.skip(this.focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n handleDateChange(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-date-index'), this.list.nativeElement);\n if (item) {\n const index = parseInt(item.getAttribute('data-date-index'), 10);\n const candidate = this.dates[index];\n this.valueChange.emit(cloneDate(candidate));\n }\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n intlChange() {\n if (this.activeView === CalendarViewEnum.month) {\n this.cdr.markForCheck();\n }\n }\n}\nNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: { activeView: \"activeView\", min: \"min\", max: \"max\", focusedDate: \"focusedDate\", templateRef: \"templateRef\" }, outputs: { valueChange: \"valueChange\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-calendar-navigation\": \"this.getComponentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-navigation',\n template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { activeView: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-navigation\"]\n }] } });\n\nconst VIEWS_COUNT = 5;\nconst isEqualMonthYear = (date1, date2) => (date1 && date2 &&\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth());\n/**\n * @hidden\n */\nclass ViewListComponent {\n constructor(bus, cdr, intl, dom, renderer) {\n this.bus = bus;\n this.cdr = cdr;\n this.intl = intl;\n this.dom = dom;\n this.renderer = renderer;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.todayButtonClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.getComponentClass = true;\n this.dates = [];\n this.cols = [];\n this.weekNames = [];\n this.take = VIEWS_COUNT;\n this.animateToIndex = true;\n this.indexToScroll = -1;\n this.minViewsToRender = 1;\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnInit() {\n this.weekNames = this.getWeekNames();\n this.bottomOffset = this.getBottomOffset();\n this.viewOffset = -1 * this.dom.headerHeight;\n this.viewHeight = this.dom.viewHeight(this.activeView);\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.cols = new Array(this.service.rowLength({ prependCell: this.weekNumber })).fill('');\n this.colWidth = Math.round(100 / this.cols.length);\n this.weekNames = hasChange(changes, 'weekNumber') && this.weekNumber ? this.getWeekNames() : this.weekNames;\n const activeViewChanged = hasChange(changes, 'activeView');\n const focusedDate = this.focusedDate;\n const viewDate = dateInRange(this.service.viewDate(focusedDate, this.max, this.minViewsToRender), this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n const generateDates = totalChanged || !this.service.isInArray(focusedDate, this.dates);\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n this.animateToIndex = !activeViewChanged;\n this.bottomOffset = this.getBottomOffset();\n this.viewHeight = this.dom.viewHeight(this.activeView);\n if (generateDates) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!isEqualMonthYear(this.activeDate, focusedDate)) {\n this.activeDate = cloneDate(focusedDate);\n }\n const updateIndex = hasChange(changes, 'focusedDate') || activeViewChanged;\n if (generateDates || updateIndex || this.virtualization.isIndexVisible(this.skip)) {\n this.indexToScroll = this.service.skip(focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization[this.animateToIndex ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n this.animateToIndex = true;\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n setActiveDate(index) {\n const candidate = this.service.addToDate(this.min, index);\n this.activeDate = candidate;\n this.activeDateChange.emit(candidate);\n this.cdr.detectChanges();\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n isScrolled() {\n return this.virtualization.isListScrolled(this.service.skip(this.focusedDate, this.min));\n }\n getBottomOffset() {\n return this.getScrollableHeight() - this.dom.viewHeight(this.activeView);\n }\n getScrollableHeight() {\n return this.activeView === CalendarViewEnum.month ?\n this.dom.scrollableContentHeight :\n this.dom.scrollableYearContentHeight;\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n getWeekNames() {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n }\n intlChange() {\n this.weekNames = this.getWeekNames();\n if (this.isMonthView()) {\n this.cdr.markForCheck();\n }\n }\n}\nViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: CalendarDOMService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", headerTitleTemplateRef: \"headerTitleTemplateRef\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", activeDateChange: \"activeDateChange\", todayButtonClick: \"todayButtonClick\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-vstack\": \"this.getComponentClass\", \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }, { type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-viewlist',\n template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], headerTitleTemplateRef: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], todayButtonClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-vstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\nconst divideByMagnitude = (magnitude) => x => Math.floor(x / magnitude);\nconst powerByMagnitude = (magnitude) => x => x * magnitude;\n/**\n * @hidden\n */\nclass ScrollSyncService {\n constructor(dom, zone) {\n this.dom = dom;\n this.zone = zone;\n }\n configure(activeView) {\n const magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n }\n sync(navigator, view) {\n this.unsubscribe();\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n this.zone.runOutsideAngular(() => {\n let navScrolled, monthScrolled;\n this.navSubscription = navigator.scroll$()\n .subscribe((e) => {\n if (monthScrolled) {\n monthScrolled = false;\n return;\n }\n navScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n this.viewSubscription = view.scroll$()\n .subscribe((e) => {\n if (navScrolled) {\n navScrolled = false;\n return;\n }\n monthScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n });\n }\n scrollSiblingOf(scrolledElement) {\n const component = this.siblingComponent(scrolledElement);\n const scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n }\n siblingComponent(scrollableElement) {\n return this.navigator.container.nativeElement === scrollableElement ? this.view : this.navigator;\n }\n calculateScroll(component, scrollTop) {\n const modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n }\n destroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.navSubscription) {\n this.navSubscription.unsubscribe();\n }\n if (this.viewSubscription) {\n this.viewSubscription.unsubscribe();\n }\n }\n}\nScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, deps: [{ token: CalendarDOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: CalendarDOMService }, { type: i0.NgZone }]; } });\n\n/**\n * Used for rendering the navigation item of the Calendar. To define the navigation item template, nest an ``\n * tag with the `kendoCalendarNavigationItemTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current item value, use the `let-title` directive. To provide more details\n * about the current title, get a reference to the current `date` by using the `let-date='date'` directive or get a reference\n * to the current active view by using the `let-activeView='activeView'` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass NavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationItemTemplateDirective, selector: \"[kendoCalendarNavigationItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarNavigationItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PickerService {\n constructor() {\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.sameDateSelected = new EventEmitter();\n this.dateCompletenessChange = new EventEmitter();\n }\n}\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass MultiViewCalendarCustomMessagesComponent extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nMultiViewCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-multiviewcalendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass CalendarMessages extends ComponentMessages {\n}\nCalendarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nCalendarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarMessages, selector: \"kendo-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass CalendarLocalizedMessagesDirective extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$4 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\nconst virtualizationProp = x => x ? x.virtualization : null;\n/**\n * @hidden\n */\nconst CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst KENDO_INPUT_PROVIDER = {\n provide: KendoInput,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * Represents the [Kendo UI Calendar component for Angular]({% slug overview_calendar %}#toc-basic-usage).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CalendarComponent {\n constructor(bus, dom, element, navigator, renderer, cdr, ngZone, injector, scrollSyncService, disabledDatesService, localization, selectionService, pickerService) {\n this.bus = bus;\n this.dom = dom;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.injector = injector;\n this.scrollSyncService = scrollSyncService;\n this.disabledDatesService = disabledDatesService;\n this.localization = localization;\n this.selectionService = selectionService;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_calendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_calendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar will be displayed\n * ([see example]({% slug sidebar_calendar %})).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.navigation = true;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_calendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view to which the user can navigate\n * ([see example]({% slug dates_calendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view to which the user can navigate\n * ([see example]({% slug sidebar_calendar %}#toc-partial-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n * Applies to the [`classic`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_calendar %})).\n */\n this.weekNumber = false;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_calendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when the active view date is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.activeViewDateChange = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n this.isActive = false;\n this.cellUID = guid();\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.syncNavigation = true;\n this._type = 'infinite';\n this.domEvents = [];\n this.resolvedPromise = Promise.resolve(null);\n this.destroyed = false;\n validatePackage(packageMetadata);\n this.setClasses(element.nativeElement);\n if (this.pickerService) {\n this.pickerService.calendar = this;\n }\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_calendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n if (this.activeViewDate && !isEqual(this._focusedDate, focusedDate)) {\n const service = this.bus.service(this.activeViewEnum);\n const lastDayInPeriod = service.lastDayOfPeriod(this.activeViewDate);\n const isFocusedDateInRange = service.isInRange(focusedDate, this.activeViewDate, lastDayInPeriod);\n if (!isFocusedDateInRange) {\n this.emitNavigate(focusedDate);\n }\n }\n this._focusedDate = focusedDate || getToday();\n this.setAriaActivedescendant();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the Calendar that will be disabled\n * ([see example]({% slug disabled_dates_calendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n this._disabledDates = value;\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n set type(type) {\n this.renderer.removeClass(this.element.nativeElement, `k-calendar-${this.type}`);\n this.renderer.addClass(this.element.nativeElement, `k-calendar-${type}`);\n this._type = type;\n }\n get type() {\n return this._type;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the navigation item.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set navigationItemTemplateRef(template) {\n this._navigationItemTemplateRef = template;\n }\n get navigationItemTemplateRef() {\n return this._navigationItemTemplateRef || this.navigationItemTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n // in Classic mode, the inner MultiViewCalendar is the focusable element\n return this.disabled || this.type === 'classic' ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n // in Classic mode, the inner MultiViewCalendar should handle the disabled class and aria attr\n return this.type === 'classic' ? undefined : this.disabled;\n }\n ngOnInit() {\n this.dom.calculateHeights(this.element.nativeElement);\n this.scrollSyncService.configure(this.activeViewEnum);\n this.localizationChangeSubscription = this.localization.changes.subscribe(() => this.cdr.markForCheck());\n this.viewChangeSubscription = this.bus.viewChanged.subscribe(({ view }) => this.handleActiveViewChange(CalendarViewEnum[view]));\n this.control = this.injector.get(NgControl, null);\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n this.scrollSyncService.configure(this.activeViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.navigation) {\n this.syncNavigation = true;\n }\n if (changes.min || changes.max || changes.rangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.onValidatorChange();\n }\n }\n ngAfterViewInit() {\n this.setAriaActivedescendant();\n }\n ngAfterViewChecked() {\n if (!this.syncNavigation) {\n return;\n }\n this.syncNavigation = false;\n this.scrollSyncService.sync(virtualizationProp(this.navigationView), virtualizationProp(this.monthView));\n }\n ngOnDestroy() {\n this.scrollSyncService.destroy();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n if (this.pickerService) {\n this.pickerService.calendar = null;\n }\n if (this.viewChangeSubscription) {\n this.viewChangeSubscription.unsubscribe();\n }\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n this.destroyed = true;\n }\n /**\n * @hidden\n */\n onResize() {\n this.focusedDate = new Date(this.focusedDate);\n this.cdr.detectChanges();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const focusTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(focusTarget)) {\n focusTarget.focus();\n }\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n const blurTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(blurTarget)) {\n blurTarget.blur();\n }\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n /**\n * @hidden\n */\n handleNavigation(candidate) {\n if (this.disabled) {\n return;\n }\n const focusTarget = candidate ? new Date(cloneDate(candidate).setDate(1)) : this.focusedDate;\n this.focusedDate = dateInRange(focusTarget, this.min, this.max);\n this.detectChanges();\n }\n /**\n * @hidden\n */\n onPageChange() {\n if (!NgZone.isInAngularZone()) {\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n this.pageChangeSubscription = from(this.resolvedPromise)\n .subscribe(() => {\n this.detectChanges(); // requires zone if templates\n });\n }\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarValueChange(date, focusedDate) {\n const selectedDates = Array.isArray(date) ? date : [date];\n this.handleDateChange({ selectedDates, focusedDate });\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const selectedDates = Array.isArray(args.selectedDates) ? args.selectedDates : [args.selectedDates];\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n if (this.disabled) {\n return;\n }\n if (!canNavigateDown && areDatesEqual(availableDates, this.selectedDates)) {\n this.emitSameDate();\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.ngZone.run(() => {\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n this.focusedDate = event.focusedDate;\n this.activeView = event.activeView;\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.ngZone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleActiveDateChange(date) {\n this.activeViewDate = date;\n this.emitEvent(this.activeViewDateChange, date);\n }\n /**\n * @hidden\n */\n handleActiveViewChange(view) {\n this.activeView = view;\n this.emitEvent(this.activeViewChange, view);\n if (this.type === 'infinite') {\n this.scrollSyncService.configure(this.activeViewEnum);\n }\n this.detectChanges(); // requires zone if templates\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.ngZone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n if (this.element.nativeElement.contains(args.relatedTarget)) {\n return;\n }\n this.isActive = false;\n // the injector can get the NgControl instance of the parent component (for example, the DateTimePicker)\n // and enters the zone for no reason because the parent component is still untouched\n if (!this.pickerService && requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n this.detectChanges();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n if (!NgZone.isInAngularZone()) {\n this.detectChanges();\n }\n this.emitFocus();\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarKeydown(args) {\n // Prevent form from submitting on enter if used in datepicker (classic view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, `k-calendar-${this.type}`);\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$2} and ${MAX_DOC_LINK$2}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK} and ${TOP_VIEW_DOC_LINK}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n }\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'blur', this.handleBlur.bind(this)), this.renderer.listen(element, 'focus', this.handleFocus.bind(this)), this.renderer.listen(element, 'mousedown', preventDefault), this.renderer.listen(element, 'click', this.handleComponentClick.bind(this)), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus() {\n if (this.pickerService) {\n this.pickerService.onFocus.emit();\n }\n }\n handleComponentClick() {\n if (!this.isActive) {\n if (this.type === 'infinite' && this.monthView.isScrolled()) {\n this.focusedDate = cloneDate(this.focusedDate); //XXX: forces change detect\n this.detectChanges();\n }\n this.focus();\n }\n }\n handleKeydown(args) {\n const headerActive = this.type === 'classic' && this.multiViewCalendar.isHeaderActive;\n if (headerActive) {\n return;\n }\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowUp, Keys.ArrowRight, Keys.ArrowDown, Keys.ArrowLeft].indexOf(args.keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && args.altKey) {\n return;\n }\n // Prevent form from submitting on enter if used in datepicker (infinite view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(args), this.activeViewEnum), this.min, this.max);\n if (!isEqual(this.focusedDate, candidate)) {\n this.focusedDate = candidate;\n this.detectChanges();\n args.preventDefault();\n }\n if (args.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, args);\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.cdr.detectChanges();\n }\n }\n emitSameDate() {\n if (this.pickerService) {\n this.pickerService.sameDateSelected.emit();\n }\n }\n setAriaActivedescendant() {\n // in Classic mode, the inner MultiViewCalendar handles the activedescendant\n if (!isPresent(this.element) || (this.type === 'classic' && !this.element.nativeElement.hasAttribute('aria-activedescendant'))) {\n return;\n }\n if (this.type === 'classic') {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-activedescendant');\n return;\n }\n const focusedCellId = this.cellUID + this.focusedDate.getTime();\n this.renderer.setAttribute(this.element.nativeElement, 'aria-activedescendant', focusedCellId);\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: ScrollSyncService }, { token: DisabledDatesService }, { token: i1$1.LocalizationService }, { token: SelectionService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarComponent, selector: \"kendo-calendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", navigation: \"navigation\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", type: \"type\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", activeViewDateChange: \"activeViewDateChange\", valueChange: \"valueChange\" }, host: { properties: { \"class.k-week-number\": \"this.weekNumber\", \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\" } }, providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"navigationView\", first: true, predicate: NavigationComponent, descendants: true }, { propertyName: \"monthView\", first: true, predicate: ViewListComponent, descendants: true }, { propertyName: \"multiViewCalendar\", first: true, predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-calendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: [\"activeView\", \"min\", \"max\", \"focusedDate\", \"templateRef\"], outputs: [\"valueChange\", \"pageChange\"] }, { type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"headerTitleTemplateRef\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectedDates\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"activeDateChange\", \"todayButtonClick\", \"pageChange\"] }, { type: i5.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }, { type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }, { type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\" }], directives: [{ type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-calendar',\n providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ],\n selector: 'kendo-calendar',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: ScrollSyncService }, { type: DisabledDatesService }, { type: i1$1.LocalizationService }, { type: SelectionService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], navigation: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], type: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-week-number']\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], activeViewDateChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], navigationView: [{\n type: ViewChild,\n args: [NavigationComponent, { static: false }]\n }], monthView: [{\n type: ViewChild,\n args: [ViewListComponent, { static: false }]\n }], multiViewCalendar: [{\n type: ViewChild,\n args: [MultiViewCalendarComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst incompleteDateValidator = () => {\n return (control, incomplete) => {\n if (!isPresent(control.value) && incomplete) {\n return { incompleteDate: true };\n }\n else {\n return null;\n }\n };\n};\n\n/**\n * @hidden\n */\nvar Arrow;\n(function (Arrow) {\n Arrow[Arrow[\"Up\"] = 0] = \"Up\";\n Arrow[Arrow[\"Down\"] = 1] = \"Down\";\n Arrow[Arrow[\"None\"] = 2] = \"None\";\n})(Arrow || (Arrow = {}));\n\n/**\n * @hidden\n */\nclass DateInputMessages extends ComponentMessages {\n}\nDateInputMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDateInputMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputMessages, selector: \"kendo-dateinput-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-dateinput-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DateInputLocalizedMessagesDirective extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDateInputLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDateInputLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateInputLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-min';\nconst MAX_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-max';\nconst VALUE_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput/#toc-using-with-json';\nconst DATE_PART_REGEXP = /year|month|/;\nconst TIME_PART_REGEXP = /hour|minute|second|millisecond/;\nconst SHORT_PATTERN_LENGTH_REGEXP = /d|M|H|h|m|s/;\nconst TWO_DIGIT_YEAR_MAX$2 = 68;\nconst PREVIOUS_CENTURY_BASE = 1900;\nconst CURRENT_CENTURY_BASE = 2000;\nconst DEFAULT_FORMAT$1 = 'd';\nconst padZero = (length) => new Array(Math.max(length, 0)).fill('0').join('');\nconst unpadZero = (value) => value.replace(/^0*/, '');\nclass Mask {\n constructor() {\n this.symbols = \"\";\n }\n}\nclass KendoDate {\n constructor(intl, formatPlaceholder, format, value, twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2) {\n this.intl = intl;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.twoDigitYearMax = twoDigitYearMax;\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.monthNames = null;\n this.typedMonthPart = \"\";\n this.value = getDate(new Date());\n this.knownParts = \"adHhmMsSEy\";\n this.symbols = {\n \"E\": \"E\",\n \"H\": \"H\",\n \"M\": \"M\",\n \"a\": \"a\",\n \"d\": \"d\",\n \"h\": \"h\",\n \"m\": \"m\",\n \"s\": \"s\",\n \"S\": \"S\",\n \"y\": \"y\"\n };\n validatePackage(packageMetadata);\n this.monthNames = this.allFormatedMonths();\n this.dayPeriods = this.allDayPeriods();\n if (!value) {\n this.value = getDate(new Date());\n const sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (let i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], false);\n }\n }\n else {\n this.value = cloneDate(value);\n }\n }\n hasValue() {\n const pred = (a, p) => a || p.type !== 'literal' && p.type !== 'dayperiod' && this.getExisting(p.pattern[0]);\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n }\n shouldNormalizeCentury() {\n return this.intl.splitDateFormat(this.format).some(part => part.pattern === 'yy');\n }\n getDateObject() {\n for (let i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n }\n getTextAndFormat(format) {\n return this.merge(this.intl.formatDate(this.value, format), this.dateFormatString(this.value, format));\n }\n getExisting(symbol) {\n switch (symbol) {\n case \"y\": return this.year;\n case \"M\":\n case \"L\": return this.month;\n case \"d\": return this.date;\n case \"E\": return this.date && this.month && this.year;\n case \"h\":\n case \"H\": return this.hours;\n case \"m\": return this.minutes;\n case \"s\": return this.seconds;\n case \"S\": return this.milliseconds;\n default: return true;\n }\n }\n setExisting(symbol, value) {\n switch (symbol) {\n case \"y\":\n this.year = value;\n if (value === false) {\n this.value.setFullYear(2000);\n }\n break; //allow 2/29 dates\n case \"M\":\n this.month = value;\n if (value === false) {\n this.value.setMonth(0);\n }\n break; //make sure you can type 31 at day part\n case \"d\":\n this.date = value;\n break;\n case \"h\":\n case \"H\":\n this.hours = value;\n break;\n case \"m\":\n this.minutes = value;\n break;\n case \"s\":\n this.seconds = value;\n break;\n case \"S\":\n this.milliseconds = value;\n break;\n default: return;\n }\n }\n modifyPart(symbol, offset) {\n let newValue = cloneDate(this.value);\n switch (symbol) {\n case \"y\":\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case \"M\":\n newValue = addMonths(this.value, offset);\n break;\n case \"d\":\n case \"E\":\n newValue.setDate(newValue.getDate() + offset);\n break;\n case \"h\":\n case \"H\":\n newValue.setHours(newValue.getHours() + offset);\n break;\n case \"m\":\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case \"s\":\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case \"S\":\n newValue.setMilliseconds(newValue.getMilliseconds() + offset);\n break;\n case \"a\":\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n if (this.shouldNormalizeCentury()) {\n newValue = this.normalizeCentury(newValue);\n }\n if (newValue.getFullYear() > 0) {\n this.setExisting(symbol, true);\n this.value = newValue;\n }\n }\n parsePart(symbol, currentChar, resetSegmentValue) {\n if (!currentChar) {\n this.resetLeadingZero();\n this.setExisting(symbol, false);\n return { value: null, switchToNext: false };\n }\n let baseDate = this.intl.formatDate(this.value, this.format);\n let dateParts = this.dateFormatString(this.value, this.format);\n let baseFormat = dateParts.symbols;\n let replaced = false;\n let prefix = \"\";\n let current = \"\";\n let suffix = \"\";\n for (let i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : \"0\";\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n let currentMaxLength = current.length - 3;\n let parsedDate = null;\n const month = this.matchMonth(currentChar);\n const dayPeriod = this.matchDayPeriod(currentChar, symbol);\n const isZeroCurrentChar = currentChar === '0';\n const leadingZero = (this.leadingZero || {})[symbol] || 0;\n if (isZeroCurrentChar) {\n let valueNumber = parseInt(resetSegmentValue ? currentChar : current + currentChar, 10);\n if (valueNumber === 0 && !this.isAbbrMonth(dateParts.partMap, symbol)) {\n this.incrementLeadingZero(symbol);\n }\n }\n else {\n this.resetLeadingZero();\n }\n for (let i = Math.max(0, currentMaxLength); i <= current.length; i++) {\n let middle = resetSegmentValue ? currentChar : (current.substring(i) + currentChar);\n if (symbol === \"S\" && resetSegmentValue) {\n // The \"S\" parser in intl parses \"1\" as 100ms in order to handle ISOString dates correctly, so to get 1ms, we need to pass \"001\"\n const padding = msPaddingFromFormat(baseFormat);\n middle = padding + middle;\n }\n let middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n const monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n //move to next segment if the part will overflow with next char\n //when start from empty date (01, then 010), padded zeros should be trimmed\n const patternValue = this.partPattern(dateParts.partMap, symbol).pattern;\n const peekDate = this.intl.parseDate(`${prefix}${this.peek(middle, patternValue)}${suffix}`, this.format);\n const patternLength = this.patternLength(patternValue) || patternValue.length;\n const patternSatisfied = (leadingZero + (unpadZero(middle) || currentChar).length) >= patternLength;\n const switchToNext = peekDate === null || patternSatisfied;\n if (this.shouldNormalizeCentury()) {\n parsedDate = this.normalizeCentury(parsedDate);\n }\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: switchToNext };\n }\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: false };\n }\n }\n if (dayPeriod) {\n parsedDate = this.intl.parseDate(prefix + dayPeriod + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n return { value: this.value, switchToNext: true };\n }\n }\n if (isZeroCurrentChar) {\n this.setExisting(symbol, false);\n }\n return { value: null, switchToNext: false };\n }\n resetLeadingZero() {\n const hasLeadingZero = this.leadingZero !== null;\n this.setLeadingZero(null);\n return hasLeadingZero;\n }\n setLeadingZero(leadingZero) {\n this.leadingZero = leadingZero;\n }\n normalizeCentury(date) {\n if (!isPresent(date)) {\n return date;\n }\n const twoDigitYear = cropTwoDigitYear(date);\n const centuryBase = this.getNormalizedCenturyBase(twoDigitYear);\n const normalizedDate = setYears(date, centuryBase + twoDigitYear);\n return normalizedDate;\n }\n incrementLeadingZero(symbol) {\n const leadingZero = this.leadingZero || {};\n leadingZero[symbol] = (leadingZero[symbol] || 0) + 1;\n this.leadingZero = leadingZero;\n }\n isAbbrMonth(parts, symbol) {\n const pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n }\n partPattern(parts, symbol) {\n return parts.filter((part) => part.pattern.indexOf(symbol) !== -1)[0];\n }\n peek(value, pattern) {\n const peekValue = unpadZero(value) + '0';\n return padZero(pattern.length - peekValue.length) + peekValue;\n }\n matchMonth(typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (!this.monthNames) {\n return \"\";\n }\n while (this.typedMonthPart.length > 0) {\n for (let i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n const monthAsNum = parseInt(this.typedMonthPart, 10);\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart /*ensure they exact match*/) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return \"\";\n }\n matchDayPeriod(typedChar, symbol) {\n const lowerChart = String(typedChar).toLowerCase();\n if (symbol === 'a' && this.dayPeriods) {\n if (this.dayPeriods.am.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.am;\n }\n else if (this.dayPeriods.pm.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.pm;\n }\n }\n return '';\n }\n allFormatedMonths() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"month\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n allDayPeriods() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"dayperiod\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n patternLength(pattern) {\n if (pattern[0] === 'y') {\n return 4;\n }\n if (SHORT_PATTERN_LENGTH_REGEXP.test(pattern)) {\n return 2;\n }\n return 0;\n }\n //TODO: REMOVE!\n dateFormatString(date, format) {\n const dateFormatParts = this.intl.splitDateFormat(format);\n const parts = [];\n const partMap = [];\n for (let i = 0; i < dateFormatParts.length; i++) {\n let partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || \"_\");\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n const returnValue = new Mask();\n returnValue.symbols = parts.join(\"\");\n returnValue.partMap = partMap;\n return returnValue;\n }\n merge(text, mask) {\n // Important: right to left.\n let resultText = \"\";\n let resultFormat = \"\";\n let format = mask.symbols;\n for (let r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n const currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return [resultText, resultFormat];\n }\n dateFieldName(part) {\n const formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n }\n getNormalizedCenturyBase(twoDigitYear) {\n return twoDigitYear > this.twoDigitYearMax ?\n PREVIOUS_CENTURY_BASE :\n CURRENT_CENTURY_BASE;\n }\n}\n/**\n * Represents the [Kendo UI DateInput component for Angular]({% slug overview_dateinput %}#toc-basic-usage).\n */\nclass DateInputComponent {\n constructor(cdr, intl, renderer, wrapper, ngZone, injector, localization, pickerService) {\n this.cdr = cdr;\n this.intl = intl;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.ngZone = ngZone;\n this.injector = injector;\n this.localization = localization;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the DateInput and\n * determines whether the component is active\n * ([see example]({% slug disabled_dateinput %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the read-only state of the DateInput\n * ([see example]({% slug readonly_dateinput %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the input element of the DateInput.\n */\n this.title = \"\";\n /**\n * Sets or gets the `tabIndex` property of the DateInput.\n * .\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.role = 'spinbutton';\n /**\n * @hidden\n */\n this.ariaReadOnly = false;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_dateinput %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT$1;\n /**\n * Specifies the hint the DateInput displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Configures the incremental steps of the DateInput.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { year: 10, month: 1, day: 5 };\n * }\n * ```\n */\n this.steps = {};\n /**\n * Determines whether the built-in min or max validators are to be enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * @hidden\n * Based on the min and max values, specifies whether the value will be auto-corrected while typing.\n */\n this.autoCorrect = false;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_dateinput %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * For more information, refer to the article on\n * [spinner buttons]({% slug spinbuttons_dateinput %}).\n */\n this.spinners = false;\n /**\n * @hidden\n */\n this.isPopupOpen = false;\n /**\n * @hidden\n */\n this.hasPopup = false;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueUpdate = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n *\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n *\n */\n this.onBlur = new EventEmitter();\n this.arrow = Arrow;\n this.arrowDirection = Arrow.None;\n this.formatSections = { date: false, time: false };\n this.hasMousedown = false;\n this.focusedPriorToMousedown = false;\n /**\n * @hidden\n */\n this.isDateIncomplete = false;\n this.currentValue = \"\";\n this.currentFormat = \"\";\n this.backspace = false;\n this.resetSegmentValue = true;\n this.minValidator = noop$2;\n this.maxValidator = noop$2;\n this.incompleteValidator = noop$2;\n this._value = null;\n this._active = false;\n this.kendoDate = null;\n this.paste = false;\n this.domEvents = [];\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n if (this.pickerService) {\n this.pickerService.input = this;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the DateInput component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n if (this.autoCorrect && !isInRange(value, this.min, this.max)) {\n return;\n }\n this._value = cloneDate(value);\n this.valueUpdate.emit(cloneDate(value));\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n if (this.spinners && this.spinup && this.spindown) {\n this.setSpinnerFill(this.spinup.nativeElement, newFillMode, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, newFillMode, this.fillMode);\n }\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get inputElement() {\n return this.dateInput ? this.dateInput.nativeElement : null;\n }\n get inputValue() {\n return (this.inputElement || {}).value || '';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n if (!isPresent(this.pickerService)) {\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n }\n get inputFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.inputFormat;\n }\n }\n get displayFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.displayFormat;\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.currentValue || !String(this.currentValue).trim();\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.wrapper.nativeElement));\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifyRange();\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.minValidator = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidator = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n }\n const isEqualToKendoDate = this.kendoDate && isEqual(this.value, this.kendoDate.getDateObject());\n if (changes.format || !isEqualToKendoDate || changes.placeholder) {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.input = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidator(control) || this.maxValidator(control) || this.incompleteValidator(control, this.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue();\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.ngControl = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.kendoDate = this.getKendoDate(value);\n this.value = cloneDate(value);\n this.updateElementValue(this.isActive);\n }\n /**\n * @hidden\n */\n triggerChange() {\n const value = this.kendoDate.getDateObject();\n if (+value !== +this.value) {\n this.value = cloneDate(value);\n this.notify();\n }\n }\n /**\n * @hidden\n */\n notify() {\n this.ngZone.run(() => {\n this.onControlChange(cloneDate(this.value));\n this.valueChange.emit(cloneDate(this.value));\n });\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * Focuses the DateInput component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const input = this.inputElement;\n if (input) {\n input.focus();\n this.selectDateSegment(this.currentFormat[0]);\n }\n }\n /**\n * Blurs the DateInput component.\n */\n blur() {\n const input = this.inputElement;\n if (input) {\n input.blur();\n }\n }\n /**\n * @hidden\n */\n handleButtonClick(offset) {\n this.arrowDirection = Arrow.None;\n this.modifyDateSegmentValue(offset);\n }\n /**\n * @hidden\n */\n modifyDateSegmentValue(offset) {\n const caret = this.caret();\n const symbol = this.currentFormat[caret[0]];\n let step = (this.steps || {})[this.symbolsMap[symbol]] || 1;\n if (symbol === \"S\" && !this.steps.millisecond) {\n const msDigits = millisecondDigitsInFormat(this.inputFormat);\n step = millisecondStepFor(msDigits);\n }\n this.kendoDate.modifyPart(symbol, offset * step);\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.selectDateSegment(symbol);\n this.updateIncompleteValidationStatus();\n }\n /**\n * @hidden\n */\n switchDateSegment(offset) {\n const caret = this.caret();\n if (this.kendoDate.resetLeadingZero()) {\n this.updateElementValue(this.isActive);\n }\n if (caret[0] < caret[1] && this.currentFormat[caret[0]] !== this.currentFormat[caret[1] - 1]) {\n this.selectNearestSegment(offset > 0 ? caret[0] : caret[1] - 1);\n this.resetSegmentValue = true;\n return true;\n }\n const previousFormatSymbol = this.currentFormat[caret[0]];\n let a = caret[0] + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== \"_\") {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === \"_\") {\n //there is not known symbol found\n return false;\n }\n let b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== caret[0] || a + 1 !== caret[1])) {\n this.caret(b + 1, a + 1);\n this.resetSegmentValue = true;\n return true;\n }\n else if (a < b && (a !== caret[0] || b !== caret[1])) {\n this.caret(a, b);\n this.resetSegmentValue = true;\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n selectDateSegment(symbol) {\n let begin = -1;\n let end = 0;\n for (let i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (begin === -1) {\n begin = i;\n }\n }\n }\n if (begin < 0) {\n begin = 0;\n }\n this.caret(0, 0);\n this.caret(begin, end);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.hasMousedown = false;\n if (this.isActive) {\n const selectionPresent = this.inputElement.selectionStart !== this.inputElement.selectionEnd;\n const placeholderToggled = isPresent(this.placeholder) && !this.kendoDate.hasValue() && !this.focusedPriorToMousedown;\n // focus first segment if the user hasn't selected something during mousedown and if the placeholder was just toggled\n const selectFirstSegment = !selectionPresent && placeholderToggled;\n const index = selectFirstSegment ? 0 : this.caret()[0];\n this.selectNearestSegment(index);\n }\n }\n /**\n * @hidden\n */\n handleDragAndDrop(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleMousedown() {\n this.hasMousedown = true;\n this.focusedPriorToMousedown = this.isActive;\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n this.isActive = true;\n this.updateElementValue();\n if (!this.hasMousedown) {\n this.caret(0, this.inputValue.length);\n }\n this.hasMousedown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.emitFocus(args);\n });\n }\n else {\n this.emitFocus(args);\n }\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n this.isActive = false;\n this.resetSegmentValue = true;\n this.kendoDate.resetLeadingZero();\n this.updateElementValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.ngControl)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n }\n }\n getKendoDate(value) {\n const { leadingZero } = (this.kendoDate || {}) || null;\n const kendoDate = new KendoDate(this.intl, this.formatPlaceholder, this.inputFormat, value, this.twoDigitYearMax);\n kendoDate.setLeadingZero(this.isActive ? leadingZero : null);\n return kendoDate;\n }\n dateSymbolMap() {\n const reducer = (map, part) => {\n map[part.pattern[0]] = part.type;\n return map;\n };\n return this.intl.splitDateFormat(this.inputFormat).reduce(reducer, {});\n }\n updateElementValue(isActive) {\n const start = this.caret()[0]; //XXX: get caret position before input is updated\n const format = this.isActive ? this.inputFormat : this.displayFormat;\n const texts = this.kendoDate.getTextAndFormat(format);\n const showPlaceholder = !this.isActive && isPresent(this.placeholder) && !this.kendoDate.hasValue();\n const input = this.inputElement;\n this.currentFormat = texts[1];\n this.currentValue = !showPlaceholder ? texts[0] : '';\n this.renderer.setProperty(input, \"value\", this.currentValue);\n if (input.placeholder !== this.placeholder) {\n this.renderer.setProperty(input, \"placeholder\", this.placeholder);\n }\n if (isActive) {\n this.selectNearestSegment(start);\n }\n }\n caret(start, end = start) {\n const isPosition = start !== undefined;\n let returnValue = [start, start];\n const element = this.inputElement;\n if (isPosition && (this.disabled || this.readonly)) {\n return undefined;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n if (isDocumentAvailable() && document.activeElement !== element) {\n element.focus();\n }\n element.setSelectionRange(start, end);\n }\n returnValue = [element.selectionStart, element.selectionEnd];\n }\n }\n catch (e) {\n returnValue = [];\n }\n return returnValue;\n }\n selectNearestSegment(index) {\n // Finds the nearest (in both directions) known part.\n for (let i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== \"_\") {\n this.selectDateSegment(this.currentFormat[i]);\n return;\n }\n if (j >= 0 && this.currentFormat[j] !== \"_\") {\n this.selectDateSegment(this.currentFormat[j]);\n return;\n }\n }\n }\n verifyRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$1} and ${MAX_DOC_LINK$1}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$3} for possible resolution.`);\n }\n }\n putDateInRange() {\n const currentDate = this.kendoDate.getDateObject();\n const candidate = dateInRange(currentDate, this.min, this.max);\n if (this.autoCorrect && !isEqual(currentDate, candidate)) {\n this.kendoDate = this.getKendoDate(candidate);\n }\n }\n updateFormatSections() {\n this.formatSections = this.intl.splitDateFormat(this.inputFormat)\n .reduce(({ date, time }, p) => {\n return {\n date: date || DATE_PART_REGEXP.test(p.type),\n time: time || TIME_PART_REGEXP.test(p.type)\n };\n }, { date: false, time: false });\n }\n intlChange() {\n this.updateFormatSections();\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n updateOnPaste() {\n let value = this.intl.parseDate(this.inputValue, this.inputFormat) || this.value;\n if (isPresent(value) && this.kendoDate.shouldNormalizeCentury()) {\n value = this.kendoDate.normalizeCentury(value);\n }\n const notify = +value !== +this.value;\n this.writeValue(value);\n if (notify) {\n this.notify();\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n const mousewheelHandler = this.handleMouseWheel.bind(this);\n this.domEvents.push(this.renderer.listen(element, 'DOMMouseScroll', mousewheelHandler), this.renderer.listen(element, 'mousewheel', mousewheelHandler), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)), this.renderer.listen(element, 'paste', this.handlePaste.bind(this)), this.renderer.listen(element, 'input', this.handleInput.bind(this)));\n }\n handleMouseWheel(event) {\n if (this.disabled || this.readonly || !this.isActive) {\n return;\n }\n event = window.event || event;\n if (event.shiftKey) {\n this.switchDateSegment((event.wheelDelta || -event.detail) > 0 ? -1 : 1);\n }\n else {\n this.modifyDateSegmentValue((event.wheelDelta || -event.detail) > 0 ? 1 : -1);\n }\n event.returnValue = false;\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n handlePaste() {\n this.paste = true;\n }\n handleKeydown(event) {\n if (this.disabled || this.readonly || event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.keyCode === Keys.Tab) {\n const moved = this.switchDateSegment(event.shiftKey ? -1 : 1);\n if (moved) {\n event.preventDefault();\n }\n return;\n }\n if (event.keyCode === Keys.Backspace) {\n this.backspace = true;\n return;\n }\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.modifyDateSegmentValue(-1);\n break;\n case Keys.ArrowUp:\n this.modifyDateSegmentValue(1);\n break;\n case Keys.ArrowRight:\n this.switchDateSegment(1);\n break;\n case Keys.ArrowLeft:\n this.switchDateSegment(-1);\n break;\n case Keys.Home:\n this.selectNearestSegment(0);\n break;\n case Keys.End:\n this.selectNearestSegment(this.inputValue.length);\n break;\n default:\n return; //skip the preventDefault if we didn't handled the keyCode\n }\n event.preventDefault();\n }\n handleInput() {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.paste) {\n this.updateOnPaste();\n this.paste = false;\n return;\n }\n const diff = approximateStringMatching(this.currentValue, this.currentFormat, this.inputValue, this.caret()[0]);\n const navigationOnly = (diff.length === 1 && diff[0][1] === \"_\");\n let switchPart = false;\n if (!navigationOnly) {\n let parsedPart;\n for (let i = 0; i < diff.length; i++) {\n parsedPart = this.kendoDate.parsePart(diff[i][0], diff[i][1], this.resetSegmentValue);\n switchPart = parsedPart.switchToNext;\n }\n const candidate = this.kendoDate.getDateObject();\n if (this.value && candidate && !this.formatSections.date) {\n this.kendoDate = this.getKendoDate(setTime(this.value, candidate));\n }\n }\n this.resetSegmentValue = false;\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.updateIncompleteValidationStatus();\n if (diff.length && diff[0][0] !== \"_\") {\n this.selectDateSegment(diff[0][0]);\n }\n if (switchPart || navigationOnly) {\n this.switchDateSegment(1);\n }\n if (this.backspace) {\n this.switchDateSegment(-1);\n }\n this.backspace = false;\n }\n emitFocus(args) {\n this.onFocus.emit();\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n emitBlur(args) {\n this.onBlur.emit();\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n updateIncompleteValidationStatus() {\n const previousValue = this.isDateIncomplete;\n this.isDateIncomplete = this.kendoDate.hasValue() && this.value === null;\n if (previousValue === this.isDateIncomplete || !this.incompleteDateValidation) {\n return;\n }\n if (isPresent(this.ngControl) && !isPresent(this.pickerService)) {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n else if (isPresent(this.pickerService)) {\n this.pickerService.dateCompletenessChange.emit();\n }\n }\n setSpinnerFill(spinner, fill, oldFill) {\n if (oldFill !== 'none') {\n this.renderer.removeClass(spinner, `k-button-${oldFill}`);\n this.renderer.removeClass(spinner, `k-button-${oldFill}-base`);\n }\n this.renderer.addClass(spinner, `k-button-${fill}`);\n this.renderer.addClass(spinner, `k-button-${fill}-base`);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n if (this.spinners && this.fillMode !== 'none') {\n this.setSpinnerFill(this.spinup.nativeElement, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, this.fillMode);\n }\n }\n}\nDateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1$1.LocalizationService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputComponent, selector: \"kendo-dateinput\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", tabindex: \"tabindex\", role: \"role\", ariaReadOnly: \"ariaReadOnly\", tabIndex: \"tabIndex\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", max: \"max\", min: \"min\", rangeValidation: \"rangeValidation\", autoCorrect: \"autoCorrect\", incompleteDateValidation: \"incompleteDateValidation\", twoDigitYearMax: \"twoDigitYearMax\", value: \"value\", spinners: \"spinners\", isPopupOpen: \"isPopupOpen\", hasPopup: \"hasPopup\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", valueUpdate: \"valueUpdate\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-input\": \"this.wrapperClass\", \"class.k-dateinput\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ], viewQueries: [{ propertyName: \"dateInput\", first: true, predicate: [\"dateInput\"], descendants: true, static: true }, { propertyName: \"spinup\", first: true, predicate: [\"spinup\"], descendants: true }, { propertyName: \"spindown\", first: true, predicate: [\"spindown\"], descendants: true }], exportAs: [\"kendo-dateinput\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-dateinput',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ],\n selector: 'kendo-dateinput',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1$1.LocalizationService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], role: [{\n type: Input\n }], ariaReadOnly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], value: [{\n type: Input\n }], spinners: [{\n type: Input\n }], isPopupOpen: [{\n type: Input\n }], hasPopup: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueUpdate: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], dateInput: [{\n type: ViewChild,\n args: ['dateInput', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-dateinput']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], spinup: [{\n type: ViewChild,\n args: ['spinup', { static: false }]\n }], spindown: [{\n type: ViewChild,\n args: ['spindown', { static: false }]\n }] } });\n\n/**\n * A preventable event instance which is triggered by the `open` and `close` events.\n */\nclass PreventableEvent {\n /** @hidden */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dateinputs-touch-enabled');\n\n/**\n * @hidden\n */\nconst disabledDatesValidator = (isDateDisabled) => {\n return (control) => {\n if (!isDateDisabled || !control.value) {\n return null;\n }\n const error = {\n disabledDate: true\n };\n return isDateDisabled(control.value) ? error : null;\n };\n};\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass CalendarCustomMessagesComponent extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-calendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass DatePickerMessages extends ComponentMessages {\n}\nDatePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDatePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerMessages, selector: \"kendo-datepicker-messages-base\", inputs: { today: \"today\", toggle: \"toggle\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datepicker-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], toggle: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DatePickerLocalizedMessagesDirective extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDatePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDatePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDatePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-min';\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-max';\nconst VALUE_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/datepicker/#toc-using-with-json';\nconst DEFAULT_FORMAT = 'd';\nconst TWO_DIGIT_YEAR_MAX$1 = 68;\n/**\n * Represents the [Kendo UI DatePicker component for Angular]({% slug overview_datepicker %}#toc-basic-usage).\n */\nclass DatePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, disabledDatesService, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.disabledDatesService = disabledDatesService;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug calendar_type_datepicker %}#toc-active-view)).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Sets or gets the `disabled` property of the DatePicker and determines whether the component is active\n * ([see example]({% slug disabled_datepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DatePicker\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-datepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DatePicker input field\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar is displayed.\n * ([see example]({% slug sidebar_datepicker %})).\n */\n this.navigation = true;\n /**\n * Specifies the smallest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `min` value is `1900-1-1`.\n */\n this.min = cloneDate(MIN_DATE);\n /**\n * Specifies the biggest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `max` value is `2099-12-31`.\n */\n this.max = cloneDate(MAX_DATE);\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Specifies the focused date of the Calendar component\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.focusedDate = null;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_datepicker %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$1;\n /**\n * Specifies the hint the DatePicker displays when its value is `null`.\n * ([more information and exaples]({% slug placeholders_datepicker %})).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Sets or gets the `tabindex` property of the DatePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the DatePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar\n * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Fires each time the user selects a new value\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this._popupSettings = { animate: true };\n this._show = false;\n this._value = null;\n this._active = false;\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleSameSelection.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * @hidden\n */\n set cellTemplateRef(template) {\n this.cellTemplate = template;\n }\n /**\n * @hidden\n */\n set monthCellTemplateRef(template) {\n this.monthCellTemplate = template;\n }\n /**\n * @hidden\n */\n set yearCellTemplateRef(template) {\n this.yearCellTemplate = template;\n }\n /**\n * @hidden\n */\n set decadeCellTemplateRef(template) {\n this.decadeCellTemplate = template;\n }\n /**\n * @hidden\n */\n set centuryCellTemplateRef(template) {\n this.centuryCellTemplate = template;\n }\n /**\n * @hidden\n */\n set weekNumberTemplateRef(template) {\n this.weekNumberTemplate = template;\n }\n /**\n * @hidden\n */\n set headerTitleTemplateRef(template) {\n this.headerTitleTemplate = template;\n }\n /**\n * @hidden\n */\n set navigationItemTemplateRef(template) {\n this.navigationItemTemplate = template;\n }\n /**\n * Configures the popup options of the DatePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the value of the DatePicker component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the DatePicker that will be disabled\n * ([see example]({% slug disabled_dates_datepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifySettings();\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the DatePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the DatePicker component.\n */\n blur() {\n (this.calendar || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicitly call the handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleChange(value) {\n this.cdr.markForCheck();\n this.focusInput();\n this.value = value;\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n this.handleChange(this.input.formatSections.time ? value : this.mergeTime(value));\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-calendar-container',\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get input() {\n return this.pickerService.input;\n }\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(value, this.value) : value;\n }\n /**\n * @hidden\n */\n handleKeydown(e) {\n const { altKey, shiftKey, keyCode, target } = e;\n if (keyCode === Keys.Escape) {\n this.show = false;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n }\n if (keyCode === Keys.Tab && this.show && this.calendar.isActive && isTabExitingCalendar(this.calendarType, target, shiftKey)) {\n this.input.focus();\n this.show = false;\n }\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this._show) {\n return;\n }\n this._show = show;\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n this.subscription.unsubscribe();\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.calendar) {\n this.cdr.detectChanges();\n }\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$2} for possible resolution.`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.calendar && this.calendar.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.cdr.detectChanges();\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleSameSelection() {\n if (this.show) {\n this.focusInput();\n this.show = false;\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: DisabledDatesService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerComponent, selector: \"kendo-datepicker\", inputs: { cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"], focusableId: \"focusableId\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", popupSettings: \"popupSettings\", navigation: \"navigation\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", focusedDate: \"focusedDate\", value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", title: \"title\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", weekNumber: \"weekNumber\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-datepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-datepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }], directives: [{ type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-datepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ],\n selector: 'kendo-datepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: DisabledDatesService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], focusableId: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], navigation: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-datepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n\n/**\n * @hidden\n */\nconst timeRangeValidator = (min, max) => {\n return (control) => {\n if (!min || !max || !control.value) {\n return null;\n }\n const err = {\n timeRangeError: {\n maxValue: max,\n minValue: min,\n value: control.value\n }\n };\n return isInTimeRange(control.value, min, max) ? null : err;\n };\n};\n\nconst HOURS_IN_DAY = 24;\nconst clampToRange$3 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$3 = clampToRange$3(HOURS_IN_DAY);\nconst stepper$3 = (start, step) => (idx) => clamp$3(start + (idx * step));\nconst distanceFromMin$3 = (value, min) => clamp$3(HOURS_IN_DAY + value - min);\nconst limit$3 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours$1(barrier, borderValue);\n};\nconst limitDown$3 = limit$3(0);\nconst limitUp$3 = limit$3(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nclass HoursService {\n constructor(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setHours$1(value, candidate.getHours());\n }\n configure(settings) {\n const { boundRange = this.boundRange, insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (hour) => {\n const date = setHours$1(MIDNIGHT_DATE, hour);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getHour = stepper$3(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getHour(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return this.boundRange ? [limitDown$3(min, value), limitUp$3(max, value)] : [min, max];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$3(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setHours$1(this.max, this.lastHour(value)));\n }\n divideByStep(value) {\n return distanceFromMin$3(value.getHours(), this.min.getHours()) / this.step;\n }\n lastHour(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getHours(), max.getHours()];\n }\n}\nHoursService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nHoursService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MINUTES_IN_HOUR = 60;\nconst clampToRange$2 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$2 = clampToRange$2(MINUTES_IN_HOUR);\nconst stepper$2 = (start, step) => (idx) => clamp$2(start + (idx * step));\nconst distanceFromMin$2 = (value, min) => clamp$2(MINUTES_IN_HOUR + value - min);\nconst limit$2 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n};\nconst limitDown$2 = limit$2(0);\nconst limitUp$2 = limit$2(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass MinutesService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (minute) => {\n const date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMinute = stepper$2(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMinute(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$2(min, value), limitUp$2(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$2(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n }\n divideByStep(value) {\n return distanceFromMin$2(value.getMinutes(), this.min.getMinutes()) / this.step;\n }\n lastMinute(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMinutes(), max.getMinutes()];\n }\n}\nMinutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMinutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst SECONDS_IN_HOUR = 60;\nconst clampToRange$1 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$1 = clampToRange$1(SECONDS_IN_HOUR);\nconst stepper$1 = (start, step) => (idx) => clamp$1(start + (idx * step));\nconst distanceFromMin$1 = (value, min) => clamp$1(SECONDS_IN_HOUR + value - min);\nconst limit$1 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours() && barrier.getMinutes() === value.getMinutes();\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n};\nconst limitDown$1 = limit$1(0);\nconst limitUp$1 = limit$1(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass SecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (second) => {\n const date = setSeconds(MIDNIGHT_DATE, second);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getSecond = stepper$1(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getSecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$1(min, value), limitUp$1(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin$1(value.getSeconds(), this.min.getSeconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$1(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n }\n lastSecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getSeconds(), max.getSeconds()];\n }\n}\nSecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nSecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MILLISECONDS_IN_SECOND = 1000;\nconst clampToRange = (rangeValue) => (value) => value % rangeValue;\nconst clamp = clampToRange(MILLISECONDS_IN_SECOND);\nconst stepper = (start, step) => (idx) => clamp(start + (idx * step));\nconst distanceFromMin = (value, min) => clamp(MILLISECONDS_IN_SECOND + value - min);\nconst limit = (borderValue) => (barrier, value) => {\n const useBarrier = !value ||\n (barrier.getHours() === value.getHours() &&\n barrier.getMinutes() === value.getMinutes() &&\n barrier.getSeconds() === value.getSeconds());\n return useBarrier ? barrier : setMilliseconds(barrier, borderValue);\n};\nconst limitDown = limit(0);\nconst limitUp = limit(MILLISECONDS_IN_SECOND - 1);\n/**\n * @hidden\n */\nclass MillisecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMilliseconds(value, candidate.getMilliseconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (millisecond) => {\n const date = setMilliseconds(MIDNIGHT_DATE, millisecond);\n return {\n text: this.intl.formatDate(date, \"SSS\"),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMillisecond = stepper(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMillisecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMillisecond(value) === value.getMilliseconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin(value.getMilliseconds(), this.min.getMilliseconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMillisecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMilliseconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMilliseconds(this.max, this.lastMillisecond(value)));\n }\n lastMillisecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMilliseconds(), max.getMilliseconds()];\n }\n}\nMillisecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMillisecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst setHours = (date, hours) => {\n const clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nconst isAM = (value) => value !== null && value < 12;\nconst isPM = (value) => value !== null && (!value || value > 11);\nconst inRange = (value, min, max) => ((!min && !max) || (value >= min && value <= max));\nconst inReverseRange = (value, min, max) => ((!min && !max) || value >= min || value <= max);\n/**\n * @hidden\n */\nclass DayPeriodService {\n constructor(intl) {\n this.intl = intl;\n }\n /**\n * @hidden\n */\n apply(value, candidate) {\n const hour = value.getHours();\n const hourAM = isAM(hour);\n const candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n const [min, max = 24] = this.normalizedRange();\n const result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n }\n /**\n * @hidden\n */\n configure(settings) {\n const { min = this.min, max = this.max, part = this.part } = settings;\n this.min = min;\n this.max = max;\n this.part = part;\n }\n /**\n * @hidden\n */\n data(_) {\n const names = this.part.names;\n if (!names) {\n return [];\n }\n const data = [];\n const [min, max] = this.normalizedRange();\n const dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n }\n /**\n * @hidden\n */\n isRangeChanged(_, __) {\n return false;\n }\n /**\n * @hidden\n */\n limitRange(min, max, _) {\n return [min, max];\n }\n /**\n * @hidden\n */\n total() {\n const [min, max] = this.normalizedRange();\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n }\n /**\n * @hidden\n */\n selectedIndex(value) {\n if (!this.valueInList(value)) {\n return -1;\n }\n const index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n }\n /**\n * @hidden\n */\n valueInList(value) {\n const reverse = this.min.getHours() !== this.normalizedRange()[0];\n const isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n }\n normalizedRange() {\n const minHour = this.min.getHours();\n const maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n }\n}\nDayPeriodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nDayPeriodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst div = domContainerFactory('div');\nconst ul = domContainerFactory('ul');\nconst li = domContainerFactory('li');\nconst span = domContainerFactory('span');\nconst listTitle = () => span('hour', 'k-title k-timeselector-title');\nconst listItem = () => li('02', 'k-item');\nconst list = () => ul([listItem()], 'k-reset');\nconst scrollable = () => (div([list()], 'k-time-container k-flex k-content k-calendar-content k-scrollable'));\nconst timeListWrapper = () => {\n if (!isDocumentAvailable()) {\n return null;\n }\n return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n};\nconst TIMELIST_WRAPPER = timeListWrapper();\n/**\n * @hidden\n */\nclass TimePickerDOMService {\n ensureHeights() {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n const listContainer = container && container.querySelector('.k-time-list-container');\n const hostContainer = listContainer || document.body;\n const wrapper = hostContainer.appendChild(TIMELIST_WRAPPER);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').getBoundingClientRect().height;\n this.itemHeight = wrapper.querySelector('li').getBoundingClientRect().height;\n hostContainer.removeChild(wrapper);\n }\n isActive(element) {\n if (!isDocumentAvailable() || !element) {\n return false;\n }\n return (element.nativeElement || element) === document.activeElement;\n }\n}\nTimePickerDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimePickerDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst SNAP_THRESHOLD = 0.05; //% of the item height\nconst SCROLL_THRESHOLD = 2; //< 2px threshold\nconst nil = () => (null);\nconst getters = {\n 35: (data, _) => data[data.length - 1],\n 36: (data, _) => data[0],\n 38: (data, index) => data[index - 1],\n 40: (data, index) => data[index + 1]\n};\nconst services = {\n [TIME_PART.dayperiod]: DayPeriodService,\n [TIME_PART.hour]: HoursService,\n [TIME_PART.minute]: MinutesService,\n [TIME_PART.second]: SecondsService,\n [TIME_PART.millisecond]: MillisecondsService\n};\n/**\n * @hidden\n */\nclass TimeListComponent {\n constructor(element, injector, dom, renderer, zone) {\n this.element = element;\n this.injector = injector;\n this.dom = dom;\n this.renderer = renderer;\n this.zone = zone;\n this.min = cloneDate(MIDNIGHT_DATE);\n this.max = cloneDate(MAX_TIME);\n this.step = 1;\n this.disabled = false;\n this.valueChange = new EventEmitter();\n this.componentClass = true;\n this.animateToIndex = true;\n this.isActive = false;\n this.skip = 0;\n this.total = 60;\n this.data = [];\n this.indexToScroll = -1;\n this.domEvents = [];\n }\n get tabIndex() {\n return this.disabled ? undefined : 0;\n }\n ngOnChanges(changes) {\n if (changes.part) {\n this.service = this.injector.get(services[this.part.type]);\n this.service.configure(this.serviceSettings());\n }\n const value = this.value;\n const valueChanges = changes.value || {};\n const [min, max] = this.service.limitRange(this.min, this.max, value);\n if (this.service.isRangeChanged(min, max) || changes.min || changes.max || changes.step) {\n this.data = [];\n this.service.configure(this.serviceSettings({ min, max }));\n }\n // Skip the rendering of the list whenever possible\n if (!this.data.length || this.hasMissingValue(valueChanges)) {\n this.animateToIndex = false;\n this.data = this.service.data(value);\n }\n this.animateToIndex = this.animateToIndex && this.textHasChanged(valueChanges);\n this.total = this.service.total(value);\n this.indexToScroll = this.selectedIndex(value);\n }\n ngOnInit() {\n this.animateToIndex = true;\n this.dom.ensureHeights();\n this.itemHeight = this.dom.itemHeight;\n this.listHeight = this.dom.timeListHeight;\n this.topOffset = (this.listHeight - this.itemHeight) / 2;\n this.bottomOffset = this.listHeight - this.itemHeight;\n this.topThreshold = this.itemHeight * SNAP_THRESHOLD;\n this.bottomThreshold = this.itemHeight * (1 - SNAP_THRESHOLD);\n const translate = `translateY(${this.topOffset}px)`;\n this.style = { transform: translate, '-ms-transform': translate };\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnDestroy() {\n this.scrollSubscription.unsubscribe();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n ngAfterViewInit() {\n this.scrollOnce((index) => this.virtualization.scrollToIndex(index));\n }\n ngAfterViewChecked() {\n this.scrollOnce((index) => {\n const action = this.animateToIndex ? 'animateToIndex' : 'scrollToIndex';\n this.virtualization[action](index);\n this.animateToIndex = true;\n });\n }\n handleChange(dataItem) {\n const candidate = this.service.apply(this.value, dataItem.value);\n if (this.value.getTime() === candidate.getTime()) {\n return;\n }\n this.indexToScroll = this.data.indexOf(dataItem);\n this.value = candidate;\n this.valueChange.emit(candidate);\n }\n handleItemClick(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-timelist-item-index'), this.element.nativeElement);\n if (item) {\n const index = item.getAttribute('data-timelist-item-index');\n this.handleChange(this.data[index]);\n }\n }\n /**\n * Focuses the host element of the TimeList.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the TimeList component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n itemOffset(scrollTop) {\n const valueIndex = this.selectedIndex(this.value);\n const activeIndex = this.virtualization.activeIndex();\n const offset = this.virtualization.itemOffset(activeIndex);\n const distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n const scrollUp = valueIndex > activeIndex;\n const moveToNext = scrollUp && distance >= this.bottomThreshold || !scrollUp && distance > this.topThreshold;\n return moveToNext ? this.virtualization.itemOffset(activeIndex + 1) : offset;\n }\n hasMissingValue({ previousValue, currentValue }) {\n const isPreviousMissing = previousValue && !this.service.valueInList(previousValue);\n const isCurrentMissing = currentValue && !this.service.valueInList(currentValue);\n return isPreviousMissing || isCurrentMissing;\n }\n scrollOnce(action) {\n if (this.indexToScroll !== -1) {\n action(this.indexToScroll);\n this.indexToScroll = -1;\n }\n }\n serviceSettings(settings) {\n const defaults = {\n boundRange: false,\n insertUndividedMax: false,\n max: this.max,\n min: this.min,\n part: this.part,\n step: this.step\n };\n const result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour';\n return result;\n }\n selectedIndex(value) {\n if (!value) {\n return -1;\n }\n return this.service.selectedIndex(value);\n }\n textHasChanged({ previousValue, currentValue }) {\n if (!previousValue || !currentValue) {\n return false;\n }\n const oldData = this.data[this.selectedIndex(previousValue)];\n const newData = this.data[this.selectedIndex(currentValue)];\n return oldData && newData && oldData.text !== newData.text;\n }\n handleKeyDown(e) {\n const getter = getters[e.keyCode] || nil;\n const dataItem = getter(this.data, this.service.selectedIndex(this.value));\n if (dataItem) {\n this.handleChange(dataItem);\n e.preventDefault();\n }\n }\n bindEvents() {\n this.scrollSubscription = this.virtualization\n .scroll$()\n .pipe(debounceTime(100), map((e) => e.target.scrollTop), map((top) => this.itemOffset(top)), map((itemOffset) => this.virtualization.itemIndex(itemOffset)))\n .subscribe(index => {\n this.virtualization.scrollToIndex(index);\n this.handleChange(this.data[index]);\n });\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', () => !this.isActive && this.focus()), this.renderer.listen(element, 'click', () => this.focus()), this.renderer.listen(element, 'blur', () => this.isActive = false), this.renderer.listen(element, 'focus', () => this.isActive = true), this.renderer.listen(element, 'keydown', this.handleKeyDown.bind(this)));\n }\n}\nTimeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: TimePickerDOMService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTimeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeListComponent, selector: \"kendo-timelist\", inputs: { min: \"min\", max: \"max\", part: \"part\", step: \"step\", disabled: \"disabled\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"class.k-time-list\": \"this.componentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-timelist',\n template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: TimePickerDOMService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { min: [{\n type: Input\n }], max: [{\n type: Input\n }], part: [{\n type: Input\n }], step: [{\n type: Input\n }], disabled: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: true }]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], componentClass: [{\n type: HostBinding,\n args: [\"class.k-time-list\"]\n }] } });\n\nconst isEqualTillMinute = (value, min) => value.getHours() === min.getHours() && value.getMinutes() === min.getMinutes();\nconst isEqualTillSecond = (value, min) => isEqualTillMinute(value, min) && value.getSeconds() === min.getSeconds();\nconst isEqualTillMillisecond = (value, min) => isEqualTillSecond(value, min) && value.getMilliseconds() === min.getMilliseconds();\nconst defaultGetters = [\n {\n type: TIME_PART.hour,\n getter: (value) => value.getHours(),\n minGetter: (_, min) => min.getHours()\n }, {\n type: TIME_PART.minute,\n getter: (value) => value.getMinutes(),\n minGetter: (value, min) => isEqualTillMinute(value, min) ? min.getMinutes() : 0\n }, {\n type: TIME_PART.second,\n getter: (value) => value.getSeconds(),\n minGetter: (value, min) => isEqualTillSecond(value, min) ? min.getSeconds() : 0\n }, {\n type: TIME_PART.millisecond,\n getter: (value) => value.getMilliseconds(),\n minGetter: (value, min) => isEqualTillMillisecond(value, min) ? min.getMilliseconds() : 0\n }\n];\nconst left = getter => (origin, _) => getter(origin);\nconst right = getter => (_, candidate) => getter(candidate);\nconst convertToObject = (parts) => parts.reduce((obj, p) => { obj[p.type] = p.type; return obj; }, {});\nconst getterByPart = parts => g => parts[g.type] ? right(g.getter) : left(g.getter);\nconst gettersFactory = getters => parts => (getters.map(getterByPart(convertToObject(parts))));\nconst snapValue = (getter, minGetter, step) => (date, min) => {\n const value = getter(date);\n const minValue = minGetter(date, min);\n const rest = value - minValue;\n if (rest < 0) {\n return minValue;\n }\n const mod = rest % step;\n return value - mod + (mod > step / 2 ? step : 0);\n};\nconst snappersFactory = (getters) => steps => (getters.map(g => {\n const step = steps[g.type];\n return step ? snapValue(g.getter, g.minGetter, step) : g.getter;\n}));\n/**\n * @hidden\n */\nconst generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst valueMerger = getters => (origin, candidate) => {\n origin.setHours(...getters.map(g => g(origin, candidate)));\n return origin;\n};\n/**\n * @hidden\n */\nconst snapTime = snappers => (candidate, min) => {\n const date = cloneDate(candidate);\n date.setHours(...snappers.map(s => s(date, min)));\n return date;\n};\n\n/**\n * @hidden\n */\nclass TimePickerMessages extends ComponentMessages {\n}\nTimePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTimePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerMessages, selector: \"kendo-timepicker-messages-base\", inputs: { accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", now: \"now\", nowLabel: \"nowLabel\", toggle: \"toggle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-timepicker-messages-base'\n }]\n }], propDecorators: { accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], toggle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TimeSelectorLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimeSelectorLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimeSelectorLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimeSelectorLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst listReducer = (state, list, idx, all) => {\n if (state.length || !list.isActive) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n};\nvar Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n *\n * Represents the Kendo UI TimeSelector component for Angular.\n */\nclass TimeSelectorComponent {\n constructor(localization, cdr, element, intl, dom, zone, renderer, pickerService) {\n this.localization = localization;\n this.cdr = cdr;\n this.element = element;\n this.intl = intl;\n this.dom = dom;\n this.zone = zone;\n this.renderer = renderer;\n this.pickerService = pickerService;\n /**\n * Specifies the time format used to display the time list columns.\n */\n this.format = 't';\n /**\n * Specifies the smallest valid time value.\n */\n this.min = cloneDate(MIN_TIME);\n /**\n * Specifies the biggest valid time value.\n */\n this.max = cloneDate(MAX_TIME);\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Set** button in the popup.\n */\n this.setButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `disabled` property of the TimeSelector and determines whether the component is active.\n */\n this.disabled = false;\n /**\n * Specifies the value of the TimeSelector component.\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user cancels the selected value.\n */\n this.valueReject = new EventEmitter();\n this.isActive = false;\n this.showNowButton = true;\n this._activeListIndex = -1;\n this._steps = {};\n this.domEvents = [];\n if (this.pickerService) {\n this.pickerService.timeSelector = this;\n }\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * Configures the incremental steps of the TimeSelector.\n *\n * The available options are:\n * - `hour: Number`—Controls the incremental step of the hour value.\n * - `minute: Number`—Controls the incremental step of the minute value.\n * - `second: Number`—Controls the incremental step of the second value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15 };\n * }\n * ```\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n set current(value) {\n this._current = timeInRange(this.snapTime(cloneDate(value || MIDNIGHT_DATE), this.min), this.min, this.max);\n if (!NgZone.isInAngularZone()) {\n this.cdr.detectChanges();\n }\n }\n get current() {\n return this._current;\n }\n get activeListIndex() {\n return this._activeListIndex;\n }\n set activeListIndex(value) {\n this._activeListIndex = value;\n if (!this.timeListWrappers || !this.timeListWrappers.length) {\n return;\n }\n this.timeListWrappers.forEach(listWrapper => {\n this.renderer.removeClass(listWrapper.nativeElement, 'k-state-focused');\n });\n if (value >= 0) {\n const listIndex = this.listIndex(value);\n const focusedWrapper = this.timeListWrappers.toArray()[listIndex];\n if (focusedWrapper) {\n this.renderer.addClass(focusedWrapper.nativeElement, 'k-state-focused');\n }\n }\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n if (this.localization) {\n this.subscriptions.add(this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck()));\n }\n this.renderer.addClass(this.element.nativeElement, 'k-timeselector');\n this.dom.calculateHeights(this.element.nativeElement);\n this.init();\n this.bindEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(_) {\n this.init();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.timeSelector = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * Focuses the TimeSelector component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.focus();\n }\n /**\n * Blurs the TimeSelector component.\n */\n blur() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.blur();\n }\n /**\n * @hidden\n */\n handleAccept() {\n this.handleChange(this.mergeValue(cloneDate(this.value || getDate(getNow())), this.current));\n }\n /**\n * @hidden\n */\n handleNow() {\n this.current = getNow();\n this.handleChange(this.current);\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleReject() {\n this.current = this.value;\n this.valueReject.emit();\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.emitFocus(args);\n }\n /**\n * @hidden\n */\n handleListFocus(args) {\n const index = parseInt(args.target.getAttribute('data-timelist-index'), 10);\n this.activeListIndex = index;\n this.handleFocus(args);\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n const currentTarget = currentFocusTarget(args);\n if (currentTarget && this.containsElement(currentTarget)) {\n return;\n }\n this.activeListIndex = -1;\n this.isActive = false;\n this.emitBlur(args);\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n partStep(part) {\n return this.steps[part.type] || 1;\n }\n init(changes) {\n if (!changes || hasChange(changes, 'format')) {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n }\n if (!changes || hasChange(changes, 'steps')) {\n this.snapTime = snapTime(generateSnappers(this.steps));\n }\n if (!changes || hasChange(changes, 'value')) {\n this.current = this.value;\n }\n this.showNowButton = !this.hasSteps() && this.nowButton && isInTimeRange(getNow(), this.min, this.max);\n }\n focusList(dir) {\n if (!this.timeLists.length) {\n return;\n }\n this.timeLists.reduce(listReducer, [])\n .map(state => dir === Direction.Right ? state.next : state.prev)\n .map(list => list && list.focus());\n }\n handleChange(value) {\n this.value = value;\n this.valueChange.emit(cloneDate(value));\n }\n hasActiveButton() {\n if (!this.accept) {\n return false;\n }\n return [this.accept, this.cancel, this.now].reduce((isActive, el) => isActive || this.dom.isActive(el), false);\n }\n hasSteps() {\n const keys = Object.keys(this.steps);\n return keys.length !== keys.reduce((acc, k) => acc + this.steps[k], 0);\n }\n intlChange() {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n this.cdr.markForCheck();\n }\n bindEvents() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.domEvents.push(this.renderer.listen(this.element.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n });\n }\n }\n handleKeydown(args) {\n const { keyCode, altKey } = args;\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowLeft, Keys.ArrowRight].indexOf(keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && altKey) {\n return;\n }\n if (keyCode === Keys.Enter && !this.hasActiveButton()) {\n this.handleAccept();\n }\n else if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {\n this.focusList(keyCode === Keys.ArrowLeft ? Direction.Left : Direction.Right);\n }\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus(args) {\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n listIndex(partIndex) {\n let listIdx = 0;\n let partIdx = 0;\n while (partIdx < partIndex) {\n if (this.dateFormatParts[partIdx].type !== 'literal') {\n listIdx++;\n }\n partIdx++;\n }\n return listIdx;\n }\n}\nTimeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.IntlService }, { token: TimePickerDOMService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: { format: \"format\", min: \"min\", max: \"max\", cancelButton: \"cancelButton\", setButton: \"setButton\", nowButton: \"nowButton\", disabled: \"disabled\", steps: \"steps\", value: \"value\" }, outputs: { valueChange: \"valueChange\", valueReject: \"valueReject\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ], viewQueries: [{ propertyName: \"accept\", first: true, predicate: [\"accept\"], descendants: true }, { propertyName: \"cancel\", first: true, predicate: [\"cancel\"], descendants: true }, { propertyName: \"now\", first: true, predicate: [\"now\"], descendants: true }, { propertyName: \"timeLists\", predicate: TimeListComponent, descendants: true }, { propertyName: \"timeListWrappers\", predicate: [\"listWrapper\"], descendants: true }], exportAs: [\"kendo-timeselector\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n
\n \n \n `, isInline: true, components: [{ type: TimeListComponent, selector: \"kendo-timelist\", inputs: [\"min\", \"max\", \"part\", \"step\", \"disabled\", \"value\"], outputs: [\"valueChange\"] }], directives: [{ type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timeselector',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ],\n selector: 'kendo-timeselector',\n template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.IntlService }, { type: TimePickerDOMService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { accept: [{\n type: ViewChild,\n args: ['accept', { static: false }]\n }], cancel: [{\n type: ViewChild,\n args: ['cancel', { static: false }]\n }], now: [{\n type: ViewChild,\n args: ['now', { static: false }]\n }], timeLists: [{\n type: ViewChildren,\n args: [TimeListComponent]\n }], timeListWrappers: [{\n type: ViewChildren,\n args: ['listWrapper']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], format: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], setButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], steps: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueReject: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n *\n * Custom component messages override default component messages.\n */\nclass TimeSelectorCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimeSelectorCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timeselector-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass TimePickerLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst VALUE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker/#toc-integration-with-json';\nconst INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';\nconst formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);\n/**\n * Represents the [Kendo UI TimePicker component for Angular]({% slug overview_timepicker %}#toc-basic-usage).\n */\nclass TimePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.intl = intl;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the TimePicker and\n * determines whether the component is active\n * ([see example]({% slug disabled_timepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TimePicker\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-timepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the TimePicker input field\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_timepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Specifies the time format that is used to display the input value\n * ([see example]({% slug formats_timepicker %})).\n */\n this.format = 't';\n /**\n * Specifies the hint the TimePicker displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_timepicker %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `tabindex` property of the TimePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the TimePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.timeRangeValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this._min = cloneDate(MIN_TIME);\n this._max = cloneDate(MAX_TIME);\n this._popupSettings = { animate: true };\n this._show = false;\n this._steps = {};\n this._value = null;\n this._active = false;\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * Specifies the smallest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set min(min) {\n this._min = cloneDate(min || MIN_TIME);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set max(max) {\n this._max = cloneDate(max || MAX_TIME);\n }\n get max() {\n return this._max;\n }\n /**\n * Configures the incremental steps of the TimePicker.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_timepicker %}).\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15, millisecond: 10 };\n * }\n * ```\n *\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n /**\n * Configures the popup of the TimePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the TimePicker component.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n get input() {\n return this.pickerService.input;\n }\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.timeRangeValidateFn = this.rangeValidation ? timeRangeValidator(this.min, this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.verifyFormat();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape) {\n this.show = false;\n return;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.timeRangeValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the TimePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the TimePicker component.\n */\n blur() {\n (this.timeSelector || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n handleChange(value) {\n if (isEqual(this.value, value)) {\n this.focusInput();\n this.show = false;\n return;\n }\n this.value = cloneDate(value);\n this.zone.run(() => {\n this.focusInput();\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n });\n }\n /**\n * @hidden\n */\n handleReject() {\n this.show = false;\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n const val = this.input.formatSections.date ? value : this.mergeTime(value);\n this.handleChange(val);\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicit call handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n normalizeTime(date) {\n return setTime(MIDNIGHT_DATE, date);\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(this.value, value) : value;\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this.isOpen) {\n return;\n }\n this._show = show;\n this.cdr.markForCheck();\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.timeSelector) {\n this.cdr.detectChanges();\n }\n if (this.isActive) {\n this.timeSelector.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$1} for possible resolution.`);\n }\n }\n verifyFormat() {\n if (!isDevMode()) {\n return;\n }\n const formatContainsDateParts = this.intl.splitDateFormat(this.format).some(part => !formatRegExp.test(part.type));\n if (formatContainsDateParts) {\n throw new Error(`Provided format is not supported. Supported specifiers are T|t|H|h|m|s|S|a. See ${INTL_DATE_FORMAT}`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.timeSelector && this.timeSelector.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: i1.IntlService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerComponent, selector: \"kendo-timepicker\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", cancelButton: \"cancelButton\", nowButton: \"nowButton\", steps: \"steps\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", title: \"title\", rangeValidation: \"rangeValidation\", value: \"value\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-timepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-timepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ],\n selector: 'kendo-timepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: i1.IntlService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], steps: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], value: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-timepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-datetimepicker-messages-base\", inputs: { toggle: \"toggle\", dateTab: \"dateTab\", dateTabLabel: \"dateTabLabel\", timeTab: \"timeTab\", timeTabLabel: \"timeTabLabel\", accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", today: \"today\", now: \"now\", nowLabel: \"nowLabel\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datetimepicker-messages-base'\n }]\n }], propDecorators: { toggle: [{\n type: Input\n }], dateTab: [{\n type: Input\n }], dateTabLabel: [{\n type: Input\n }], timeTab: [{\n type: Input\n }], timeTabLabel: [{\n type: Input\n }], accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], today: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst timeFormatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.dayperiod}|literal`);\nconst VALUE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/integration-with-json/';\nconst MIN_MAX_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/date-time-limits/';\nconst DEFAULT_ACTIVE_TAB = 'date';\nconst DEFAULT_DATEINPUT_FORMAT = 'g';\nconst DEFAULT_TIMESELECTOR_FORMAT = 't';\nconst TWO_DIGIT_YEAR_MAX = 68;\n/**\n * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).\n */\nclass DateTimePickerComponent {\n constructor(popupService, intl, cdr, pickerService, ngZone, wrapper, touchEnabled, localization, disabledDatesService, renderer) {\n this.popupService = popupService;\n this.intl = intl;\n this.cdr = cdr;\n this.pickerService = pickerService;\n this.ngZone = ngZone;\n this.wrapper = wrapper;\n this.touchEnabled = touchEnabled;\n this.localization = localization;\n this.disabledDatesService = disabledDatesService;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datetimepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the title of the input element of the DateTimePicker.\n */\n this.title = '';\n /**\n * Sets or gets the `disabled` property of the DateTimePicker and determines whether the component is active\n * ([see example]({% slug disabled_datetimepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DateTimePicker\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-datetimepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DateTimePicker input field\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datetimepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Determines whether to display the **Cancel** button in the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-toggling-the-cancel-button)).\n */\n this.cancelButton = true;\n /**\n * Configures the incremental steps of the DateInput and the popup component of the TimePicker\n * ([see example]({% slug incrementalsteps_datetimepicker %})).\n */\n this.steps = {};\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datetimepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view of the popup Calendar\n * ([see example]({% slug datetimepicker_calendar_options %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form\n * ([see example]({% slug dateranges_datetimepicker %}#toc-prevent-invalid-input)).\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datetimepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Fires each time the user selects a new value.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain closed.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain open.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the user focuses the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the user blurs the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n *\n * Controls whether the Calendar or the TimeSelector will be displayed.\n */\n this.activeTab = DEFAULT_ACTIVE_TAB;\n /**\n * @hidden\n *\n * Specifies the stripped time-related format that is used in the TimeSelector.\n * Updates each time the `format` property value changes.\n */\n this.timeSelectorFormat = DEFAULT_TIMESELECTOR_FORMAT;\n /**\n * @hidden\n */\n this.timeSelectorMin = cloneDate(MIN_TIME);\n /**\n * @hidden\n */\n this.timeSelectorMax = cloneDate(MAX_TIME);\n /**\n * @hidden\n */\n this.calendarValue = null;\n /**\n * @hidden\n */\n this.calendarMin = cloneDate(MIN_DATE);\n /**\n * @hidden\n */\n this.calendarMax = lastMillisecondOfDate(MAX_DATE);\n this._popupSettings = { animate: true };\n this._value = null;\n this._format = DEFAULT_DATEINPUT_FORMAT;\n this._tabindex = 0;\n this._defaultTab = DEFAULT_ACTIVE_TAB;\n this._min = mergeDateAndTime(MIN_DATE, MIN_TIME);\n this._max = mergeDateAndTime(MAX_DATE, MAX_TIME);\n this._isActive = false;\n this.onControlTouched = noop$2;\n this.onControlChange = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.subscriptions = new Subscription();\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get input() {\n return this.pickerService.input;\n }\n /**\n * @hidden\n */\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * Specifies the value of the DateTimePicker component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n this.setCalendarValue(value);\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the date format for displaying the input value\n * ([see example]({% slug formats_datetimepicker %}))\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n *\n * > If a [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) object is provided, the `displayFormat` value will be used for the popup TimePicker.\n */\n set format(format) {\n this._format = format;\n const displayFormat = this.getDisplayFormat(format);\n this.timeSelectorFormat = this.getTimeSelectorFormat(displayFormat);\n }\n get format() {\n return this._format;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the DateTimePicker.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the dates of the DateTimePicker that will be disabled\n * ([see example]({% slug disabled_dates_datetimepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Configures the popup settings of the DateTimePicker\n * ([see example]({% slug datetimepicker_popup_options %}#toc-customizing-the-popup)).\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the smallest valid date.\n * The Calendar will not display dates before this value.\n * If the `min` value of the Calendar is selected, the TimePicker will not display\n * time entries before the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set min(value) {\n if (!isPresent(value)) {\n return;\n }\n this._min = cloneDate(value);\n this.calendarMin = getDate(value);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid date.\n * The Calendar will not display dates after this value.\n * If the `max` value of the Calendar is selected, the TimePicker will not display\n * time entries after the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set max(value) {\n if (!isPresent(value)) {\n return;\n }\n this._max = cloneDate(value);\n this.calendarMax = lastMillisecondOfDate(value);\n }\n get max() {\n return this._max;\n }\n /**\n * Indicates whether the component is currently open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * Indicates whether the component or its popup content is focused.\n */\n get isActive() {\n return this._isActive;\n }\n set isActive(value) {\n if (value) {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-focus');\n }\n this._isActive = value;\n }\n /**\n * Sets the active tab on opening the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-setting-the-default-tab)).\n */\n set defaultTab(tab) {\n this._defaultTab = tab || DEFAULT_ACTIVE_TAB;\n this.activeTab = this.defaultTab;\n }\n get defaultTab() {\n return this._defaultTab;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get tabSwitchTransition() {\n /*\n When the popup is opening, disables the set transition in the themes. When `defaultTab` is set to `time`,\n the popup opens with an active **Time** tab and the animation of the initial transition is undesired.\n Setting the inline transition style to `none` overrides the set animation in the themes.\n Setting the inline transition style to `null` does not apply any inline styles or override the themes CSS.\n */\n return this.isOpen ? null : 'none';\n }\n /**\n * @hidden\n *\n * Indicates whether the Calendar will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableCalendar() {\n return this.activeTab !== 'date' && !this.calendar.isActive;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n /**\n * @hidden\n *\n * Indicates whether the TimeSelector will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableTimeSelector() {\n return this.activeTab !== 'time' && !this.timeSelector.isActive;\n }\n get activeTabComponent() {\n if (!this.isOpen) {\n return;\n }\n if (!(isPresent(this.calendar) || isPresent(this.timeSelector))) {\n this.cdr.detectChanges();\n }\n return this.activeTab === 'date' ? this.calendar : this.timeSelector;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!isPresent(appendTo) || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n ngOnInit() {\n this.subscriptions.add(this.pickerService.onFocus\n // detect popup changes to disable the inactive view mark-up when the popup is open\n .pipe(tap(this.detectPopupChanges.bind(this)))\n .subscribe(this.handleFocus.bind(this)));\n this.subscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.subscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleCalendarValueChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cdr.markForCheck()));\n this.subscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n if (isWindowAvailable()) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(this.handleCancel.bind(this))));\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.min) || isPresent(changes.max)) {\n this.verifyMinMaxRange();\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n ngOnDestroy() {\n if (this.isOpen) {\n this.closePopup();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * * If the popup is closed, focuses the DateTimePicker input.\n * * If the popup is open, the focus is moved to its content.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else {\n this.input.focus();\n }\n }\n /**\n * Blurs the DateTimePicker.\n */\n blur() {\n if (this.isOpen && this.activeTabComponent.isActive) {\n this.activeTabComponent.blur();\n }\n else {\n this.input.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly || show === this.isOpen) {\n return;\n }\n const shouldOpen = isPresent(show) ? show : !this.isOpen;\n if (shouldOpen) {\n this.openPopup();\n }\n else {\n this.closePopup();\n // Changes the tab and the calendar or clock icon to the designated default.\n if (this.activeTab !== this.defaultTab) {\n this.activeTab = this.defaultTab;\n this.cdr.detectChanges();\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label will render in the input.\n */\n isEmpty() {\n return !isPresent(this.value) && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n // prevents the event default to evade focusing the DateInput input when placed inside a label (FF/IE/Edge)\n event.preventDefault();\n const runInZone = !this.isOpen || hasObservers(this.close);\n this.run(runInZone, () => {\n const shouldOpen = !this.isOpen;\n // handle focus first to maintain correct event order `focus` => `open`\n this.handleFocus();\n this.togglePopup(shouldOpen);\n this.switchFocus();\n });\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n handleBlur(event) {\n if (!this.isActive || this.focusTargetInComponent(event)) {\n return;\n }\n this.isActive = false;\n const isNgControlUntouched = this.wrapper.nativeElement.classList.contains('ng-untouched');\n const runInZone = isNgControlUntouched || hasObservers(this.onBlur) || (this.isOpen && hasObservers(this.close));\n this.run(runInZone, () => {\n this.onBlur.emit();\n this.onControlTouched();\n this.togglePopup(false);\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n changeActiveTab(tab) {\n if (!this.isOpen || this.activeTab === tab) {\n return;\n }\n // persists the Tcurrent value of the TimeSelector when switching between tabs\n if (!isEqual(this.timeSelector.value, this.timeSelector.current)) {\n this.timeSelector.handleAccept();\n }\n this.activeTab = tab;\n this.cdr.detectChanges();\n this.detectPopupChanges();\n }\n /**\n * @hidden\n */\n handleTabChangeTransitionEnd(dateTimeSelector, event) {\n // handle only the .k-datetime-selector element transition, ignore any child element transitions\n if (event.target !== dateTimeSelector) {\n return;\n }\n this.activeTabComponent.focus();\n }\n /**\n * @hidden\n */\n handleAccept() {\n if (!this.isOpen) {\n return;\n }\n const candidate = mergeDateAndTime(this.calendar.value, this.timeSelector.current);\n const valueChangePresent = !isEqual(this.value, candidate);\n const runInZone = valueChangePresent || hasObservers(this.close);\n this.run(runInZone, () => {\n this.handleValueChange(candidate);\n this.togglePopup(false);\n });\n }\n /**\n * @hidden\n */\n handleCancel() {\n if (!this.isOpen) {\n return;\n }\n const runInZone = hasObservers(this.close);\n this.run(runInZone, () => this.togglePopup(false));\n }\n /**\n * @hidden\n */\n handleInputValueChange(value) {\n this.handleValueChange(value);\n if (this.isOpen) {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleCalendarValueChange() {\n this.setTimeSelectorMinMax(this.calendar.value);\n this.changeActiveTab('time');\n }\n /**\n * @hidden\n */\n handleKeyDown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const { keyCode, altKey } = event;\n switch (keyCode) {\n case altKey && Keys.ArrowUp:\n case Keys.Escape:\n this.handleCancel();\n break;\n case !this.isOpen && altKey && Keys.ArrowDown:\n this.ngZone.run(() => this.togglePopup(true));\n break;\n case altKey && Keys.ArrowRight:\n this.changeActiveTab('time');\n break;\n case altKey && Keys.ArrowLeft:\n this.changeActiveTab('date');\n break;\n case this.isOpen && this.timeSelector.isActive && isPresent(this.calendarValue) && Keys.Enter:\n this.handleAccept();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleTabOut(event) {\n const { keyCode, shiftKey, target } = event;\n // if no focusable next sibling elements exist in the controls sections, the user is tabbing out of the popup\n const focusableSiblingAvailable = isPresent(target.nextElementSibling) && !target.nextElementSibling.disabled;\n if (keyCode === Keys.Tab && !shiftKey && !focusableSiblingAvailable) {\n this.input.focus();\n this.handleCancel();\n }\n }\n /**\n * @hidden\n */\n handleBackTabOut(event) {\n const { keyCode, shiftKey } = event;\n if (keyCode === Keys.Tab && shiftKey) {\n this.input.focus();\n }\n }\n /**\n * @hidden\n */\n popupButtonsClasses(type) {\n const buttonType = type ? type : 'base';\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;\n }\n /**\n * @hidden\n *\n * Prevents the diversion of the focus from the currently active element in the component.\n */\n preventMouseDown(event) {\n event.preventDefault();\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(value) && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK} for possible resolution.`);\n }\n }\n verifyMinMaxRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_MAX_DOC_LINK}.`);\n }\n }\n /**\n * Extracts the time slots and the literals that are not preceded by date parts\n * and concatenates the resulting parts into a string.\n * If the provided format value does not contain any time parts,\n * returns the designated format of the default popup component of the TimePicker.\n */\n getTimeSelectorFormat(format) {\n const timeSelectorFormat = this.intl\n .splitDateFormat(format)\n .filter(this.timeFormatPartFilter)\n .reduce((format, part) => format += part.pattern, '');\n return timeSelectorFormat || DEFAULT_TIMESELECTOR_FORMAT;\n }\n /**\n * Extracts the `displayFormat` from the provided `string | FormatSettings` value.\n * Fallbacks to the default input value, if a falsy value param is passed.\n */\n getDisplayFormat(format) {\n if (!format) {\n return DEFAULT_DATEINPUT_FORMAT;\n }\n if (typeof format === 'string') {\n return format;\n }\n else {\n return format.displayFormat;\n }\n }\n /**\n * The filter expression that filters out all format parts\n * except for `hour`, `minute`, `second`, `dayperiod`, and specific literals.\n * Literals will be left only if they are not preceded by date parts.\n */\n timeFormatPartFilter(part, index, parts) {\n const previousPart = index >= 1 && parts[index - 1];\n if (previousPart && part.type === 'literal') {\n return timeFormatRegExp.test(previousPart.type);\n }\n return timeFormatRegExp.test(part.type);\n }\n togglePopup(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n this.switchFocus();\n }\n switchFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n openPopup() {\n this.setCalendarValue(this.value);\n this.setTimeSelectorMinMax(this.value);\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n content: this.popupTemplate,\n positionMode: 'absolute',\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n popupClass: `k-datetime-container ${this.popupSettings.popupClass || ''}`,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction }\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.handleCancel());\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n handleValueChange(value) {\n if (isEqual(this.value, value)) {\n return;\n }\n this.value = cloneDate(value);\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * Indicates whether the focus target is part of this component,\n * that is, whether the focus target is inside the component or in the popup.\n */\n focusTargetInComponent(event) {\n if (!isPresent(event)) {\n return false;\n }\n const relatedTarget = event.relatedTarget || document.activeElement;\n const focusInPopup = isPresent(this.popupRef) && this.popupRef.popupElement.contains(relatedTarget);\n const focusInWrapper = this.wrapper.nativeElement.contains(relatedTarget);\n return focusInPopup || focusInWrapper;\n }\n setTimeSelectorMinMax(selectedDate) {\n const minDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.min));\n this.timeSelectorMin = cloneDate(minDateSelected ? this.min : MIN_TIME);\n const maxDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.max));\n this.timeSelectorMax = cloneDate(maxDateSelected ? this.max : MAX_TIME);\n }\n setCalendarValue(value) {\n const isInCalendarRange = isPresent(value) && isInRange(value, this.calendarMin, this.calendarMax);\n this.calendarValue = isInCalendarRange ? getDate(value) : null;\n }\n /**\n * If the popup is available, runs a popup change detection.\n */\n detectPopupChanges() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n /**\n * Depending on the predicate `runInZone` value that is passed,\n * runs the provided function either in the Angular or in the current zone.\n */\n run(runInZone, fn) {\n if (runInZone) {\n this.ngZone.run(() => fn());\n }\n else {\n fn();\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i2.PopupService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: PickerService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }, { token: i1$1.LocalizationService }, { token: DisabledDatesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerComponent, selector: \"kendo-datetimepicker\", inputs: { value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", tabindex: \"tabindex\", disabledDates: \"disabledDates\", popupSettings: \"popupSettings\", focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", cancelButton: \"cancelButton\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", focusedDate: \"focusedDate\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", weekNumber: \"weekNumber\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", incompleteDateValidation: \"incompleteDateValidation\", defaultTab: \"defaultTab\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-datetimepicker\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, read: TemplateRef, static: true }], exportAs: [\"kendo-datetimepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-datetimepicker',\n exportAs: 'kendo-datetimepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ],\n template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: PickerService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }, { type: i1$1.LocalizationService }, { type: DisabledDatesService }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-datetimepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], defaultTab: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { read: TemplateRef, static: true }]\n }] } });\n\n/**\n * A directive which renders the content of the DateRange Popup. To define the cell template, nest an\n * `` tag with the `kendoRangePopupTemplate` directive inside the component tag.\n */\nclass DateRangePopupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDateRangePopupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangePopupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupTemplateDirective, selector: \"[kendoDateRangePopupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangePopupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst isActive = (cmp) => (cmp && cmp.isActive) || false;\nconst hasActiveContent = (popup) => popup && popup.hasActiveContent();\n/**\n * A service that handles the communication between the components that are placed inside the DateRangeComponent.\n * For example, the start and end `DateInput` and `DateRangePopup` components.\n */\nclass DateRangeService {\n /** @hidden */\n constructor() {\n /**\n * An Observable instance that notifies when the `activeRangeEnd` state is changed.\n */\n this.activeRangeEnd$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `focusedDate` is changed.\n */\n this.focusedDate$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the end `DateInput` component is changed.\n * For example, when a new end `DateInput` is attached or when the old one is detached.\n */\n this.endInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the start `DateInput` component is changed.\n * For example, when a new start `DateInput` is attached or the old one is detached.\n */\n this.startInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `DateRangePopup` component is changed.\n */\n this.dateRangePopup$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the state of the selection range is changed.\n */\n this.range$ = new BehaviorSubject(EMPTY_SELECTIONRANGE);\n }\n /**\n * Gets the current `activeRangeEnd` value.\n */\n get activeRangeEnd() {\n return this.activeRangeEnd$.value;\n }\n /**\n * Gets the current `focusedDate` value.\n */\n get focusedDate() {\n return this.focusedDate$.value;\n }\n /**\n * Gets the `min` range value.\n * The `min` value is extracted from the `start` DateInput value or the `min` value of the Calendar.\n */\n get min() {\n return (this.startInput$.value || {}).min || null;\n }\n /**\n * Gets the `max` range value.\n * The `max` value is extracted from the `end` DateInput value or the `max` value of the Calendar.\n */\n get max() {\n return (this.endInput$.value || {}).max || null;\n }\n /**\n * Gets the current `selectionRange` value.\n */\n get selectionRange() {\n return this.range$.value;\n }\n /**\n * Activates the registered `DateRangePopup` component.\n * The method opens the popup and focuses the calendar.\n */\n activatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!dateRangePopup) {\n return;\n }\n dateRangePopup.activate();\n }\n /**\n * Deactivates the registered `DateRangePopup` component.\n * The method closes the popup.\n */\n deactivatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.show = false;\n }\n /**\n * @hidden\n *\n * Deactivates the registered `DateRangePopup` component and fires the `cancel` event.\n * The method closes the popup.\n */\n cancelPopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.cancelPopup();\n }\n /**\n * Completes all observables to mitigate possible memory leaks.\n * Calls the method when a component that uses it is destroyed.\n */\n destroy() {\n this.activeRangeEnd$.complete();\n this.dateRangePopup$.complete();\n this.focusedDate$.complete();\n this.endInput$.complete();\n this.startInput$.complete();\n this.range$.complete();\n }\n /**\n * Returns `true` when an active component that is placed inside the `DateRangeComponent` is detected.\n * For example, the opened popup or the focused DateInput.\n *\n * @returns `true` if an active component is present.\n */\n hasActiveComponent() {\n const popup = this.dateRangePopup$.value;\n const isPopup = isActive(popup);\n const isStart = isActive(this.startInput$.value);\n const isEnd = isActive(this.endInput$.value);\n return isPopup || isStart || isEnd || hasActiveContent(popup) || false;\n }\n /**\n * Registers a new start `DateInput` component. Notifies all `startInput$` listeners.\n */\n registerStartInput(startInput) {\n this.startInput$.next(startInput);\n }\n /**\n * Registers a new end `DateInput` component. Notifies all `endInput$` listeners.\n */\n registerEndInput(endInput) {\n this.endInput$.next(endInput);\n }\n /**\n * Registers a new `DateRangePopup` component. Notifies all `dateRangePopup$` listeners.\n */\n registerPopup(dateRangePopup) {\n this.dateRangePopup$.next(dateRangePopup);\n }\n /**\n * Updates the `activeRangeEnd` value. Notifies all `activeRangeEnd$` listeners.\n */\n setActiveRangeEnd(activeRange) {\n if (!activeRange || this.activeRangeEnd === activeRange) {\n return;\n }\n this.activeRangeEnd$.next(activeRange);\n }\n /**\n * Updates the focused date. Notifies all `focusedDate$` listeners.\n */\n setFocusedDate(value) {\n if (isEqual(this.focusedDate$.value, value)) {\n return;\n }\n this.focusedDate$.next(value);\n }\n /**\n * Updates the selection range. Notifies all `range$` listeners.\n */\n setRange(range = EMPTY_SELECTIONRANGE) {\n this.range$.next(range);\n }\n}\nDateRangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDateRangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * A directive which manages the MultiViewCalendar range selection.\n */\nclass DateRangeSelectionDirective {\n constructor(calendar, cdr, element, renderer, dateRangeService) {\n this.calendar = calendar;\n this.cdr = cdr;\n this.element = element;\n this.dateRangeService = dateRangeService;\n /**\n * Specifies the auto-correction behavior. If the start date is greater than the end date,\n * the directive fixes the date range to a single date either on input change or on blur\n * ([see example]({% slug autocorrect_daterange %}#toc-configuring-the-calendar-selection-directive)).\n *\n * By default, the auto-correction is triggered on change.\n * To disable this behavior, set the `autoCorrectOn` property to `none`.\n */\n this.autoCorrectOn = 'change';\n /**\n * Fires when the active range end is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.activeRangeEndChange = new EventEmitter();\n /**\n * Fires when the selection range is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.selectionRangeChange = new EventEmitter();\n this.calendarSubscriptions = new Subscription();\n this.dateRangeService = this.dateRangeService || new DateRangeService();\n renderer.setAttribute(element.nativeElement, 'aria-multiselectable', 'true');\n }\n /**\n * Gets or sets the selection range of the calendar. When a new range is set,\n * the connected DateRangeService notifies all related parties.\n */\n get selectionRange() {\n return this.calendar ? this.calendar.selectionRange : null;\n }\n set selectionRange(range) {\n if (!this.isEqualCalendarRange(range)) {\n this.setSelectionRange(range);\n }\n if (!isEqualRange(this.dateRangeService.selectionRange, range)) {\n this.dateRangeService.setRange(range);\n }\n this.updateFocusedDate(range);\n }\n /**\n * Gets or sets the active end of the selection range. This option determines which range end will be updated on\n * user interaction. When a new active end is set, the connected DateRangeService notifies all related parties.\n */\n /**\n * Specifies which end of the selection range will be marked as active. The active end gets modified upon user\n * interaction. When a new active end is set, the wired DateRangeService notifies all related components. For\n * example, the start and end DateInput components.\n *\n * > If the selection range is undefined, the value is ignored.\n */\n get activeRangeEnd() {\n return this.calendar.activeRangeEnd;\n }\n set activeRangeEnd(activeRange) {\n if (this.dateRangeService.activeRangeEnd === activeRange) {\n return;\n }\n this.calendar.activeRangeEnd = activeRange;\n this.dateRangeService.setActiveRangeEnd(activeRange);\n }\n get calendarRange() {\n return this.selectionRange || EMPTY_SELECTIONRANGE;\n }\n ngOnInit() {\n const calendar = this.calendar;\n const dateRangeService = this.dateRangeService;\n calendar.min = either(dateRangeService.min, calendar.min);\n calendar.max = either(dateRangeService.max, calendar.max);\n this.addSubscriptions(calendar.cellEnter.subscribe((value) => this.handleHover(value)), calendar.valueChange.subscribe((value) => this.handleChange(value)), dateRangeService.focusedDate$.subscribe(focusedDate => {\n if (!isEqual(calendar.focusedDate, focusedDate)) {\n calendar.focusedDate = focusedDate;\n }\n }), dateRangeService.activeRangeEnd$.subscribe(rangeEnd => {\n if (calendar.activeRangeEnd === rangeEnd) {\n return;\n }\n calendar.activeRangeEnd = rangeEnd;\n this.activeRangeEndChange.emit(rangeEnd);\n this.cdr.markForCheck();\n }), dateRangeService.range$.subscribe(range => {\n if (!this.isEqualCalendarRange(range)) {\n this.acceptAndEmit(range);\n }\n this.updateFocusedDate(range);\n }), fromEvent(this.element.nativeElement, 'blur').subscribe(() => this.handleBlur()));\n }\n ngOnDestroy() {\n this.calendarSubscriptions.unsubscribe();\n }\n addSubscriptions(...subscriptions) {\n subscriptions.map(s => this.calendarSubscriptions.add(s));\n }\n isEqualCalendarRange(range) {\n return isEqualRange(this.calendar.selectionRange, range);\n }\n handleBlur() {\n const { start, end } = this.calendarRange;\n const autoCorrect = this.autoCorrectOn === 'blur' && start !== null && end !== null && end < start;\n if (autoCorrect) {\n this.dateRangeService.setRange(clampRange(start));\n }\n }\n handleChange(value) {\n const service = this.dateRangeService;\n const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);\n const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');\n const range = autoCorrect ? clampRange(value) : this.updateRange(value);\n if (!isEqualRange(service.selectionRange, range)) {\n this.acceptAndEmit(range);\n service.setActiveRangeEnd(activeEnd);\n service.setRange(range);\n }\n }\n handleHover(value) {\n if (this.hasCompleteRange()) {\n return;\n }\n const { start, end } = this.calendarRange;\n const activeRangeEnd = this.calendar.activeRangeEnd;\n const updateRange = (start && activeRangeEnd === 'end') || (end && activeRangeEnd === 'start');\n if (updateRange) {\n this.setSelectionRange(this.updateRange(value));\n }\n }\n hasCompleteRange() {\n const { start, end } = this.dateRangeService.selectionRange || EMPTY_SELECTIONRANGE;\n return Boolean(start) && Boolean(end);\n }\n shouldAutoCorrect(value) {\n const { end, start } = this.calendarRange;\n if (this.calendar.activeRangeEnd !== 'end') {\n return end !== null && value > end;\n }\n else {\n return start !== null && value < start;\n }\n }\n updateFocusedDate(range) {\n if (!range || this.dateRangeService.focusedDate) {\n return;\n }\n this.dateRangeService.setFocusedDate(range.start || range.end);\n }\n updateRange(value) {\n const { end, start } = this.calendarRange;\n return this.calendar.activeRangeEnd !== 'end' ? ({ start: value, end }) : ({ start, end: value });\n }\n setSelectionRange(range) {\n this.calendar.selectionRange = range;\n this.calendar.writeValue(null);\n }\n acceptAndEmit(range) {\n this.setSelectionRange(range);\n this.selectionRangeChange.emit(range);\n }\n}\nDateRangeSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, deps: [{ token: MultiViewCalendarComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DateRangeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: { autoCorrectOn: \"autoCorrectOn\", selectionRange: \"selectionRange\", activeRangeEnd: \"activeRangeEnd\" }, outputs: { activeRangeEndChange: \"activeRangeEndChange\", selectionRangeChange: \"selectionRangeChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeSelection]'\n }]\n }], ctorParameters: function () { return [{ type: MultiViewCalendarComponent }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DateRangeService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeRangeEndChange: [{\n type: Output\n }], selectionRangeChange: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRangePopup component for Angular.\n *\n * @example\n * ```ts\n * import { DateInputsModule, DateRangeService } from '@progress/kendo-angular-dateinputs';\n *\n * _@Component({\n * providers: [DateRangeService],\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nclass DateRangePopupComponent {\n constructor(popupService, dateRangeService, ref, zone, rtl) {\n this.popupService = popupService;\n this.dateRangeService = dateRangeService;\n this.ref = ref;\n this.zone = zone;\n this.rtl = rtl;\n /**\n * Controls the popup animation.\n * By default, the opening and closing animations are enabled.\n * For more information about controlling the popup animations,\n * refer to the article on [animations]({% slug animations_popup %}).\n */\n this.animate = true;\n /**\n * Configures the collision behavior of the popup.\n * For more information, refer to the article on\n * [viewport boundary detection]({% slug viewportboundarydetection_popup %}).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the calendar element is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the calendar element is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the popup is closed either on `ESC` keypress or on leaving the viewport.\n */\n this.cancel = new EventEmitter();\n /**\n * @hidden\n */\n this.popupUID = guid();\n this.calendarSubscriptions = new Subscription();\n this.popupSubscriptions = new Subscription();\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * The active calendar that is visible in the popup.\n *\n * > When the popup is closed, the property returns `null`.\n */\n get calendar() {\n return this._calendar;\n }\n set calendar(calendar) {\n this._calendar = calendar;\n this.subscribeFocusBlur(calendar);\n }\n /**\n * Gets the active state of the component.\n * When the opened calendar is active, returns `true`.\n */\n get isActive() {\n return this.calendar && this.calendar.isActive;\n }\n /**\n * Gets or sets the visibility state of the component.\n */\n set show(show) {\n if (this._show === show) {\n return;\n }\n const event = new PreventableEvent();\n if (show) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n }\n get show() {\n return this._show;\n }\n ngOnInit() {\n this.dateRangeService.registerPopup(this);\n }\n ngAfterViewInit() {\n this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n this.calendarSubscriptions.add(this.viewCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n if (isWindowAvailable()) {\n this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.calendarSubscriptions.unsubscribe();\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n }\n /**\n * Opens the popup component and focuses the calendar.\n */\n activate() {\n if (this.show === true) {\n return;\n }\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n this.show = true;\n this.ref.markForCheck();\n this.zone.runOutsideAngular(() => {\n this.activateSubscription = merge(this.contentCalendar.changes, this.viewCalendar.changes)\n .pipe(filter(changes => changes && changes.first), map(changes => changes.first))\n .subscribe((calendar) => setTimeout(() => calendar.focus()));\n });\n }\n /**\n * Focuses the calendar (if available).\n */\n focus() {\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n /**\n * Checks if a focused element ids placed inside the popup.\n *\n * @return boolean;\n */\n hasActiveContent() {\n if (!isDocumentAvailable() || !this.popupRef) {\n return false;\n }\n return this.popupRef.popupElement.contains(document.activeElement);\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show The state of the popup.\n */\n toggle(show) {\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n *\n * Closes the popup and triggers the `cancel` event.\n */\n cancelPopup() {\n this.show = false;\n this.cancel.emit();\n }\n handleWindowBlur() {\n if (!this.show) {\n return;\n }\n if (hasObservers(this.close)) {\n this.zone.run(() => this.show = false);\n }\n else {\n this.show = false;\n }\n }\n handleMouseLeave() {\n this.dateRangeService.setRange(this.dateRangeService.selectionRange);\n }\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape || (altKey && keyCode === Keys.ArrowUp)) {\n this.zone.run(() => this.cancelPopup());\n }\n }\n subscribeFocusBlur(calendar) {\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (!calendar) {\n return;\n }\n const nativeElement = calendar.element.nativeElement;\n this.blurSubscription = fromEvent(nativeElement, 'blur').subscribe(() => this.onBlur.emit());\n this.focusSubscription = fromEvent(nativeElement, 'focus').subscribe(() => this.onFocus.emit());\n }\n addPopupSubscriptions(...subscriptions) {\n if (!isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions = new Subscription();\n }\n subscriptions.map(s => this.popupSubscriptions.add(s));\n }\n get _appendTo() {\n const appendTo = this.appendTo;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n _toggle(show) {\n this._show = show;\n if (this.popupRef) {\n this.destroyPopup();\n }\n if (this._show) {\n const direction = this.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.anchor,\n anchorAlign: this.anchorAlign || { vertical: 'bottom', horizontal: direction },\n animate: this.animate,\n appendTo: this._appendTo,\n collision: this.collision,\n content: (this.contentTemplate || {}).templateRef || this.defaultTemplate,\n margin: this.margin,\n popupAlign: this.popupAlign || { vertical: 'top', horizontal: direction },\n positionMode: 'absolute'\n });\n const { popupElement, popupAnchorViewportLeave } = this.popupRef;\n popupElement.setAttribute('id', this.popupUID);\n this.addPopupSubscriptions(this.zone.runOutsideAngular(() => fromEvent(popupElement, 'keydown').subscribe(this.handleKeydown.bind(this))), fromEvent(popupElement, 'mouseleave').subscribe(this.handleMouseLeave.bind(this)), popupAnchorViewportLeave.subscribe(() => this.cancelPopup()));\n }\n }\n destroyPopup() {\n if (isPresent(this.popupRef)) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions.unsubscribe();\n }\n }\n}\nDateRangePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i2.PopupService }, { token: DateRangeService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateRangePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", appendTo: \"appendTo\", collision: \"collision\", popupAlign: \"popupAlign\", margin: \"margin\" }, outputs: { open: \"open\", close: \"close\", onBlur: \"blur\", onFocus: \"focus\", cancel: \"cancel\" }, queries: [{ propertyName: \"contentTemplate\", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: \"contentCalendar\", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"defaultTemplate\", first: true, predicate: [\"defaultTemplate\"], descendants: true }, { propertyName: \"viewCalendar\", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-daterange-popup\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }], directives: [{ type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: [\"autoCorrectOn\", \"selectionRange\", \"activeRangeEnd\"], outputs: [\"activeRangeEndChange\", \"selectionRangeChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-daterange-popup',\n selector: 'kendo-daterange-popup',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], defaultTemplate: [{\n type: ViewChild,\n args: ['defaultTemplate', { static: false }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [DateRangePopupTemplateDirective, { static: false }]\n }], viewCalendar: [{\n type: ViewChildren,\n args: [MultiViewCalendarComponent]\n }], contentCalendar: [{\n type: ContentChildren,\n args: [MultiViewCalendarComponent]\n }], animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], margin: [{\n type: Input\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], cancel: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRange component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public dateRange: any = { start: null, end: null };\n * }\n * ```\n */\nclass DateRangeComponent {\n constructor() {\n this.wrapperClass = true;\n /**\n * @hidden\n */\n this.showDefault = false;\n validatePackage(packageMetadata);\n }\n get hasContentPopup() {\n return this.contentPopup.length > 0;\n }\n ngAfterContentInit() {\n this.showDefault = !this.hasContentPopup;\n this.subscription = this.contentPopup.changes.subscribe(() => {\n this.showDefault = !this.hasContentPopup;\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeComponent, selector: \"kendo-daterange\", host: { properties: { \"class.k-daterangepicker\": \"this.wrapperClass\" } }, providers: [DateRangeService], queries: [{ propertyName: \"contentPopup\", predicate: DateRangePopupComponent }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: [\"animate\", \"anchor\", \"anchorAlign\", \"appendTo\", \"collision\", \"popupAlign\", \"margin\"], outputs: [\"open\", \"close\", \"blur\", \"focus\", \"cancel\"], exportAs: [\"kendo-daterange-popup\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [DateRangeService],\n selector: 'kendo-daterange',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { wrapperClass: [{\n type: HostBinding,\n args: ['class.k-daterangepicker']\n }], contentPopup: [{\n type: ContentChildren,\n args: [DateRangePopupComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass DateRangeInput {\n constructor(activeRangeEnd, dateRangeService, input, element, renderer, zone) {\n this.activeRangeEnd = activeRangeEnd;\n this.dateRangeService = dateRangeService;\n this.input = input;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.navigateCalendarOnFocus = false;\n this.popupSubscriptions = new Subscription();\n this.subscriptions = new Subscription();\n }\n get isActiveEnd() {\n return this.dateRangeService.activeRangeEnd === this.activeRangeEnd;\n }\n get popupCalendarActivated() {\n const popup = this.dateRangeService.dateRangePopup$.value;\n return isPresent(popup) && isPresent(popup.calendar);\n }\n init() {\n if (this.input.value) {\n this.dateRangeService.setRange(this.getRange(this.input.value));\n }\n [\n this.input.onBlur.subscribe(() => this.deactivate()),\n this.input.onFocus.pipe(filter(() => !this.popupCalendarActivated)).subscribe(() => this.activate()),\n this.input.valueUpdate.subscribe(value => this.updateRange(value, 'change')),\n this.dateRangeService.activeRangeEnd$.subscribe(() => {\n if (this.navigateCalendarOnFocus) {\n this.focusActiveDate();\n }\n this.toggleActiveClass(this.isActiveEnd);\n }),\n this.dateRangeService.dateRangePopup$.subscribe(popup => this.initPopup(popup)),\n this.dateRangeService.range$.subscribe(range => this.updateInputValue(range)),\n fromEvent(this.element.nativeElement, 'click').subscribe(() => this.activate()),\n fromEvent(this.element.nativeElement, 'keydown').subscribe((event) => this.togglePopup(event || {}))\n ].map(s => this.subscriptions.add(s));\n }\n destroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribePopup();\n }\n initPopup(popup) {\n if (!popup) {\n this.unsubscribePopup();\n return;\n }\n if (!popup.anchor) {\n popup.anchor = this.element.nativeElement;\n }\n [\n popup.cancel.subscribe(() => this.isActiveEnd && this.input.focus()),\n popup.onFocus.subscribe(() => this.toggleActiveClass(this.isActiveEnd)),\n popup.onBlur.subscribe(() => this.deactivate())\n ].map(s => this.popupSubscriptions.add(s));\n }\n unsubscribePopup() {\n this.popupSubscriptions.unsubscribe();\n this.popupSubscriptions = new Subscription();\n }\n activate() {\n this.dateRangeService.setActiveRangeEnd(this.activeRangeEnd);\n this.dateRangeService.activatePopup();\n }\n deactivate() {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.updateRange(this.input.value, 'blur');\n if (this.dateRangeService.hasActiveComponent()) {\n return;\n }\n this.toggleActiveClass(false);\n this.zone.run(() => this.dateRangeService.deactivatePopup());\n });\n });\n }\n updateRange(value, correctOn) {\n const range = this.getRange(value, correctOn);\n if (range) {\n this.focusActiveDate();\n this.dateRangeService.setRange(range);\n }\n }\n togglePopup({ altKey, keyCode }) {\n if (keyCode === Keys.Escape) {\n this.dateRangeService.cancelPopup();\n }\n else if (altKey && keyCode === Keys.ArrowDown) {\n this.dateRangeService.activatePopup();\n }\n }\n focusActiveDate() {\n if (this.input.value && this.isActiveEnd) {\n this.dateRangeService.setFocusedDate(cloneDate(this.input.value));\n }\n }\n toggleActiveClass(show) {\n const action = show ? 'addClass' : 'removeClass';\n const nativeElement = this.element.nativeElement;\n if (nativeElement && nativeElement.querySelector) {\n this.renderer[action](nativeElement, 'k-focus');\n }\n }\n}\n\n/**\n * A directive which manages the end range selection.\n *\n * > You can use the DateRangeEndInputDirective only with a DateInput component.\n */\nclass DateRangeEndInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('end', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus. When enabled,\n * the calendar navigates to the value of the focused input. Otherwise, the calendar displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerEndInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { start } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && isPresent(value) && value < start;\n return shouldClamp ? clampRange(value) : { start, end: cloneDate(value) };\n }\n updateInputValue(range) {\n const { end } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, end) || !isInRange(end, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(end));\n this.dateInput.notify();\n }\n}\nDateRangeEndInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeEndInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeEndInputDirective, selector: \"[kendoDateRangeEndInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeEndInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the start selection range.\n *\n * > You can use the DateRangeStartInputDirective only with a DateInput component.\n */\nclass DateRangeStartInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('start', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus.\n * When enabled, the calendar navigates to the value of the focused input. Otherwise, the calendar\n * displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerStartInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { end } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && end && value > end;\n return shouldClamp ? clampRange(value) : { start: cloneDate(value), end };\n }\n updateInputValue(range) {\n const { start } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, start) || !isInRange(start, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(start));\n this.dateInput.notify();\n }\n}\nDateRangeStartInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeStartInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeStartInputDirective, selector: \"[kendoDateRangeStartInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeStartInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `HeaderComponent`—The component that renders the UI for vertical navigation.\n * - `ViewComponent`—The component that renders the active Calendar view.\n */\nclass CalendarCommonModule {\n}\nCalendarCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, declarations: [KForOf,\n HeaderComponent,\n ViewComponent], imports: [CommonModule, EventsModule], exports: [KForOf,\n HeaderComponent,\n ViewComponent] });\nCalendarCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n exports: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n */\nclass TemplatesModule {\n}\nTemplatesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTemplatesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, declarations: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective], exports: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective] });\nTemplatesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ],\n exports: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ]\n }]\n }] });\n\n/**\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MultiViewCalendar module\n * import { MultiViewCalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MultiViewCalendarModule], // import MultiViewCalendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n */\nclass MultiViewCalendarModule {\n}\nMultiViewCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiViewCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, declarations: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent], imports: [CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule], exports: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule] });\nMultiViewCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent\n ],\n exports: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ],\n providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$3 = [\n VirtualizationComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Virtualization component.\n */\nclass VirtualizationModule {\n}\nVirtualizationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nVirtualizationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, declarations: [VirtualizationComponent], imports: [CommonModule], exports: [VirtualizationComponent] });\nVirtualizationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$3],\n exports: [COMPONENT_DIRECTIVES$3],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendar module\n * import { CalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarModule], // import Calendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, declarations: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent], imports: [CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule], exports: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent\n ],\n exports: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ],\n providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CalendarModule`—The calendar module.\n * - `MultiViewCalendarModule`—The multi-view calendar module.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendars module\n * import { CalendarsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarsModule], // import the Calendars module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarsModule {\n}\nCalendarsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [CalendarModule,\n MultiViewCalendarModule], exports: [CalendarModule,\n MultiViewCalendarModule] });\nCalendarsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [[\n CalendarModule,\n MultiViewCalendarModule\n ], CalendarModule,\n MultiViewCalendarModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n CalendarModule,\n MultiViewCalendarModule\n ],\n imports: [\n CalendarModule,\n MultiViewCalendarModule\n ]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateInputCustomMessagesComponent extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateInputCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateInputCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputCustomMessagesComponent, selector: \"kendo-dateinput-messages\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ],\n selector: 'kendo-dateinput-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateInput component.\n */\nclass DateInputModule {\n}\nDateInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, declarations: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective], imports: [CommonModule, IntlModule, EventsModule], exports: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective] });\nDateInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, imports: [[CommonModule, IntlModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n exports: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n imports: [CommonModule, IntlModule, EventsModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DatePickerCustomMessagesComponent extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDatePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DatePicker component.\n */\nclass DatePickerModule {\n}\nDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective], imports: [CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule], exports: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule] });\nDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective\n ],\n exports: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$2 = [\n DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective\n];\nconst COMPONENT_MODULES$2 = [\n MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `DateRangeComponent`—The DateRange component class.\n * - `DateRangePopupComponent`—The DateRangePopup component class.\n * - `DateRangeSelectionDirective`—The MultiviewCalendar date range selection directive.\n * - `DateRangeEndInputDirective`—The end DateInput date range selection directive.\n * - `DateRangeStartInputDirective`—The start DateInput date range selection directive.\n * - `DateRangePopupTemplateDirective`—The DateRangePopup content template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the DateRange module\n * import { DateRangeModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, DateRangeModule], // import DateRange module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateRangeModule {\n}\nDateRangeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, declarations: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective], imports: [CommonModule, MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule], exports: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective] });\nDateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, imports: [[CommonModule, COMPONENT_MODULES$2]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$2],\n exports: [COMPONENT_DIRECTIVES$2],\n imports: [CommonModule, COMPONENT_MODULES$2]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass TimePickerCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerCustomMessagesComponent, selector: \"kendo-timepicker-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent\n];\nconst COMPONENT_MODULES$1 = [\n DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule\n];\nconst providers = [\n TimePickerDOMService,\n HoursService,\n MinutesService,\n SecondsService,\n MillisecondsService,\n DayPeriodService,\n {\n provide: TOUCH_ENABLED,\n useValue: touchEnabled\n }\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TimePicker component.\n */\nclass TimePickerModule {\n}\nTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, declarations: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent], imports: [CommonModule, DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule], exports: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent] });\nTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, providers: providers, imports: [[CommonModule, ...COMPONENT_MODULES$1]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [CommonModule, ...COMPONENT_MODULES$1],\n providers: providers\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateTimePickerCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerCustomMessagesComponent, selector: \"kendo-datetimepicker-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datetimepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES = [\n DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateTimePicker component.\n */\nclass DateTimePickerModule {\n}\nDateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, declarations: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule], exports: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective, TemplatesModule] });\nDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ], imports: [[\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n ...COMPONENT_DIRECTIVES\n ],\n exports: [\n ...COMPONENT_DIRECTIVES,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ],\n providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ]\n }]\n }] });\n\nconst COMPONENT_MODULES = [\n CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Date Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Date Inputs module\n * import { DateInputsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DateInputsModule], // import the Date Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateInputsModule {\n}\nDateInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule], exports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\nDateInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [COMPONENT_MODULES, CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: COMPONENT_MODULES,\n imports: COMPONENT_MODULES\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarCommonModule, CalendarComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, CalendarModule, CalendarsModule, CellTemplateDirective, CenturyCellTemplateDirective, DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective, DateInputModule, DateInputsModule, DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, DatePickerModule, DateRangeComponent, DateRangeEndInputDirective, DateRangeModule, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeService, DateRangeStartInputDirective, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, DateTimePickerModule, DecadeCellTemplateDirective, HeaderComponent, HeaderTitleTemplateDirective, HorizontalViewListComponent, KForOf, LocalizedMessagesDirective, MonthCellTemplateDirective, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarModule, NavigationComponent, NavigationItemTemplateDirective, PreventableEvent, TemplatesModule, TimeListComponent, TimePickerComponent, TimePickerCustomMessagesComponent, TimePickerLocalizedMessagesDirective, TimePickerModule, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, TimeSelectorLocalizedMessagesDirective, ViewComponent, ViewListComponent, WeekNumberCellTemplateDirective, YearCellTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, TemplateRef, Component, Input, Output, HostBinding, InjectionToken, Injectable, Inject, Optional, Directive, forwardRef, ContentChildren, ViewChildren, ViewChild, isDevMode, Renderer2, Host, HostListener, ContentChild, NgModule } from '@angular/core';\nimport * as i2 from '@angular/animations';\nimport { style, animate, keyframes, trigger, state, transition } from '@angular/animations';\nimport { of, Subscription, Subject, merge } from 'rxjs';\nimport { delay, takeUntil, take, filter, map, share, tap, switchMap } from 'rxjs/operators';\nimport * as i6 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { DraggableDirective, isChanged, isDocumentAvailable, DraggableModule } from '@progress/kendo-angular-common';\nimport { offset, scrollPosition, positionWithScroll, getDocumentElement, getWindowViewPort } from '@progress/kendo-popup-common';\nimport { Button } from '@progress/kendo-angular-buttons';\n\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isTruthy = (value) => !!value;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"esc\"] = 27] = \"esc\";\n Keys[Keys[\"tab\"] = 9] = \"tab\";\n Keys[Keys[\"enter\"] = 13] = \"enter\";\n Keys[Keys[\"space\"] = 32] = \"space\";\n Keys[Keys[\"ctrl\"] = 17] = \"ctrl\";\n Keys[Keys[\"shift\"] = 16] = \"shift\";\n Keys[Keys[\"left\"] = 37] = \"left\";\n Keys[Keys[\"up\"] = 38] = \"up\";\n Keys[Keys[\"right\"] = 39] = \"right\";\n Keys[Keys[\"down\"] = 40] = \"down\";\n})(Keys || (Keys = {}));\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ESC_KEY = 'k-dialog-wrapper k-dialog-buttongroup k-dialog-action';\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ARROWS = 'k-dialog-buttongroup';\n/**\n * @hidden\n */\nconst WINDOW_CLASSES = 'k-window';\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const validTabIndex = tabIndex !== null && !isNaN(tabIndex) && tabIndex > -1;\n let focusable = false;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n else {\n focusable = validTabIndex;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst setHTMLAttributes = (attributes, renderer, element) => {\n for (const attribute in attributes) {\n if (attribute) {\n renderer.setAttribute(element, attribute, attributes[attribute]);\n }\n }\n};\n/**\n * Receives CSS class declarations either as an object, string or array and returns an array of the class names.\n *\n * @hidden\n */\nconst parseCSSClassNames = (value) => {\n if (isObject(value)) {\n return parseObjectClassNames(value);\n }\n if (isString(value)) {\n return parseStringClassNames(value);\n }\n if (Array.isArray(value)) {\n return parseArrayClassNames(value);\n }\n};\nconst parseObjectClassNames = (value) => {\n const classes = [];\n Object.keys(value).forEach(className => {\n const currentClassName = splitStringToArray(className);\n if (value[className] && currentClassName[0]) {\n classes.push(...currentClassName);\n }\n });\n return classes;\n};\nconst parseStringClassNames = (value) => {\n const classes = [];\n const classesArray = splitStringToArray(value);\n classesArray.forEach(className => {\n classes.push(className);\n });\n return classes;\n};\nconst parseArrayClassNames = (value) => {\n const classes = [];\n value.forEach((className) => {\n const current = splitStringToArray(className);\n if (current[0]) {\n classes.push(...current);\n }\n });\n return classes;\n};\n/**\n * @hidden\n */\nconst focusableSelector = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable]'\n].join(',');\n/**\n * @hidden\n */\nconst preventDefault = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst preventOnDblClick = release => (mouseDown) => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nconst OFFSET_STYLES = ['top', 'left', 'width', 'height'];\n/**\n * @hidden\n */\nconst isString = (value) => value instanceof String || typeof value === 'string';\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && !Array.isArray(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === 'number' && isFinite(value);\n/**\n * @hidden\n */\nconst createValueWithUnit = (value) => value + (isNumber(value) ? 'px' : '');\n/**\n * @hidden\n */\nconst splitStringToArray = (value) => value.trim().replace(/\\s+/g, \" \").split(' ');\n/**\n * @hidden\n */\nconst findPrimaryButton = (buttons) => {\n for (let i = buttons.length - 1; i >= 0; i--) {\n const classList = buttons[i].classList;\n for (let j = 0; j < classList.length; j++) {\n if (classList[j].endsWith('-primary')) {\n return buttons[i];\n }\n }\n }\n};\n\n/**\n * Specifies the action buttons of the Dialog\n * ([see example]({% slug actionbuttons_dialog %})).\n */\nclass DialogActionsComponent {\n constructor(el) {\n this.el = el;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.layout = 'stretched';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n this.buttonGroupClassName = true;\n }\n /**\n * Allows the declarative specification of the actions.\n */\n set actions(value) {\n if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n else if (Array.isArray(value)) {\n this.actionsArray = value;\n }\n else {\n throw new Error('\"actions\" must be either TemplateRef or DialogAction[] instance.');\n }\n }\n get className() {\n return this.layout === 'stretched';\n }\n /**\n * @hidden\n */\n onButtonClick(action, _e) {\n this.action.emit(action);\n }\n /**\n * @hidden\n */\n buttonClass(action) {\n let classes = ['k-button k-button-md k-rounded-md'];\n const fillMode = action.fillMode ? action.fillMode : 'solid';\n const themeColor = action.themeColor ? action.themeColor : 'base';\n const cssClasses = action.cssClass ? parseCSSClassNames(action.cssClass) : [];\n classes.push(`k-button-${fillMode} k-button-${fillMode}-${themeColor}`);\n if (cssClasses.length > 0) {\n classes = classes.concat(cssClasses);\n }\n return classes.join(' ');\n }\n}\nDialogActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nDialogActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: { actions: \"actions\", layout: \"layout\" }, outputs: { action: \"action\" }, host: { properties: { \"class.k-dialog-buttongroup\": \"this.buttonGroupClassName\", \"class.k-actions\": \"this.buttonGroupClassName\", \"class.k-actions-stretched\": \"this.className\" } }, ngImport: i0, template: `\n \n \n \n {{ action.text }}\n \n \n \n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-actions',\n template: `\n \n \n \n {{ action.text }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { actions: [{\n type: Input\n }], layout: [{\n type: Input\n }], action: [{\n type: Output\n }], buttonGroupClassName: [{\n type: HostBinding,\n args: ['class.k-dialog-buttongroup']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }], className: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }] } });\n\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst DIALOG_LOCALIZATION_SERVICE = new InjectionToken('Dialog LocalizationService');\n\n/**\n * @hidden\n */\nclass TitleBarLocalizationService extends LocalizationService {\n constructor(prefix, messageService, rtl, dialogLocalization) {\n super(prefix, messageService, rtl);\n this.dialogLocalization = dialogLocalization;\n }\n get(shortKey) {\n if (this.dialogLocalization) {\n return this.dialogLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nTitleBarLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: DIALOG_LOCALIZATION_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nTitleBarLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIALOG_LOCALIZATION_SERVICE]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-dialog-messages-base\", inputs: { closeTitle: \"closeTitle\", restoreTitle: \"restoreTitle\", maximizeTitle: \"maximizeTitle\", minimizeTitle: \"minimizeTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages-base'\n }]\n }], propDecorators: { closeTitle: [{\n type: Input\n }], restoreTitle: [{\n type: Input\n }], maximizeTitle: [{\n type: Input\n }], minimizeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDialogLocalizedMessages],\n [kendoWindowLocalizedMessages],\n [kendoDialogTitleBarLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI DialogTitleBar component for Angular]({% slug api_dialog_dialogtitlebarcomponent %}).\n *\n * It is used as part of the Dialog content when the component is created dynamically by using an [Angular service]({% slug service_dialog %}).\n */\nclass DialogTitleBarComponent {\n constructor(zone, hostElement, localizationService) {\n this.zone = zone;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n /**\n * Fires when the close button of the title-bar is clicked.\n */\n this.close = new EventEmitter();\n }\n get className() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n ngAfterViewInit() {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n const element = this.hostElement.nativeElement.querySelector('.k-dialog-title');\n element.setAttribute('id', this.id);\n });\n }\n /**\n * @hidden\n */\n onCloseClick(e) {\n e.preventDefault();\n const eventArgs = new PreventableEvent();\n this.close.emit(eventArgs);\n }\n}\nDialogTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDialogTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: { id: \"id\", closeTitle: \"closeTitle\" }, outputs: { close: \"close\" }, host: { properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\" } }, providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], ngImport: i0, template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-titlebar',\n providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { close: [{\n type: Output\n }], id: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }] } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dialog',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654175123,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Indicates that the **Close** button is clicked. Used when the results from\n * the Dialogs that are opened through `DialogService` are filtered\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogCloseResult {\n}\n\n/**\n * @hidden\n */\nfunction animations(duration, direction, animationType) {\n switch (animationType) {\n case 'slide':\n const translate = direction === 'left' || direction === 'right' ? 'translateX' : 'translateY';\n const start = direction === 'right' || direction === 'down' ? -100 : 100;\n const end = 0;\n return [\n style({ transform: `${translate}(${start}%)` }),\n animate(`${duration}ms ease-in`, style({ transform: `${translate}(${end}%)` }))\n ];\n case 'expand':\n const scale = direction === 'up' || direction === 'down' ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === 'down') {\n origin = 'top';\n }\n else if (direction === 'left') {\n origin = 'right';\n }\n else if (direction === 'right') {\n origin = 'left';\n }\n else {\n origin = 'bottom';\n }\n return [\n style({ transform: `${scale}(${startScale})`, transformOrigin: origin }),\n animate(`${duration}ms ease-in`, style({ transform: `${scale}(${endScale})` }))\n ];\n case 'zoom':\n const startZoom = 0;\n const endZoom = 1;\n return [\n animate(duration, keyframes([\n style({ transform: `scale(${startZoom})` }),\n style({ transform: `scale(${endZoom})` })\n ]))\n ];\n case 'fade':\n const startFade = 0;\n const endFade = 1;\n return [\n animate(duration, keyframes([\n style({ opacity: `${startFade}` }),\n style({ opacity: `${endFade}` })\n ]))\n ];\n case 'translate':\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n default:\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n }\n}\n\n/**\n * @hidden\n */\nconst createPlayer = (builder, animation, animatedElement) => {\n const factory = builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n player.destroy();\n player = null;\n }\n });\n return player;\n};\n\n/**\n * @hidden\n */\nconst animateContent = (animation, defAnimationConfig, animatedElement, builder) => {\n let animationConfig = defAnimationConfig;\n if (typeof animation !== 'boolean') {\n animationConfig = animation;\n animationConfig.duration = animationConfig.duration ? animationConfig.duration : defAnimationConfig.duration;\n }\n const animationSpecs = animations(animationConfig.duration, animationConfig.direction, animationConfig.type);\n const player = createPlayer(builder, animationSpecs, animatedElement);\n player.play();\n};\n\nconst DEFAULT_ANIMATION_CONFIG = { duration: 300, type: 'translate' };\n/**\n * Represents the [Kendo UI Dialog component for Angular]({% slug overview_dialog_dialogs %}).\n */\nclass DialogComponent {\n constructor(wrapper, renderer, localization, cdr, ngZone, builder) {\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.builder = builder;\n /**\n * Specifies the layout of the action buttons in the Dialog.\n * This option is only applicable if the action buttons are specified through the `actions` options.\n *\n * @default 'stretched'\n */\n this.actionsLayout = 'stretched';\n /**\n * Configures the Dialog opening animation ([see example]({% slug animations_dialog %})).\n * By default the animation type is set to `translate` and its duration is `300ms`.\n *\n * @default true\n */\n this.animation = true;\n /**\n * @hidden\n */\n this.titleId = null;\n /**\n * @hidden\n */\n this.contentId = null;\n /**\n * Fires when the user clicks an action button of the Dialog.\n * The event is fired only when the action buttons are specified through the `actions` options.\n */\n this.action = new EventEmitter();\n /**\n * Fires when the user clicks the **Close** button of the Dialog or the **ESC** key.\n */\n this.close = new EventEmitter();\n this.tabIndex = 0;\n this.subscriptions = [];\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscriptions.push(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.titleId = this.generateTitleId();\n this.contentId = this.generateContentId();\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.wrapper.nativeElement);\n const el = this.wrapper.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir && dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex && tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n get dir() {\n return this.direction;\n }\n ngAfterContentInit() {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-describedby', this.contentId);\n if (this.titlebarContent.first) {\n this.titlebarContent.first.id = this.titleId;\n }\n else {\n this.subscriptions.push(this.titlebarContent.changes.subscribe(() => {\n if (isPresent(this.titlebarContent.first)) {\n this.titlebarContent.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n }\n ngAfterViewInit() {\n this.handleInitialFocus();\n this.bubble('close', this.titlebarView.first);\n this.bubble('action', this.actionsView);\n if (this.titlebarView.first || this.titlebarContent.first) {\n //Needed for Dialogs created via service\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n }\n else {\n this.subscriptions.push(this.titlebarView.changes.subscribe(() => {\n if (isPresent(this.titlebarView.first)) {\n this.titlebarView.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarView.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n this.initDomEvents();\n }\n ngOnInit() {\n if (this.animation) {\n animateContent(this.animation, DEFAULT_ANIMATION_CONFIG, this.dialog.nativeElement, this.builder);\n }\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'title');\n this.cdr.detectChanges();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n }\n /**\n * Focuses the wrapper of the Dialog component.\n */\n focus() {\n const wrapper = this.wrapper.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n initDomEvents() {\n if (!this.wrapper) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n const target = event.target;\n const parent = target.parentElement;\n if (hasClasses(target, DIALOG_ELEMENTS_HANDLING_ESC_KEY) || hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ESC_KEY)) {\n if (event.keyCode === Keys.esc) {\n this.ngZone.run(() => {\n this.close.emit(new DialogCloseResult());\n });\n }\n }\n if (hasClasses(target, 'k-button') && hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ARROWS) &&\n (event.keyCode === Keys.left || event.keyCode === Keys.right)) {\n this.ngZone.run(() => {\n this.handleActionButtonFocus(parent, event.keyCode);\n });\n }\n if (event.keyCode === Keys.tab) {\n this.ngZone.run(() => {\n this.keepFocusWithinComponent(target, event);\n });\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.wrapper.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n /**\n * @hidden\n */\n handleInitialFocus() {\n const wrapper = this.wrapper.nativeElement;\n const primaryButton = this.findPrimary(wrapper);\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else if (this.shouldFocusPrimary(primaryButton)) {\n primaryButton.focus();\n }\n else {\n wrapper.focus();\n }\n }\n /**\n * @hidden\n */\n findPrimary(wrapper) {\n const actionBtns = wrapper.querySelectorAll('.k-actions .k-button');\n return findPrimaryButton(actionBtns);\n }\n /**\n * @hidden\n */\n handleActionButtonFocus(parent, key) {\n const focusableActionButtons = this.getAllFocusableChildren(parent);\n for (let i = 0; i < focusableActionButtons.length; i++) {\n const current = focusableActionButtons[i];\n if (current === document.activeElement) {\n if (key === Keys.left && i > 0) {\n focusableActionButtons[i - 1].focus();\n break;\n }\n if (key === Keys.right && i < focusableActionButtons.length - 1) {\n focusableActionButtons[i + 1].focus();\n break;\n }\n }\n }\n }\n /**\n * @hidden\n */\n keepFocusWithinComponent(target, event) {\n const wrapper = this.wrapper.nativeElement;\n const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n shouldFocusPrimary(el) {\n return isPresent(el) && isFocusable(el);\n }\n /**\n * @hidden\n */\n getAllFocusableChildren(parent) {\n return parent.querySelectorAll(focusableSelector);\n }\n /**\n * @hidden\n */\n getFirstAndLastFocusable(parent) {\n const all = this.getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n }\n /**\n * @hidden\n */\n generateTitleId() {\n return 'kendo-dialog-title-' + Math.ceil(Math.random() * 1000000).toString();\n }\n /**\n * @hidden\n */\n generateContentId() {\n return 'kendo-dialog-content-' + Math.ceil(Math.random() * 1000000).toString();\n }\n get wrapperClass() {\n return true;\n }\n get styles() {\n const styles = {};\n if (this.width) {\n styles.width = createValueWithUnit(this.width);\n }\n if (this.height) {\n styles.height = createValueWithUnit(this.height);\n }\n if (this.minWidth) {\n styles.minWidth = createValueWithUnit(this.minWidth);\n }\n if (this.maxWidth) {\n styles.maxWidth = createValueWithUnit(this.maxWidth);\n }\n if (this.minHeight) {\n styles.minHeight = createValueWithUnit(this.minHeight);\n }\n if (this.maxHeight) {\n styles.maxHeight = createValueWithUnit(this.maxHeight);\n }\n return styles;\n }\n bubble(eventName, component) {\n if (component) {\n const emit = e => this[eventName].emit(e);\n const s = component[eventName].subscribe(emit);\n this.subscriptions.push(s);\n }\n }\n}\nDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogComponent, selector: \"kendo-dialog\", inputs: { actions: \"actions\", actionsLayout: \"actionsLayout\", autoFocusedElement: \"autoFocusedElement\", title: \"title\", width: \"width\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", height: \"height\", minHeight: \"minHeight\", maxHeight: \"maxHeight\", animation: \"animation\" }, outputs: { action: \"action\", close: \"close\" }, host: { properties: { \"attr.dir\": \"this.dir\", \"attr.tabIndex\": \"this.tabIndex\", \"class.k-dialog-wrapper\": \"this.wrapperClass\" } }, providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], queries: [{ propertyName: \"titlebarContent\", predicate: DialogTitleBarComponent }], viewQueries: [{ propertyName: \"actionsView\", first: true, predicate: DialogActionsComponent, descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true, static: true }, { propertyName: \"titlebarView\", predicate: DialogTitleBarComponent, descendants: true }], exportAs: [\"kendoDialog\"], ngImport: i0, template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `, isInline: true, components: [{ type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ],\n exportAs: 'kendoDialog',\n providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n selector: 'kendo-dialog',\n template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.AnimationBuilder }]; }, propDecorators: { actions: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], maxHeight: [{\n type: Input\n }], animation: [{\n type: Input\n }], action: [{\n type: Output\n }], close: [{\n type: Output\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], titlebarContent: [{\n type: ContentChildren,\n args: [DialogTitleBarComponent, { descendants: false }]\n }], titlebarView: [{\n type: ViewChildren,\n args: [DialogTitleBarComponent]\n }], actionsView: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }], dialog: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-dialog-wrapper']\n }] } });\n\n/**\n * Holds references to the object instance and published events of the Dialog.\n * Controls the Dialogs that were opened through the `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogRef {\n}\n\n/**\n * The base class which will be extended by a component that is provided as content through `content`\n * ([see example]({% slug service_dialog %}#toc-passing-title-content-and-actions-as-a-single-component)).\n */\nclass DialogContentBase {\n constructor(dialog) {\n this.dialog = dialog;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n if (this.dialogTitleBar) {\n // when opening component inside dialog with service AND the component has defined its own titlebar\n this.dialogTitleBar.close.pipe(filter((e) => !e.isDefaultPrevented())).subscribe(() => {\n this.dialog.close();\n });\n }\n if (this.dialogActions) {\n if (this.dialogActions.actions) {\n this.dialogActions.action.subscribe(action => this.dialog.dialog.instance.action.emit(action));\n }\n }\n }\n}\nDialogContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, deps: [{ token: DialogRef }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContentBase, viewQueries: [{ propertyName: \"dialogTitleBar\", first: true, predicate: DialogTitleBarComponent, descendants: true }, { propertyName: \"dialogActions\", first: true, predicate: DialogActionsComponent, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DialogRef }]; }, propDecorators: { dialogTitleBar: [{\n type: ViewChild,\n args: [DialogTitleBarComponent, { static: false }]\n }], dialogActions: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass DialogContainerService {\n set container(container) {\n DialogContainerService.container = container;\n }\n get container() {\n return DialogContainerService.container;\n }\n}\nDialogContainerService.container = null;\nDialogContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDialogContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The settings for the Dialog actions when the Dialog is opened through `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogAction {\n}\n\n/**\n * The settings that can be used when the Dialog is opened through `DialogService`.\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogSettings {\n}\n\n// eslint-disable max-line-length\nconst isNotComponent$1 = (component) => isString(component) || component instanceof TemplateRef;\nclass DialogInjector {\n constructor(getDialogRef, parentInjector) {\n this.getDialogRef = getDialogRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === DialogRef) {\n return this.getDialogRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Dialog windows dynamically\n * ([see example]({% slug service_dialog %})).\n */\nclass DialogService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Dialog window. Requires an element in the application that uses the\n * [`kendoDialogContainer`]({% slug api_dialog_dialogcontainerdirective %}) directive.\n * Created Dialogs will be mounted in the DOM directly after that element.\n *\n * @param {DialogAction} options - The options that define the Dialog.\n * @returns {DialogRef} - A reference to the Dialog object and the convenience properties.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private dialogService: DialogService ) {}\n *\n * public open() {\n * var dialog = this.dialogService.open({\n * title: \"Please confirm\",\n * content: \"Are you sure?\",\n * actions: [\n * { text: \"No\" },\n * { text: \"Yes\", themeColor: 'primary' }\n * ]\n * });\n *\n * dialog.result.subscribe((result) => {\n * if (result instanceof DialogCloseResult) {\n * console.log(\"close\");\n * } else {\n * console.log(\"action\", result);\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(options) {\n const factory = this.resolver.resolveComponentFactory(DialogComponent);\n const container = options.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`\nCannot attach dialog to the page.\nAdd an element that uses the kendoDialogContainer directive, or set the 'appendTo' property.\nSee https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/.\n `);\n }\n // create DialogRef to (1) pass as result, (2) provide through injector\n const dialogRef = {\n close: () => {\n /* noop */\n },\n content: null,\n dialog: null,\n result: null\n };\n return this.initializeDialog(options.content, factory, container, dialogRef, options);\n }\n initializeDialog(component, factory, container, dialogRef, options) {\n const content = this.contentFrom(component, container, dialogRef);\n const dialog = container.createComponent(factory, undefined, undefined, content.nodes);\n dialogRef.dialog = dialog;\n dialog.changeDetectorRef.markForCheck();\n // copy @Input options to dialog instance\n this.applyOptions(dialog.instance, options);\n // create close handler and result stream\n const apiClose = new Subject();\n const close = (e) => {\n if (e instanceof PreventableEvent) {\n e = new DialogCloseResult();\n }\n apiClose.next(e || new DialogCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n dialog.destroy();\n };\n const result = merge(apiClose, \n // triggered when the titlebar or actions are defined in DialogSettings\n merge(dialog.instance.close, dialog.instance.action).pipe(map(e => (e instanceof PreventableEvent ? new DialogCloseResult() : e)), filter(e => {\n if (options.preventAction) {\n // add dialogRef only when using component\n const dialogRefParameter = isNotComponent$1(component) ? undefined : dialogRef;\n return !options.preventAction(e, dialogRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internaly and the user may subscribe to get a close result - dialog.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n dialogRef.close = close;\n dialogRef.result = result;\n if (component && isDevMode()) {\n const hasContentTitle = content.nodes[0] && content.nodes[0].length > 0;\n const hasContentActions = content.nodes[2] && content.nodes[2].length > 0;\n const multipleTitles = options.title && hasContentTitle;\n const multipleActions = options.actions && hasContentActions;\n if (component.prototype instanceof DialogContentBase) {\n // content component extends DialogContentBase\n if (multipleTitles || multipleActions) {\n console.warn(`\n Multiple Title and/or Actions configurations detected.\n When using a component as content, provide the title and actions either in the component's markup\n or via the title and actions properties of the DialogSettings object, but not both.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n else {\n if (hasContentTitle || hasContentActions) {\n console.warn(`\n When Title and/or Actions markup is provided in content component's template,\n the component needs to inherit the DialogContentBase class to ensure that close and result events are properly hooked.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n }\n return dialogRef;\n }\n applyOptions(instance, options) {\n instance.title = options.title;\n instance.actions = options.actions;\n instance.actionsLayout = options.actionsLayout || 'stretched';\n instance.width = options.width;\n instance.minWidth = options.minWidth;\n instance.maxWidth = options.maxWidth;\n instance.height = options.height;\n instance.minHeight = options.minHeight;\n instance.maxHeight = options.maxHeight;\n instance.autoFocusedElement = options.autoFocusedElement;\n instance.closeTitle = options.closeTitle;\n instance.cssClass = options.cssClass;\n instance.htmlAttributes = options.htmlAttributes;\n instance.animation = options.animation !== undefined ? options.animation : true;\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n }\n contentFrom(content, container, dialogRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let titleNodes = [];\n let actionNodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n // Component\n const injector = new DialogInjector(() => dialogRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n titleNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-titlebar'));\n nodes = [componentRef.location.nativeElement];\n actionNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-actions'));\n dialogRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n titleNodes,\n nodes,\n actionNodes // \n ]\n };\n }\n}\nDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: DialogContainerService, decorators: [{\n type: Inject,\n args: [DialogContainerService]\n }] }]; } });\n\n/**\n * @hidden\n */\nlet newZIndex = 10002;\n/**\n * @hidden\n */\nconst DEFAULT_OPTIONS = {\n draggable: true,\n height: null,\n left: null,\n minHeight: 100,\n minWidth: 120,\n position: 'absolute',\n resizable: true,\n state: 'default',\n top: null,\n width: null\n};\n/**\n * @hidden\n */\nconst createMoveStream = (el, ev) => mouseDown => {\n return el.kendoDrag\n .pipe(takeUntil(el.kendoRelease.pipe(tap(() => { ev.emit(); }))), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n })));\n};\n/**\n * @hidden\n */\nclass DragResizeService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.close = new EventEmitter();\n this.focus = new EventEmitter();\n this.change = new EventEmitter();\n this.stateChange = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.dragEnd = new EventEmitter();\n this.resizeStart = new EventEmitter();\n this.resizeEnd = new EventEmitter();\n this.options = Object.assign({}, DEFAULT_OPTIONS);\n this.lastAction = null;\n this.subscriptions = new Subscription();\n this.dragSubscription = new Subscription();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.dragSubscription) {\n this.dragSubscription.unsubscribe();\n }\n }\n init(el) {\n const state = this.options.state;\n let options = this.options;\n this.window = el;\n if (state !== 'default') {\n this.restoreOptions = Object.assign({}, options);\n }\n if (state === 'minimized') {\n options.height = 0;\n options.minHeight = 0;\n }\n if (state === 'maximized') {\n options.position = 'fixed';\n }\n }\n onDrag(el) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startPosition;\n let dragStarted;\n this.dragSubscription = el.kendoPress\n .pipe(tap((ev) => {\n if (!ev.isTouch) {\n preventDefault(ev);\n }\n this.focus.emit();\n startPosition = this.currentPosition();\n dragStarted = false;\n }), switchMap(createMoveStream(el, this.dragEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!dragStarted) {\n this.ensureWidth();\n this.dragStart.emit();\n dragStarted = true;\n }\n this.handleDrag({\n originalX, originalY,\n pageX, pageY, startPosition\n });\n });\n }));\n }\n handleDrag({ originalX, originalY, pageX, pageY, startPosition }) {\n this.options.left = startPosition.x + pageX - originalX;\n this.options.top = startPosition.y + pageY - originalY;\n if (this.options.state === 'minimized' && isPresent(this.restoreOptions)) {\n this.restoreOptions.left = this.options.left;\n this.restoreOptions.top = this.options.top;\n }\n this.change.emit({\n left: startPosition.x + pageX - originalX,\n top: startPosition.y + pageY - originalY\n });\n }\n onResize(handle, direction) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startOffsetAndPosition;\n let resizeStarted = false;\n handle.kendoPress.pipe(tap((ev) => {\n preventDefault(ev);\n this.focus.emit();\n startOffsetAndPosition = this.currentOffsetAndPosition();\n resizeStarted = false;\n }), switchMap(createMoveStream(handle, this.resizeEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!resizeStarted) {\n this.resizeStart.emit(direction);\n resizeStarted = true;\n }\n let deltaX = pageX - originalX;\n let deltaY = pageY - originalY;\n this.handleResize(startOffsetAndPosition, direction, deltaX, deltaY);\n });\n }));\n }\n handleResize(initial, dir, deltaX, deltaY) {\n const old = this.options;\n let ev = {};\n if (dir.indexOf('e') >= 0) {\n const newWidth = initial.width + deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth) {\n ev.width = newWidth;\n }\n }\n if (dir.indexOf('n') >= 0) {\n const newHeight = initial.height - deltaY;\n const newTop = initial.y + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight && newTop !== old.top) {\n ev.height = newHeight;\n ev.top = newTop;\n }\n }\n if (dir.indexOf('s') >= 0) {\n const newHeight = initial.height + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight) {\n ev.height = newHeight;\n }\n }\n if (dir.indexOf('w') >= 0) {\n const newLeft = initial.x + deltaX;\n const newWidth = initial.width - deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth && newLeft !== old.left) {\n ev.width = newWidth;\n ev.left = newLeft;\n }\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.options[style] = ev[style];\n }\n });\n this.change.emit(ev);\n }\n }\n restoreAction() {\n this.lastAction = 'restore';\n this.defaultState();\n }\n defaultState() {\n if (isPresent(this.restoreOptions)) {\n this.options = Object.assign({}, this.restoreOptions);\n }\n this.options.state = 'default';\n this.stateChange.emit('default');\n }\n storeOptions() {\n this.restoreOptions = Object.assign({}, this.options);\n }\n maximizeAction() {\n this.lastAction = 'maximize';\n this.maximizeState();\n }\n maximizeState() {\n this.storeOptions();\n const wnd = this.windowViewPort;\n this.options = Object.assign({}, this.options, {\n height: wnd.height,\n left: 0,\n position: 'fixed',\n state: 'maximized',\n top: 0,\n width: wnd.width\n });\n this.stateChange.emit('maximized');\n }\n minimizeAction() {\n this.lastAction = 'minimize';\n this.minimizeState();\n }\n minimizeState() {\n this.storeOptions();\n this.options = Object.assign({}, this.options, {\n height: null,\n minHeight: 0,\n state: 'minimized'\n });\n this.stateChange.emit('minimized');\n }\n /**\n * Handles manual changes of the 'state' property.\n * Required to distinguish them from action clicks.\n */\n applyManualState() {\n const state = this.options.state;\n switch (state) {\n case 'default':\n this.clearHeight();\n this.defaultState();\n break;\n case 'maximized':\n this.clearHeight();\n this.maximizeState();\n break;\n case 'minimized':\n this.minimizeState();\n break;\n default:\n break;\n }\n }\n closeAction() {\n this.close.emit();\n }\n ensureWidth() {\n const windowOffset = offset(this.window.nativeElement);\n if (!isPresent(this.options.width)) {\n this.options.width = windowOffset.width;\n this.change.emit({ width: windowOffset.width });\n }\n }\n clearHeight() {\n if (this.options.height === 0) {\n delete this.options.height;\n }\n if (this.options.minHeight === 0) {\n delete this.options.minHeight;\n }\n }\n center() {\n if (this.options.state === 'maximized') {\n return;\n }\n let scroll = scrollPosition(this.window.nativeElement);\n let wnd = this.windowViewPort;\n let wrapper = offset(this.window.nativeElement);\n let ev = {};\n if (!isPresent(this.options.left)) {\n this.options.left = scroll.x + Math.max(0, (wnd.width - wrapper.width) / 2);\n ev.left = this.options.left;\n }\n if (!isPresent(this.options.top)) {\n this.options.top = scroll.y + Math.max(0, (wnd.height - wrapper.height) / 2);\n ev.top = this.options.top;\n }\n this.change.emit(ev);\n }\n currentOffsetAndPosition() {\n const o = this.options;\n const off = offset(this.window.nativeElement);\n return Object.assign({}, this.currentPosition(), {\n height: o.height ? o.height : off.height,\n width: o.width ? o.width : off.width\n });\n }\n currentPosition() {\n const o = this.options;\n if (!o.top || !o.left) {\n this.setPosition();\n }\n return {\n x: this.options.left,\n y: this.options.top\n };\n }\n setPosition() {\n const wrapper = positionWithScroll(this.window.nativeElement, getDocumentElement(this.window.nativeElement));\n this.options.left = wrapper.left;\n this.options.top = wrapper.top;\n }\n setRestoreOption(style, value) {\n if (isPresent(this.restoreOptions)) {\n this.restoreOptions[style] = value;\n }\n }\n get nextPossibleZIndex() {\n return newZIndex;\n }\n get nextZIndex() {\n return newZIndex++;\n }\n get windowViewPort() {\n return getWindowViewPort(this.window.nativeElement);\n }\n}\nDragResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nDragResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass ResizeHandleDirective {\n constructor(draggable, el, renderer, service) {\n this.draggable = draggable;\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.subscriptions = new Subscription();\n }\n get hostClass() {\n return true;\n }\n ngOnInit() {\n this.setDisplay();\n this.renderer.addClass(this.el.nativeElement, 'k-resize-' + this.direction);\n this.subscriptions.add(of(this.draggable).subscribe(handle => {\n this.service.onResize(handle, this.direction);\n }));\n this.subscriptions.add(this.service.resizeStart.subscribe((dir) => {\n if (dir !== this.direction) {\n this.setDisplay('none');\n }\n }));\n this.subscriptions.add(this.service.dragStart.subscribe(() => {\n this.setDisplay('none');\n }));\n this.subscriptions.add(merge(this.service.resizeEnd, this.service.dragEnd).subscribe(() => {\n this.setDisplay('block');\n }));\n this.subscriptions.add(this.service.stateChange.subscribe((state) => {\n this.setDisplay(state === 'default' ? 'block' : 'none');\n }));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n setDisplay(value = 'block') {\n this.renderer.setStyle(this.el.nativeElement, 'display', this.service.options.state === 'default' ? value : 'none');\n }\n}\nResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }], target: i0.ɵɵFactoryTarget.Directive });\nResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: { direction: \"direction\" }, host: { properties: { \"class.k-resize-handle\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowResizeHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }]; }, propDecorators: { direction: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-resize-handle']\n }] } });\n\nclass WindowTitleBarComponent {\n constructor(el, service, ngZone) {\n this.el = el;\n this.ngZone = ngZone;\n this.service = service;\n }\n ngOnInit() {\n this.dragDirective = new DraggableDirective(this.el, this.ngZone);\n this.dragDirective.ngOnInit();\n if (this.isDraggable) {\n this.subscribeDrag();\n }\n this.subscribeStateChange();\n }\n ngOnDestroy() {\n this.dragDirective.ngOnDestroy();\n this.unsubscribeDrag();\n this.unsubscribeState();\n }\n /**\n * @hidden\n */\n subscribeDrag() {\n this.unsubscribeDrag();\n this.dragSubscription = of(this.dragDirective).subscribe(titleBar => {\n this.service.onDrag(titleBar);\n });\n }\n /**\n * @hidden\n */\n subscribeStateChange() {\n this.stateSubscription = this.service.stateChange.subscribe((state) => {\n if (this.service.options.draggable) {\n if (state === 'maximized') {\n this.unsubscribeDrag();\n }\n else {\n this.subscribeDrag();\n }\n }\n });\n }\n /**\n * @hidden\n */\n unsubscribeDrag() {\n if (this.dragSubscription) {\n this.service.dragSubscription.unsubscribe();\n this.dragSubscription.unsubscribe();\n this.dragSubscription = null;\n }\n }\n /**\n * @hidden\n */\n unsubscribeState() {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n this.stateSubscription = null;\n }\n }\n get className() {\n return true;\n }\n get touchAction() {\n if (this.isDraggable) {\n return 'none';\n }\n }\n /**\n * @hidden\n */\n handle(ev) {\n const target = ev.target;\n const state = this.service.options.state;\n if (!hasClasses(target, 'k-icon') && !isFocusable(target, false) && this.service.options.resizable) {\n if (state === 'default') {\n this.service.maximizeAction();\n }\n else if (state === 'maximized') {\n this.service.restoreAction();\n }\n }\n }\n get isDraggable() {\n const options = this.service.options;\n return options.draggable && options.state !== 'maximized';\n }\n}\nWindowTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, deps: [{ token: i0.ElementRef }, { token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nWindowTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: { template: \"template\" }, host: { listeners: { \"dblclick\": \"handle($event)\" }, properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\", \"style.touch-action\": \"this.touchAction\" } }, ngImport: i0, template: `\n \n \n
\n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-window-titlebar',\n template: `\n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragResizeService }, { type: i0.NgZone }]; }, propDecorators: { template: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }], handle: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(window, ngZone) {\n this.window = window;\n this.ngZone = ngZone;\n }\n process(ev) {\n const key = ev.keyCode;\n switch (key) {\n case Keys.up:\n case Keys.down:\n case Keys.left:\n case Keys.right: {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.handleArrow(key, ev);\n });\n break;\n }\n case Keys.esc:\n this.ngZone.run(() => {\n this.handleEscape();\n });\n break;\n default:\n break;\n }\n }\n handleArrow(key, ev) {\n const options = this.window.options;\n if (ev.altKey) {\n this.handleStateChange(key, options.state);\n return;\n }\n if ((ev.ctrlKey || ev.metaKey) && options.state === 'default') {\n this.handleResize(key);\n }\n else {\n this.handleDrag(key);\n }\n }\n handleEscape() {\n this.window.closeAction();\n }\n handleDrag(key) {\n let options = this.window.options;\n if (!options.draggable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let restoreOptions = this.window.restoreOptions;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n ev.left = offset.x + delta;\n options.left = ev.left;\n break;\n }\n case Keys.up:\n case Keys.down: {\n ev.top = offset.y + delta;\n options.top = ev.top;\n break;\n }\n default:\n break;\n }\n if (options.state === 'minimized' && isPresent(restoreOptions)) {\n restoreOptions.left = options.left;\n restoreOptions.top = options.top;\n }\n this.window.change.emit(ev);\n }\n handleResize(key) {\n const options = this.window.options;\n if (!options.resizable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let newWidth;\n let newHeight;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n newWidth = offset.width + delta;\n if (newWidth !== options.width && newWidth >= options.minWidth) {\n ev.width = newWidth;\n }\n break;\n }\n case Keys.up:\n case Keys.down: {\n newHeight = offset.height + delta;\n if (newHeight !== options.height && newHeight >= options.minHeight) {\n ev.height = newHeight;\n }\n break;\n }\n default:\n break;\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.window.options[style] = ev[style];\n }\n });\n this.window.change.emit(ev);\n }\n }\n handleStateChange(key, state) {\n if ((state === 'minimized' && key === Keys.up) ||\n (state === 'maximized' && key === Keys.down)) {\n this.window.restoreAction();\n return;\n }\n if (state === 'default') {\n if (key === Keys.up) {\n this.window.maximizeAction();\n }\n else if (key === Keys.down) {\n this.window.minimizeAction();\n }\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DragResizeService }, { type: i0.NgZone }]; } });\n\nclass WindowMinimizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-minimize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.minimizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMinimizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMinimizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMinimizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMinimizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMinimizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowMaximizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-maximize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.maximizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMaximizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMaximizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMaximizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMaximizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMaximizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowRestoreActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-restore';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.restoreAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'none' : 'inline-flex';\n }\n}\nWindowRestoreActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowRestoreActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowRestoreAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowRestoreAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowRestoreAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowCloseActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'close';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.closeAction();\n }\n }\n}\nWindowCloseActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowCloseActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowCloseAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowCloseAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowCloseAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * Represents the [Kendo UI Window component for Angular]({% slug overview_window_dialogs %}).\n */\nclass WindowComponent {\n constructor(el, renderer, service, navigation, ngZone, localization) {\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.navigation = navigation;\n this.ngZone = ngZone;\n this.localization = localization;\n /**\n * Specifies if the content of the component is persisted in the DOM when minimized.\n * @default false\n */\n this.keepContent = false;\n /**\n * Fires when the user starts to move the Window.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the Window was moved by the user.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts to resize the Window.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Fires when the Window was resized by the user.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * Fires when the user closes the Window.\n */\n this.close = new EventEmitter();\n /**\n * Fires when the `width` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new width. Allows a two-way binding of the `width` property.\n */\n this.widthChange = new EventEmitter();\n /**\n * Fires when the `height` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new height. Allows a two-way binding of the `height` property.\n */\n this.heightChange = new EventEmitter();\n /**\n * Fires when the `top` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new top offset. Allows a two-way binding of the `top` property.\n */\n this.topChange = new EventEmitter();\n /**\n * Fires when the `left` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new left offset. Allows a two-way binding of the `left` property.\n */\n this.leftChange = new EventEmitter();\n /**\n * Fires when the `state` property of the component was updated. The event data contains the new state. Allows a\n * two-way binding of the `state` property.\n */\n this.stateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.messages = {};\n this.tabIndex = 0;\n this.draged = false;\n this.resized = false;\n this.windowSubscription = new Subscription();\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.localizationChangeSubscription = this.localization.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n this.resizeDirections = RESIZE_DIRECTIONS;\n this.subscribeEvents();\n }\n /**\n * Specifies whether the user will be able to drag the component.\n * @default true\n */\n set draggable(value) {\n this.options.draggable = value;\n }\n get draggable() {\n return this.options.draggable;\n }\n /**\n * Specifies whether the user will be able to resize the component.\n * @default true\n */\n set resizable(value) {\n this.options.resizable = value;\n }\n get resizable() {\n return this.options.resizable;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.el.nativeElement);\n const el = this.el.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * Specifies the initial state of the component.\n * If not specified, the value is set to `default`.\n *\n * The possible values are:\n * * `minimized`\n * * `maximized`\n * * `default`\n */\n set state(value) {\n this.options.state = value;\n }\n get state() {\n return this.options.state;\n }\n /**\n * Specifies the minimum width of the component.\n * The `minWidth` property has to be set in pixels.\n * @default 120\n */\n set minWidth(value) {\n this.setOption('minWidth', value);\n }\n get minWidth() {\n return this.options.minWidth;\n }\n /**\n * Specifies the minimum height of the Window.\n * The `minHeight` property has to be set in pixels.\n * @default 100\n */\n set minHeight(value) {\n this.setOption('minHeight', value);\n }\n get minHeight() {\n return this.options.minHeight;\n }\n /**\n * Specifies the width of the Window.\n * The `width` property has to be set in pixels.\n */\n set width(value) {\n this.setOption('width', value);\n }\n get width() {\n return this.options.width;\n }\n /**\n * Specifies the height of the Window.\n * The `height` property has to be set in pixels.\n */\n set height(value) {\n this.setOption('height', value);\n }\n get height() {\n return this.options.height;\n }\n /**\n * Specifies the initial top offset of the Window.\n * The `top` property has to be set in pixels.\n */\n set top(value) {\n this.setOption('top', value);\n }\n get top() {\n return this.options.top;\n }\n /**\n * Specifies the initial left offset of the Window.\n * Numeric values are treated as pixels.\n */\n set left(value) {\n this.setOption('left', value);\n }\n get left() {\n return this.options.left;\n }\n get closeButtonTitle() {\n if (this.messages && this.messages.closeTitle) {\n return this.messages.closeTitle;\n }\n return this.localization.get('closeTitle');\n }\n get restoreButtonTitle() {\n if (this.messages && this.messages.restoreTitle) {\n return this.messages.restoreTitle;\n }\n return this.localization.get('restoreTitle');\n }\n get maximizeButtonTitle() {\n if (this.messages && this.messages.maximizeTitle) {\n return this.messages.maximizeTitle;\n }\n return this.localization.get('maximizeTitle');\n }\n get minimizeButtonTitle() {\n if (this.messages && this.messages.minimizeTitle) {\n return this.messages.minimizeTitle;\n }\n return this.localization.get('minimizeTitle');\n }\n get hostClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n ngAfterViewInit() {\n this.setNextZIndex();\n this.handleInitialFocus();\n this.ngZone.runOutsideAngular(() => Promise.resolve(null).then(() => this.setInitialOffset()));\n this.initDomEvents();\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.el.nativeElement, 'title');\n this.service.init(this.el);\n }\n ngOnChanges(changes) {\n OFFSET_STYLES.forEach((style) => {\n if (isChanged(style, changes)) {\n this.setStyle(style, this.options[style]);\n }\n });\n if (isChanged('draggable', changes)) {\n const titleBar = isPresent(this.titleBarContent) ? this.titleBarContent : this.titleBarView;\n if (isTruthy(changes.draggable.currentValue)) {\n titleBar.subscribeDrag();\n }\n else {\n titleBar.unsubscribeDrag();\n }\n }\n if (isChanged('state', changes)) {\n if (isPresent(this.service.lastAction)) {\n this.service.lastAction = null;\n }\n else {\n this.service.applyManualState();\n this.updateAllOffset();\n }\n }\n }\n ngOnDestroy() {\n if (this.windowSubscription) {\n this.windowSubscription.unsubscribe();\n }\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n this.localizationChangeSubscription.unsubscribe();\n }\n /**\n * Focuses the wrapper of the Window component.\n */\n focus() {\n const wrapper = this.el.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n /**\n * Brings the current Window component on top of other Window components on the page.\n */\n bringToFront() {\n this.setNextZIndex();\n }\n /**\n * Manually updates the `width` or `height` option of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for sizing dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowDimensionSetting} dimension - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setDimension(dimension, value) {\n this.setOption(dimension, value);\n this.setStyle(dimension, value);\n }\n /**\n * Manually updates the `top` or `left` offset of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for positioning dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowOffsetSetting} offset - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setOffset(offset, value) {\n this.setOption(offset, value);\n this.setStyle(offset, value);\n }\n get showDefaultTitleBar() {\n return !isPresent(this.titleBarContent);\n }\n get styleMinWidth() {\n return this.minWidth + 'px';\n }\n get styleMinHeight() {\n return this.minHeight + 'px';\n }\n get stylePosition() {\n return this.options.position;\n }\n get wrapperMaximizedClass() {\n return this.state === 'maximized';\n }\n get wrapperMinimizedClass() {\n return this.state === 'minimized';\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.renderer.addClass(this.el.nativeElement, 'k-focus');\n this.setNextZIndex();\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.renderer.removeClass(this.el.nativeElement, 'k-focus');\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.windowSubscription.add(this.service.focus.subscribe(() => {\n this.el.nativeElement.focus();\n }));\n this.windowSubscription.add(this.service.dragStart.subscribe(() => {\n this.draged = true;\n this.ngZone.run(() => {\n this.dragStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.dragEnd.subscribe(() => {\n if (this.draged) {\n this.draged = false;\n this.ngZone.run(() => {\n this.dragEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.close.subscribe(() => {\n this.close.emit();\n }));\n this.windowSubscription.add(this.service.resizeStart.subscribe(() => {\n this.resized = true;\n this.ngZone.run(() => {\n this.resizeStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.resizeEnd.subscribe(() => {\n if (this.resized) {\n this.resized = false;\n this.ngZone.run(() => {\n this.resizeEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.change.subscribe((ev) => {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.setStyle(style, ev[style]);\n if (this.state !== 'maximized') {\n const emitter = this[style + 'Change'];\n if (emitter.observers.length) {\n this.ngZone.run(() => {\n emitter.emit(ev[style]);\n });\n }\n }\n }\n });\n }));\n this.windowSubscription.add(this.service.stateChange.subscribe((state) => {\n if (isPresent(this.service.lastAction)) {\n this.updateAllOffset();\n this.stateChange.emit(state);\n }\n }));\n }\n initDomEvents() {\n if (!this.el) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.el.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n if (hasClasses(event.target, WINDOW_CLASSES)) {\n this.navigation.process(event);\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.el.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n setNextZIndex() {\n const currentZIndex = this.el.nativeElement.style['z-index'];\n const nextPossibleZIndex = this.service.nextPossibleZIndex;\n if (!currentZIndex || (nextPossibleZIndex - currentZIndex > 1)) {\n this.renderer.setStyle(this.el.nativeElement, \"z-index\", this.service.nextZIndex);\n }\n }\n setInitialOffset() {\n if (this.state !== 'maximized') {\n this.updateAllOffset();\n if (!isPresent(this.left) || !isPresent(this.top)) {\n this.service.center();\n }\n }\n else {\n const viewPort = this.service.windowViewPort;\n this.setStyle('width', viewPort.width);\n this.setStyle('height', viewPort.height);\n this.setStyle('top', 0);\n this.setStyle('left', 0);\n }\n }\n updateAllOffset() {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(this[style])) {\n this.setStyle(style, this[style]);\n }\n else {\n this.removeStyle(style);\n }\n });\n }\n setStyle(style, value) {\n this.renderer.setStyle(this.el.nativeElement, style, value + 'px');\n }\n removeStyle(style) {\n this.renderer.removeStyle(this.el.nativeElement, style);\n }\n get options() {\n return this.service.options;\n }\n setOption(style, value) {\n if (typeof value !== 'number' && typeof value !== 'string') {\n return;\n }\n const parsedValue = (typeof value === 'number') ? value : parseInt(value, 10);\n this.options[style] = parsedValue;\n this.service.setRestoreOption(style, parsedValue);\n }\n handleInitialFocus() {\n const wrapper = this.el.nativeElement;\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else {\n this.focus();\n }\n }\n}\nWindowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nWindowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowComponent, selector: \"kendo-window\", inputs: { autoFocusedElement: \"autoFocusedElement\", title: \"title\", draggable: \"draggable\", resizable: \"resizable\", keepContent: \"keepContent\", state: \"state\", minWidth: \"minWidth\", minHeight: \"minHeight\", width: \"width\", height: \"height\", top: \"top\", left: \"left\" }, outputs: { dragStart: \"dragStart\", dragEnd: \"dragEnd\", resizeStart: \"resizeStart\", resizeEnd: \"resizeEnd\", close: \"close\", widthChange: \"widthChange\", heightChange: \"heightChange\", topChange: \"topChange\", leftChange: \"leftChange\", stateChange: \"stateChange\" }, host: { listeners: { \"focus\": \"onComponentFocus()\", \"blur\": \"onComponentBlur()\" }, properties: { \"attr.tabIndex\": \"this.tabIndex\", \"class.k-window\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"style.minWidth\": \"this.styleMinWidth\", \"style.minHeight\": \"this.styleMinHeight\", \"style.position\": \"this.stylePosition\", \"class.k-window-maximized\": \"this.wrapperMaximizedClass\", \"class.k-window-minimized\": \"this.wrapperMinimizedClass\" } }, providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ], queries: [{ propertyName: \"titleBarContent\", first: true, predicate: WindowTitleBarComponent, descendants: true }], viewQueries: [{ propertyName: \"titleBarView\", first: true, predicate: WindowTitleBarComponent, descendants: true }, { propertyName: \"resizeHandles\", predicate: ResizeHandleDirective, descendants: true }], exportAs: [\"kendoWindow\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `, isInline: true, components: [{ type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: [\"template\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMinimizeAction\"] }, { type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMaximizeAction\"] }, { type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowRestoreAction\"] }, { type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowCloseAction\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: [\"direction\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoWindow',\n providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ],\n selector: 'kendo-window',\n template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], draggable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], keepContent: [{\n type: Input\n }], state: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], top: [{\n type: Input\n }], left: [{\n type: Input\n }], dragStart: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], resizeStart: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], close: [{\n type: Output\n }], widthChange: [{\n type: Output\n }], heightChange: [{\n type: Output\n }], topChange: [{\n type: Output\n }], leftChange: [{\n type: Output\n }], stateChange: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-window']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], titleBarView: [{\n type: ViewChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], titleBarContent: [{\n type: ContentChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], resizeHandles: [{\n type: ViewChildren,\n args: [ResizeHandleDirective]\n }], styleMinWidth: [{\n type: HostBinding,\n args: ['style.minWidth']\n }], styleMinHeight: [{\n type: HostBinding,\n args: ['style.minHeight']\n }], stylePosition: [{\n type: HostBinding,\n args: ['style.position']\n }], wrapperMaximizedClass: [{\n type: HostBinding,\n args: ['class.k-window-maximized']\n }], wrapperMinimizedClass: [{\n type: HostBinding,\n args: ['class.k-window-minimized']\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n\n/**\n * Indicates that the **Close** button of a Window that is opened through `WindowService` is clicked.\n */\nclass WindowCloseResult {\n}\n\n/**\n * Holds references to the object instance of the Window.\n * Controls the Windows that were opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowRef {\n}\n\n/**\n * The settings for the Window actions when the Window is opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowSettings {\n}\n\n/**\n * @hidden\n */\nclass WindowContainerService {\n set container(container) {\n WindowContainerService.container = container;\n }\n get container() {\n return WindowContainerService.container;\n }\n}\nWindowContainerService.container = null;\nWindowContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nWindowContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, decorators: [{\n type: Injectable\n }] });\n\nconst isNotComponent = (component) => isString(component) || component instanceof TemplateRef;\nclass WindowInjector {\n constructor(getWindowRef, parentInjector) {\n this.getWindowRef = getWindowRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === WindowRef) {\n return this.getWindowRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Windows dynamically\n * ([see example]({% slug service_window %})).\n */\nclass WindowService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Window component.\n *\n * @param {WindowSettings} settings - The settings that define the Window.\n * @returns {WindowRef} - A reference to the Window object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private windowService: WindowService ) {}\n *\n * public open() {\n * var window = this.windowService.open({\n * title: \"My window\",\n * content: \"My content!\"\n * });\n *\n * window.result.subscribe((result) => {\n * if (result instanceof WindowCloseResult) {\n * console.log(\"Window was closed\");\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(settings) {\n const factory = this.resolver.resolveComponentFactory(WindowComponent);\n const container = settings.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`Cannot attach window to the page.\n Add an element that uses the kendoWindowContainer directive, or set the 'appendTo' property.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/window/service/\n `);\n }\n const windowRef = {\n close: () => { },\n content: null,\n result: null,\n window: null\n };\n const content = this.contentFrom(settings.content, container, windowRef);\n const window = container.createComponent(factory, undefined, undefined, content.nodes);\n windowRef.window = window;\n this.applyOptions(window.instance, settings);\n const apiClose = new Subject();\n const close = (e) => {\n apiClose.next(e || new WindowCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n window.destroy();\n };\n const result = merge(apiClose, window.instance.close.pipe(map(e => (e ? e : new WindowCloseResult())), filter((e) => {\n if (settings.preventClose) {\n // add windowRef only when using component\n const windowRefParameter = isNotComponent(settings.content) ? undefined : windowRef;\n return !settings.preventClose(e, windowRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internally and the user may subscribe to get a close result - window.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n windowRef.close = close;\n windowRef.result = result;\n window.changeDetectorRef.markForCheck();\n return windowRef;\n }\n applyOptions(instance, options) {\n if (isPresent(options.htmlAttributes)) {\n instance.htmlAttributes = options.htmlAttributes;\n }\n if (isPresent(options.cssClass)) {\n instance.cssClass = options.cssClass;\n }\n if (isPresent(options.title)) {\n instance.title = options.title;\n }\n if (isPresent(options.keepContent)) {\n instance.keepContent = options.keepContent;\n }\n if (isPresent(options.width)) {\n instance.width = options.width;\n }\n if (isPresent(options.minWidth)) {\n instance.minWidth = options.minWidth;\n }\n if (isPresent(options.height)) {\n instance.height = options.height;\n }\n if (isPresent(options.minHeight)) {\n instance.minHeight = options.minHeight;\n }\n if (isPresent(options.left)) {\n instance.left = options.left;\n }\n if (isPresent(options.top)) {\n instance.top = options.top;\n }\n if (isPresent(options.draggable)) {\n instance.draggable = options.draggable;\n }\n if (isPresent(options.resizable)) {\n instance.resizable = options.resizable;\n }\n if (isPresent(options.messages && options.messages.closeTitle)) {\n instance.messages.closeTitle = options.messages.closeTitle;\n }\n if (isPresent(options.messages && options.messages.restoreTitle)) {\n instance.messages.restoreTitle = options.messages.restoreTitle;\n }\n if (isPresent(options.messages && options.messages.maximizeTitle)) {\n instance.messages.maximizeTitle = options.messages.maximizeTitle;\n }\n if (isPresent(options.messages && options.messages.minimizeTitle)) {\n instance.messages.minimizeTitle = options.messages.minimizeTitle;\n }\n if (isPresent(options.autoFocusedElement)) {\n instance.autoFocusedElement = options.autoFocusedElement;\n }\n if (isPresent(options.state)) {\n instance.state = options.state;\n if (options.state === 'minimized') {\n instance.keepContent = true;\n }\n }\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n if (options.titleBarContent instanceof TemplateRef) {\n instance.titleBarTemplate = options.titleBarContent;\n }\n }\n contentFrom(content, container, windowRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n const injector = new WindowInjector(() => windowRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n nodes = [componentRef.location.nativeElement];\n windowRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n [],\n nodes // Content\n ]\n };\n }\n}\nWindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, deps: [{ token: i0.ComponentFactoryResolver }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nWindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: WindowContainerService, decorators: [{\n type: Inject,\n args: [WindowContainerService]\n }] }]; } });\n\n/**\n * Provides an insertion point for the Dialogs which are created through the\n * Dialog service ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n * Created Dialogs will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass DialogContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nDialogContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContainerDirective, selector: \"[kendoDialogContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialogContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DialogContainerService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_dialogs %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCustomMessagesComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dialog-messages, kendo-window-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages, kendo-window-messages'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule], exports: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective, CommonModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES, CommonModule],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst DIALOG_DIRECTIVES = [\n DialogComponent,\n DialogTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialog component that includes all Dialog components and directives.\n * Imports `DialogModule` into the [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Dialog component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { DialogModule } from '@progress/kendo-angular-dialog';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass DialogModule {\n}\nDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, declarations: [DialogComponent,\n DialogTitleBarComponent, DialogContainerDirective], imports: [SharedModule], exports: [DialogComponent,\n DialogTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, DialogContainerDirective] });\nDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, providers: [DialogContainerService, DialogService], imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIALOG_DIRECTIVES, DialogContainerDirective],\n entryComponents: [DIALOG_DIRECTIVES],\n exports: [DIALOG_DIRECTIVES, SHARED_DIRECTIVES, DialogContainerDirective],\n imports: [SharedModule],\n providers: [DialogContainerService, DialogService]\n }]\n }] });\n\n/**\n * Provides an insertion point for the Windows which are created through the\n * Window service ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n * Created Windows will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass WindowContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nWindowContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nWindowContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowContainerDirective, selector: \"[kendoWindowContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: WindowContainerService }]; } });\n\nconst WINDOW_DIRECTIVES = [\n ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective\n];\nconst ENTRY_COMPONENTS = [\n WindowComponent,\n WindowTitleBarComponent\n];\nconst exportedModules = [\n WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Window component. Imports `WindowModule` into the\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Window component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { WindowModule } from '@progress/kendo-angular-window';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, WindowModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass WindowModule {\n}\nWindowModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nWindowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, declarations: [ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective, WindowContainerDirective], imports: [SharedModule, DraggableModule], exports: [WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, WindowContainerDirective] });\nWindowModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, providers: [WindowContainerService, WindowService], imports: [[SharedModule, DraggableModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [WINDOW_DIRECTIVES, WindowContainerDirective],\n entryComponents: [ENTRY_COMPONENTS],\n exports: [exportedModules, SHARED_DIRECTIVES, WindowContainerDirective],\n imports: [SharedModule, DraggableModule],\n providers: [WindowContainerService, WindowService]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialogs components.\n *\n * @example\n *\n * ```ts-no-run\n * import { DialogsModule } from '@progress/kendo-angular-dialog';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DialogsModule {\n}\nDialogsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, exports: [DialogModule, WindowModule] });\nDialogsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, imports: [DialogModule, WindowModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [DialogModule, WindowModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, DialogAction, DialogActionsComponent, DialogCloseResult, DialogComponent, DialogContainerDirective, DialogContentBase, DialogModule, DialogRef, DialogService, DialogSettings, DialogTitleBarComponent, DialogsModule, LocalizedMessagesDirective, Messages, PreventableEvent, WindowCloseActionDirective, WindowCloseResult, WindowComponent, WindowContainerDirective, WindowMaximizeActionDirective, WindowMinimizeActionDirective, WindowModule, WindowRef, WindowRestoreActionDirective, WindowService, WindowSettings, WindowTitleBarComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, ViewChild, HostBinding, Directive, Injectable, InjectionToken, HostListener, ViewChildren, forwardRef, isDevMode, ViewContainerRef, Optional, Inject, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i9 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nimport * as i8 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter as getter$1, pointers, touchEnabled } from '@progress/kendo-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil } from 'rxjs/operators';\nimport * as i11 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-treeview';\nimport { DataBoundComponent, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective, TreeViewModule } from '@progress/kendo-angular-treeview';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dropdowns',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652188959,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isNumber = (value) => !isNaN(value);\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n let i;\n let random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n/**\n * @hidden\n */\nconst combineStr = (begin, end) => {\n return begin.concat(end.substr(end.toLowerCase().indexOf(begin.toLowerCase()) + begin.length));\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => typeof window !== 'undefined';\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isEmptyString = (value) => typeof value === 'string' && value.length === 0;\n/**\n * @hidden\n */\nconst resolveValuesInArray = (values, data = [], valueField) => values\n .map(value => {\n return data.find(item => getter(item, valueField) === value);\n})\n .filter(value => value !== undefined);\n/**\n * @hidden\n */\nconst validateComplexValues = (values, valueField) => isArray(values) && values.filter(item => {\n return isObject(item) && isPresent(getter(item, valueField));\n});\n/**\n * @hidden\n */\nconst resolveAllValues = (value, data, valueField) => {\n const customValues = validateComplexValues(value, valueField) || [];\n const resolvedValues = resolveValuesInArray(value, data, valueField) || [];\n return resolvedValues.concat(customValues);\n};\n/**\n * @hidden\n */\nconst isObjectArray = (values) => {\n return isArray(values) && values.every(item => isObject(item));\n};\n/**\n * @hidden\n */\nconst selectedIndices = (values, data, valueField) => {\n const extractedValues = data.map(item => {\n return isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n const index = extractedValues.indexOf(value);\n if (index !== -1) {\n arr.push(index);\n }\n return arr;\n }, []);\n};\n/**\n * @hidden\n */\nconst getter = (dataItem, field) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n if (!isPresent(field) || !isObject(dataItem)) {\n return dataItem;\n }\n // creates a field accessor supporting nested fields processing\n const valueFrom = getter$1(field);\n return valueFrom(dataItem);\n};\n/**\n * @hidden\n */\nconst resolveValue = (args) => {\n let dataItem;\n if (isPresent(args.value)) {\n const data = [args.defaultItem, ...args.data];\n dataItem = data.find(element => getter(element, args.valueField) === args.value);\n return {\n dataItem: dataItem,\n focused: args.data.indexOf(dataItem),\n selected: args.data.indexOf(dataItem)\n };\n }\n else if (args.index) {\n dataItem = args.data[args.index];\n return {\n dataItem: args.data[args.index],\n focused: args.index,\n selected: args.index\n };\n }\n return {\n dataItem: args.defaultItem,\n focused: -1,\n selected: -1\n };\n};\n/**\n * @hidden\n */\nconst sameCharsOnly = (word, character) => {\n for (let idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst shuffleData = (data, splitIndex, defaultItem) => {\n let result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nconst matchText = (text, word, ignoreCase) => {\n if (!isPresent(text)) {\n return false;\n }\n let temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nconst elementFromPoint = (x, y) => {\n if (!isDocumentAvailable()) {\n return;\n }\n return document.elementFromPoint(x, y);\n};\n/**\n * @hidden\n *\n * Checks whether the passed object has all of the listed properties.\n */\nconst hasProps = (obj, props) => {\n if (!isPresent(obj)) {\n return false;\n }\n return props.every(prop => obj.hasOwnProperty(prop));\n};\n/**\n * @hidden\n *\n * Checks whether an element is untouched by looking for the ng-untouched css class\n */\nconst isUntouched = (element) => element.className.includes('ng-untouched');\n/**\n * @hidden\n */\nconst noop = (_) => { };\n/**\n * IE element `matches` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\nconst matches = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n *\n * IE element `closest` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n */\nconst closest = (element, selector) => {\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (matches(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n *\n * Parses a provided value to its type 'number' representation.\n * If the parsed value (via Number(value)) is NaN, the provided default value is returned.\n * Uses 0 as default value if a second param is not provided.\n */\nconst parseNumber = (num, defaultValue = 0) => {\n const normalizedValue = Number(num);\n return isNaN(normalizedValue) ? defaultValue : normalizedValue;\n};\n/**\n * @hidden\n *\n * Checks whether the passed target element is inside the provided host or popupRef.\n */\nconst inDropDown = (host, target, popupRef) => {\n return host.nativeElement.contains(target) || (popupRef && popupRef.popupElement.contains(target));\n};\n/**\n * @hidden\n *\n * Calculates the hierarchical level of an item, based on the provided index.\n * The result level is zero-based (starts from 0).\n */\nconst getHierarchicalItemLevel = (index) => {\n return (index || '').split('_').length - 1;\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchDescendentNodes = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(descendent => filterExpression(descendent.item));\n }\n descendants.forEach(child => descendants = descendants.concat(fetchDescendentNodes(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Retrieves the correct value based on the item's level and the provided value field/s.\n * Used in the MultiSelectTree component.\n */\nconst valueFrom = ({ dataItem, index, level }, valueField) => {\n const fields = Array.isArray(valueField) ? valueField : [valueField];\n // either use the explicitly provided value level, or infer it from the item index\n const valueLevel = isPresent(level) ? level : getHierarchicalItemLevel(index);\n // fall-back to the last available one, if the current node is in a deeper level\n const normalizedLevel = Math.min(valueLevel, fields.length - 1);\n const field = fields[normalizedLevel];\n return getter$1(field)(dataItem);\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n\n/**\n * @hidden\n */\nclass SearchBarComponent {\n constructor(localization, renderer) {\n this.localization = localization;\n this.valueChange = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.searchBarClass = true;\n this._userInput = \"\";\n this._previousValue = \"\";\n this._placeholder = \"\";\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer = renderer;\n }\n get userInput() {\n return this._userInput;\n }\n set userInput(userInput) {\n this._userInput = userInput || \"\";\n }\n get value() {\n return this.input.nativeElement.value;\n }\n set placeholder(text) {\n this._placeholder = text || '';\n this.setInputSize();\n }\n get placeholder() {\n return this._placeholder;\n }\n get ariaExpanded() {\n return this.role === 'combobox' ? this.popupOpen : null;\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnChanges(changes) {\n let previousUserInput;\n if (this.input && (changes.userInput || changes.suggestedText)) {\n if (changes.userInput && changes.userInput.previousValue) {\n if (this._previousValue === changes.userInput.previousValue) {\n previousUserInput = this._previousValue;\n }\n else {\n previousUserInput = changes.userInput.currentValue || \"\";\n }\n }\n else {\n previousUserInput = this._previousValue;\n }\n const caretIndex = this.input.nativeElement.selectionStart;\n const caretAtEnd = previousUserInput.length === caretIndex;\n this.writeInputValue(this.suggestedText ? combineStr(this.userInput, this.suggestedText) : this.userInput);\n if (this.suggestedText) {\n this.setInputSelection(this.userInput.length, this.suggestedText.length);\n }\n else if (caretAtEnd) {\n this.setInputSelection(this.userInput.length, this.userInput.length);\n }\n else {\n this.setInputSelection(caretIndex, caretIndex);\n }\n this._previousValue = this.userInput;\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n writeInputValue(text) {\n if (isDocumentAvailable()) {\n this.renderer.setProperty(this.input.nativeElement, 'value', text);\n }\n }\n setInputSelection(start, end) {\n if (isDocumentAvailable() && this.input.nativeElement === document.activeElement) {\n try {\n this.input.nativeElement.setSelectionRange(start, end);\n }\n catch (e) {\n //Make sure that the element is in the DOM before you invoke its methods\n }\n }\n }\n handleInput(event) {\n const value = event.target.value;\n if (value !== this.userInput) {\n this._previousValue = value;\n this.valueChange.emit(value);\n }\n }\n handleFocus(event) {\n this.onFocus.emit(event);\n }\n handleBlur(event) {\n this.onBlur.emit(event);\n }\n handleKeydown(event) {\n const keyCode = event.keyCode;\n const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,\n Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End];\n if (keys.indexOf(keyCode) > -1) {\n this.onNavigate.emit(event);\n }\n }\n focus() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.focus();\n }\n }\n blur() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.blur();\n }\n }\n setInputSize() {\n const lengthOf = x => x ? x.length : 0;\n const input = this.input.nativeElement;\n const placeholderLength = lengthOf(this.placeholder);\n const textLength = lengthOf(this.value);\n const size = Math.max(placeholderLength, textLength, 1);\n this.renderer.setAttribute(input, 'size', size.toString());\n }\n}\nSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: { id: \"id\", listId: \"listId\", tagListId: \"tagListId\", activeDescendant: \"activeDescendant\", noDataLabel: \"noDataLabel\", disabled: \"disabled\", readonly: \"readonly\", tabIndex: \"tabIndex\", popupOpen: \"popupOpen\", role: \"role\", userInput: \"userInput\", suggestedText: \"suggestedText\", placeholder: \"placeholder\" }, outputs: { valueChange: \"valueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", onClick: \"onClick\", onNavigate: \"onNavigate\" }, host: { properties: { \"class.k-searchbar\": \"this.searchBarClass\" } }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-searchbar',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { id: [{\n type: Input\n }], listId: [{\n type: Input\n }], tagListId: [{\n type: Input\n }], activeDescendant: [{\n type: Input\n }], noDataLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], popupOpen: [{\n type: Input\n }], role: [{\n type: Input\n }], userInput: [{\n type: Input\n }], suggestedText: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], searchBarClass: [{\n type: HostBinding,\n args: ['class.k-searchbar']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * Renders the list item content. To define the item template, nest an `` tag\n * with the `kendoItemTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * - [Using `ItemTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-item-template)\n * - [Using `ItemTemplate` with the ComboBox]({% slug templates_combobox %}#toc-item-template)\n * - [Using `ItemTemplate` with the DropDownList]({% slug templates_ddl %}#toc-item-template)\n * - [Using `ItemTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-item-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the header content of the list. To define the header template, nest an `` tag\n * with the `kendoHeaderTemplate` directive inside the component tag.\n *\n * - [Using `HeaderTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-header-template)\n * - [Using `HeaderTemplate` with the ComboBox]({% slug templates_combobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownList]({% slug templates_ddl %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-header-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Header template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTemplateDirective, selector: \"[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the footer content of the list. To define the footer template, nest an `` tag\n * with the `kendoFooterTemplate` directive inside the component tag.\n *\n * - [Using `FooterTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-footer-template)\n * - [Using `FooterTemplate` with the ComboBox]({% slug templates_combobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownList]({% slug templates_ddl %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-footer-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Footer template

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

No data!

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [];\n * }\n * ```\n */\nclass NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNoDataTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NoDataTemplateDirective, selector: \"[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Defines the mandatory properties of the `kendoDropDownFilter` directive\n * so that `kendoDropDownFilter` can be used with any of the DropDowns components\n * which implement the `FilterableDropDownComponentBase` class.\n *\n * @hidden\n */\nclass FilterableComponent {\n}\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n pageSize: 50,\n itemHeight: 28\n};\n/**\n * @hidden\n */\nconst normalizeVirtualizationSettings = (settings, defaultOverrides) => {\n const defaults = Object.assign({}, DEFAULTS, defaultOverrides);\n if (settings === true) {\n return defaults;\n }\n if (!settings) {\n return null;\n }\n return Object.assign({ pageSize: DEFAULTS.pageSize }, settings);\n};\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dropdowns-touch-enabled');\n\n/**\n * @hidden\n */\nclass ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n}\nListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '\"li[role=option], li[role=group]\"' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass SelectableDirective {\n constructor(selectionService) {\n this.checkboxes = { enabled: false };\n // @HostBinding('attr.offset-index')\n // @Input() public offsetIndex: number;\n this.multipleSelection = false;\n this.selectionService = selectionService;\n }\n get focusedClassName() {\n return this.selectionService.isFocused(this.index);\n }\n get selectedClassName() {\n return !this.checkboxes.enabled && this.selectionService.isSelected(this.index);\n }\n onClick(event) {\n event.stopPropagation();\n if (this.checkboxes.enabled && !this.checkboxes.checkOnClick) {\n return;\n }\n if (this.multipleSelection) {\n if (this.selectionService.isSelected(this.index)) {\n this.selectionService.unselect(this.index);\n }\n else {\n this.selectionService.add(this.index);\n }\n }\n else {\n this.selectionService.change(this.index);\n }\n }\n}\nSelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, deps: [{ token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });\nSelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: { index: \"index\", checkboxes: \"checkboxes\", height: \"height\", multipleSelection: \"multipleSelection\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"attr.index\": \"this.index\", \"style.height.px\": \"this.height\", \"style.minHeight.px\": \"this.height\", \"class.k-focus\": \"this.focusedClassName\", \"class.k-selected\": \"this.selectedClassName\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownsSelectable]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }]; }, propDecorators: { index: [{\n type: HostBinding,\n args: ['attr.index']\n }, {\n type: Input\n }], checkboxes: [{\n type: Input\n }], height: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: HostBinding,\n args: ['style.minHeight.px']\n }, {\n type: Input\n }], multipleSelection: [{\n type: Input\n }], focusedClassName: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], selectedClassName: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n /* tslint:disable:member-ordering */\n constructor(dataService, wrapper, selectionService, disabledItemsService, cdr, zone, renderer) {\n this.dataService = dataService;\n this.wrapper = wrapper;\n this.selectionService = selectionService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n this.selected = [];\n this.focused = -1;\n this.show = true;\n this.multipleSelection = false;\n this.type = 'list';\n this.checkboxes = { enabled: false };\n this.rounded = 'medium';\n this.onClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.listResize = new EventEmitter();\n this.startFrom = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.scrollToFocused = false;\n this._size = 'medium';\n this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus)\n .pipe(\n // handle only the very last onSelect/onFocus emission\n switchMap(event => this.zone.onStable.pipe(take(1), map(() => event))))\n .subscribe(this.scrollToItem.bind(this));\n this.prepareClasses();\n }\n set data(data) {\n this._data = data[0] && data[0].header ? data.slice(0) : data;\n }\n get data() {\n return this._data;\n }\n set size(size) {\n if (this.type === 'list') {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n if (size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));\n }\n this._size = size;\n }\n }\n get size() {\n return this._size;\n }\n get pageSize() {\n if (this.virtual.pageSize) {\n return this.virtual.pageSize;\n }\n let size = Math.round(this.height / this.virtual.itemHeight);\n return size;\n }\n get scrollHeight() {\n return (this.dataService.grouped ? this.virtual.total - 1 : this.virtual.total) * this.virtual.itemHeight;\n }\n get overflowY() {\n if (isPresent(this.virtual)) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n return overflow;\n }\n }\n /**\n * @hidden\n */\n get checkboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n ngOnChanges(changes) {\n if (isChanged('data', changes, false)) {\n if (this.lastLoaded <= 0) {\n this.lastLoaded = this.data.length - 1;\n this.scrollToFocused = !changes.data.isFirstChange();\n }\n this.setOverflow();\n }\n if (isChanged('virtual', changes, false)) {\n this.setOverflow();\n }\n if (isChanged('type', changes, false)) {\n this.prepareClasses();\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n this.zone.runOutsideAngular(() => {\n this.scrollSubscription = fromEvent(this.content.nativeElement, \"scroll\").pipe(auditTime(100), tap(this.prefetchData.bind(this)), tap(this.findCurrentGroup.bind(this))).subscribe(() => {\n this.lastScrollTop = this.content.nativeElement.scrollTop;\n });\n });\n this.setOverflow();\n }\n ngAfterViewChecked() {\n if (this.virtual) {\n this.positionItems();\n }\n if (this.items && this.scrollToFocused) {\n this.scrollToFocused = false;\n const scrollTarget = this.items.length && this.selectionService.focused === -1 ? 0 : this.selectionService.focused;\n this.scrollToItem(scrollTarget);\n }\n if (this.dataService.grouped) {\n this.findCurrentGroup();\n }\n }\n ngOnDestroy() {\n this.selectSubscription.unsubscribe();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n onCheckedChange(e, index) {\n const isChecked = e.target['checked'];\n if (isChecked && !this.selectionService.isSelected(index)) {\n this.selectionService.add(index);\n }\n if (!isChecked && this.selectionService.isSelected(index)) {\n this.selectionService.unselect(index);\n }\n }\n prepareClasses() {\n if (this.type === 'list') {\n this.listContentClass = 'k-list-content';\n this.listClass = 'k-list-ul';\n this.listItemClass = 'k-list-item';\n this.listVirtualClass = 'k-virtual-list';\n this.listGroupStickyHeaderClass = 'k-list-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-list-header-text';\n this.listGroupItemClass = 'k-list-group-item';\n this.listGroupItemTextClass = 'k-list-item-text';\n }\n else {\n this.listContentClass = 'k-table-body k-table-scroller';\n this.listClass = 'k-table k-table-list';\n this.listItemClass = 'k-table-row';\n this.listVirtualClass = 'k-virtual-table';\n this.listGroupStickyHeaderClass = 'k-table-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-table-th';\n this.listGroupItemClass = 'k-table-group-row';\n this.listGroupItemTextClass = 'k-table-th';\n }\n }\n isChecked(index) {\n const normalizedIndex = this.virtual ? index + this.virtual.skip : index;\n return this.selectionService.isSelected(normalizedIndex);\n }\n firstVisibleItem() {\n const content = this.content.nativeElement;\n const rect = content.getBoundingClientRect();\n // IE9 hack\n const disabled = Array.prototype.slice.call(content.querySelectorAll(\".k-disabled\"));\n // This is a workaround for finding elements with pointer-events: none;\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"auto\"));\n const item = document.elementFromPoint(rect.left + 1, rect.top + 1);\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"none\"));\n // return the closest `li` item to cover the custom template scenario\n return closest(item, 'li');\n }\n findCurrentGroup() {\n if (!this.dataService.grouped) {\n this.currentGroup = undefined;\n return;\n }\n const item = this.firstVisibleItem();\n if (item) {\n let index;\n if (item.getAttribute(\"role\") === \"group\") {\n index = parseInt(item.getAttribute(\"group-index\"), 10);\n this.currentGroup = this.dataService.groupAt(index).value;\n }\n else {\n index = parseInt(item.getAttribute(\"index\"), 10);\n this.currentGroup = this.dataService.itemGroup(this.dataService.itemAt(index));\n }\n }\n else {\n this.currentGroup = undefined;\n }\n this.cdr.detectChanges();\n }\n prefetchData() {\n if (!this.virtual) {\n return;\n }\n const visibleItems = Math.trunc(this.content.nativeElement.clientHeight / this.virtual.itemHeight);\n const offsetY = this.content.nativeElement.scrollTop;\n const start = Math.trunc(offsetY / this.virtual.itemHeight);\n const down = offsetY > this.lastScrollTop;\n const nextPage = (start + visibleItems >= this.lastLoaded) && this.lastLoaded < this.virtual.total - 1;\n const leftOver = this.pageSize - (this.lastLoaded - this.startFrom);\n const prevPage = this.lastLoaded - this.pageSize + visibleItems >= start - leftOver;\n if (down && nextPage) {\n this.changePage(start);\n }\n if (!down && prevPage) {\n this.changePage(start - this.pageSize + visibleItems + 1);\n }\n }\n changePage(start) {\n this.zone.run(() => {\n let end = this.pageSize + start;\n if (end > this.virtual.total) {\n start--;\n end = this.virtual.total;\n }\n if (start < 0) {\n start = 0;\n }\n this.startFrom = start;\n this.lastLoaded = end;\n this.pageChange.emit({ skip: start, take: this.pageSize });\n });\n }\n index(groupIndex, itemIndex) {\n return groupIndex > 0 ? (this.dataService.groupIndices[groupIndex - 1] + itemIndex) : itemIndex;\n }\n getText(dataItem) {\n return getter(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter(dataItem, this.valueField);\n }\n isDisabled(index) {\n if (isPresent(this.virtual)) {\n index += this.virtual.skip;\n }\n return this.disabledItemsService.isIndexDisabled(index);\n }\n isAltRow(index) {\n return this.type === 'dropdowngrid' && index % 2 !== 0;\n }\n scrollToItem(index) {\n let flatIndex = index;\n if (this.dataService.grouped) {\n // takes into account the group header items\n flatIndex = this.dataService.flatIndex(index);\n /* The first group header item is not rendered in the list (see template), so subtract 1 when calulating the flat index.\n With virtualization enabled, the first group header could be in a previous page, in which case don't subtract anything. */\n const groupHeaderOffset = this.firstGroupHeaderInTargetedPage(flatIndex) ? -1 : 0;\n flatIndex += groupHeaderOffset;\n }\n if (this.virtual && flatIndex > -1) {\n this.scrollToIndex(flatIndex);\n return;\n }\n const items = this.items.toArray();\n if (isPresent(items[flatIndex]) && flatIndex !== -1) {\n this.scroll(items[flatIndex].element);\n }\n }\n scrollToIndex(index) {\n let content = this.content.nativeElement;\n let contentScrollTop = content.scrollTop;\n const itemOffsetTop = index * this.virtual.itemHeight;\n const itemOffsetHeight = this.virtual.itemHeight;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n scroll(item) {\n if (!item) {\n return;\n }\n const nativeElement = item.nativeElement;\n let content = this.content.nativeElement, itemOffsetTop = nativeElement.offsetTop, itemOffsetHeight = nativeElement.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n /**\n * Indicates whether a scrollbar is currently rendered in the list.\n */\n hasScrollbar() {\n if (!(isPresent(this.items) && this.items.length && isPresent(this.list) && isPresent(this.content))) {\n return false;\n }\n const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();\n return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;\n }\n /**\n * Sets the list's content overflow (hides/shows scrollbar)\n */\n setOverflow() {\n if (this.virtual) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);\n }\n }\n /**\n * Indicates whether the scrollbar should be visible in virtual mode.\n */\n hasVirtualScrollbar() {\n const contentOffsetHeight = this.content.nativeElement.offsetHeight;\n const virtualOffsetHeight = this.virtualContainer && this.virtualContainer.nativeElement.offsetHeight;\n return this.virtualContainer && virtualOffsetHeight > contentOffsetHeight;\n }\n positionItems() {\n this.items.forEach((item, index) => {\n const offsetY = (index + this.startFrom) * this.virtual.itemHeight;\n this.renderer.setStyle(item.element.nativeElement, \"transform\", `translateY(${offsetY}px`);\n });\n }\n /**\n * Indicates whether the first group header from the data set is in the targeted virtual page.\n */\n firstGroupHeaderInTargetedPage(itemIndex) {\n if (!isPresent(this.virtual)) {\n return true;\n }\n return this.virtual.skip === 0 && (this.virtual.pageSize > itemIndex);\n }\n setComponentClasses() {\n if (this.type === 'list') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-list');\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n }\n }\n if (isPresent(this.virtual)) {\n this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);\n }\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: DataService }, { token: i0.ElementRef }, { token: SelectionService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-list\", inputs: { selected: \"selected\", focused: \"focused\", textField: \"textField\", valueField: \"valueField\", height: \"height\", template: \"template\", groupTemplate: \"groupTemplate\", fixedGroupTemplate: \"fixedGroupTemplate\", show: \"show\", id: \"id\", optionPrefix: \"optionPrefix\", multipleSelection: \"multipleSelection\", virtual: \"virtual\", type: \"type\", checkboxes: \"checkboxes\", data: \"data\", size: \"size\", rounded: \"rounded\" }, outputs: { onClick: \"onClick\", pageChange: \"pageChange\", listResize: \"listResize\" }, viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, static: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }, { propertyName: \"virtualContainer\", first: true, predicate: [\"virtualContainer\"], descendants: true }, { propertyName: \"items\", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `, isInline: true, components: [{ type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\" }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-list',\n template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: DataService }, { type: i0.ElementRef }, { type: SelectionService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { selected: [{\n type: Input\n }], focused: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], height: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], fixedGroupTemplate: [{\n type: Input\n }], show: [{\n type: Input\n }], id: [{\n type: Input\n }], optionPrefix: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], virtual: [{\n type: Input\n }], type: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], onClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], listResize: [{\n type: Output\n }], items: [{\n type: ViewChildren,\n args: [ListItemDirective]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], virtualContainer: [{\n type: ViewChild,\n args: ['virtualContainer', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { noDataText: \"noDataText\", clearTitle: \"clearTitle\", checkAllText: \"checkAllText\", selectButtonText: \"selectButtonText\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { noDataText: [{\n type: Input\n }], clearTitle: [{\n type: Input\n }], checkAllText: [{\n type: Input\n }], selectButtonText: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NO_VALUE = \"\";\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$5 = 'solid';\n/**\n * @hidden\n */\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoCompleteComponent)\n};\n/**\n * Represents the [Kendo UI AutoComplete component for Angular]({% slug overview_autocomplete %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public placeholder: string = 'Type \"it\" for suggestions';\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, touchEnabled) {\n this.localization = localization;\n this.dataService = dataService;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this._zone = _zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.touchEnabled = touchEnabled;\n /**\n * Defines whether the first match from the suggestions list will be automatically focused.\n * By default, `highlightFirst` is set to `true`.\n */\n this.highlightFirst = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * @hidden\n *\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_autocomplete %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the AutoComplete.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the AutoComplete gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = noop;\n this.onTouchedCallback = noop;\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this._popupSettings = { animate: true };\n this._open = false;\n this._value = \"\";\n this.valueChangeSubject = new Subject();\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.wrapper = this.hostElement.nativeElement;\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.selectionService.resetSelection([-1]);\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get suggestion() {\n if (!this.text || !this.suggestedText) {\n this.suggestedText = undefined;\n return;\n }\n const hasMatch = this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase());\n const shouldSuggest = this.suggest && !this.backspacePressed;\n if (shouldSuggest && hasMatch) {\n return this.suggestedText;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + getter(dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n /**\n * Sets the data of the AutoComplete.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.filterable) {\n this.selectionService.focused = this.isOpen && this.data.length && this.highlightFirst ? this.firstFocusableIndex(0) : -1;\n }\n if (this.suggest && this.dataService.itemsCount > 0) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.valueField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the AutoComplete.\n */\n set value(newValue) {\n this.verifySettings(newValue);\n this._value = newValue || NO_VALUE;\n this.text = this.value;\n this.cdr.markForCheck();\n }\n get value() {\n return this._value || NO_VALUE;\n }\n /**\n * Configures the popup of the AutoComplete.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_autocomplete %})).\n * Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_autocomplete %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.renderer.removeClass(this.wrapper, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.renderer.removeClass(this.wrapper, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;\n this.renderer.removeClass(this.wrapper, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-focus\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.setComponentClasses();\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n }\n /**\n * Resets the value of the AutoComplete.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = NO_VALUE;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.change(NO_VALUE);\n if (this.filterable) {\n this.filterChange.emit('');\n }\n this.selectionService.resetSelection([]);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Focuses a specific item of the AutoComplete based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the AutoComplete.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the AutoComplete.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n verifySettings(newValue) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(newValue) && typeof newValue !== \"string\") {\n throw new Error(\"Expected value of type string. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/value-binding/\");\n }\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.valueField);\n }\n }\n }\n navigate(index) {\n if (!this.isOpen) {\n return;\n }\n this.selectionService.focus(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n if (this.disabled || this.readonly || isNaN(focused)) {\n return;\n }\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n action !== NavigationAction.Home &&\n action !== NavigationAction.End &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter(event) {\n const focused = this.selectionService.focused;\n let value;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focused >= 0) {\n value = getter(this.dataService.itemAt(focused), this.valueField);\n }\n else {\n const match = this.suggest && this.suggestedText && this.data.length &&\n getter(this.dataService.itemAt(0), this.valueField).toLowerCase() === this.searchbar.value.toLowerCase();\n if (this.isOpen && match) {\n value = this.suggestedText;\n }\n else {\n value = this.searchbar.value;\n }\n }\n this.change(value);\n }\n handleEscape() {\n this.togglePopup(false);\n this.selectionService.focused = -1;\n this.suggestedText = null;\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = isPresent(this.text) ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n this.togglePopup(text.length > 0);\n if (!this.highlightFirst) {\n this.selectionService.focused = -1;\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n const focused = this.filterable ? this.selectionService.focused : -1;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n let dataItem;\n let text;\n if (focused !== -1) {\n dataItem = this.dataService.itemAt(focused);\n text = getter(dataItem, this.valueField) || \"\";\n }\n else {\n text = this.searchbar.value;\n }\n const exactMatch = text === this.searchbar.value;\n const insensitiveMatch = text.toLowerCase() === this.searchbar.value.toLowerCase();\n if (!exactMatch && insensitiveMatch) {\n this.selectionService.resetSelection([]);\n }\n this.isFocused = false;\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged;\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(value) {\n this.togglePopup(false);\n this.valueChangeSubject.next(value);\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.valueChangeSubscription = this.valueChangeSubject\n .subscribe(value => {\n const hasChange = this.value !== value;\n this.value = value;\n this.text = value;\n // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`\n if (hasChange) {\n this.emitChange(value);\n }\n });\n this.changeSubscription = this.selectionService.onChange.subscribe(this.handleItemChange.bind(this));\n this.focusSubscription = this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down).subscribe((event) => this.navigate(event.index));\n this.closeSubscription = this.navigationService.close.subscribe(() => this.togglePopup(false));\n this.enterSubscription = this.navigationService.enter.subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc.subscribe(this.handleEscape.bind(this));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up AutoComplete on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => this.blur());\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.changeSubscription.unsubscribe();\n this.navigationSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.valueChangeSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleItemChange(event) {\n const index = event.indices.length ? event.indices[0] : undefined;\n this.selectionService.resetSelection([-1]);\n if (!isPresent(index)) {\n return;\n }\n let text = getter(this.dataService.itemAt(index), this.valueField);\n this.change(text);\n }\n handleItemFocus(_event) {\n const focused = this.selectionService.focused;\n const shouldSuggest = Boolean(this.suggest && this.data && this.data.length && focused >= 0);\n if (shouldSuggest) {\n this.suggestedText = getter(this.dataService.itemAt(focused), this.valueField);\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n popupAlign: popupPosition,\n anchorAlign: anchorPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', this.fillMode));\n }\n }\n}\nAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.LocalizationService }, { token: DataService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AutoCompleteComponent, selector: \"kendo-autocomplete\", inputs: { highlightFirst: \"highlightFirst\", focusableId: \"focusableId\", data: \"data\", value: \"value\", valueField: \"valueField\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", loading: \"loading\", clearButton: \"clearButton\", suggest: \"suggest\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-autocomplete\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoAutoComplete\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoAutoComplete',\n providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n selector: 'kendo-autocomplete',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: DataService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { highlightFirst: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], suggest: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-autocomplete']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * @hidden\n */\nconst MultiselectMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'object': 'Expected values of Object type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst MultiSelectTreeMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-primitive-values',\n 'object': 'Expected values of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-object-values',\n 'dataItems': 'Expected dataItems of type Object[] to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'dataItemsLength': 'Expected dataItems length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'valueDepth': 'Expected valueDepth of type number[] to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth',\n 'valueDepthLength': 'Expected valueDepth length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth'\n};\n/**\n * @hidden\n */\nconst ComboBoxMessages = {\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-bind-to-arrays-of-complex-data',\n 'noItemHeight': 'Expected virtual.itemHeight of type number.'\n};\n/**\n * @hidden\n */\nconst MultiColumnComboBoxMessages = {\n 'data': 'Provided data must consist only of objects. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/#toc-fields-configuration'\n};\n/**\n * @hidden\n */\nconst DropDownListMessages = {\n 'defaultItem': 'defaultItem and data items must be of same type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownListComponent/#toc-defaultitem',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst DropDownTreeMessages = {\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-primitive-values',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-object-values',\n 'dataItem': 'Expected dataItem of type Object to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownTreeComponent/#toc-dataitem',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding',\n 'valueDepth': 'Expected valueDepth to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/DropDownTreeComponent/#toc-valuedepth'\n};\n\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI ComboBox component for Angular]({% slug overview_combobox %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ComboBoxComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.touchEnabled = touchEnabled;\n this.selected = [];\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies whether the ComboBox allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_combobox %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n * @param { Any } value - The custom value defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return { ProductID: null, ProductName: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => userInput));\n /**\n * The hint that is displayed when the component is empty.\n *\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Enables the auto-completion of the text based on the first data item.\n */\n this.suggest = false;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_combobox %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_combobox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time an item selection is changed\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the ComboBox.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ComboBox gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this._isFocused = false;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualItemHeight = 28;\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualPageSize = 50;\n this._filtering = false;\n this._text = '';\n this.filterText = '';\n this._open = false;\n this._popupSettings = { animate: true };\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this.customValueSubject = new Subject();\n this.valueSubject = new Subject();\n this.clearValueSubject = new Subject();\n this.subs = new Subscription();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n }\n set text(text) {\n this._text = isPresent(text) ? text.toString() : \"\";\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + (dataItem ? getter(dataItem, this.valueField) : \"\");\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the ComboBox.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n if (this._filtering) {\n const queryAndDataPresent = this.text.length > 0 && this.dataService.itemsCount > 0;\n const index = queryAndDataPresent ? this.firstFocusableIndex(0) : -1;\n this.selectionService.focused = index;\n }\n if (this.suggest && this.dataService.itemsCount && this.text) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.textField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the ComboBox.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the dataset are considered custom values.\n * > When the `Enter` key is pressed or the component loses focus, custom values get dismissed unless `allowCustom` is set to `true`.\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_combobox %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * Configures the popup of the ComboBox.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_combobox %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings, {\n itemHeight: this.defaultVirtualItemHeight,\n pageSize: this.defaultVirtualPageSize\n });\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, \"k-focus\");\n this._isFocused = value;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n get popupWidth() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get popupHeight() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setComponentClasses();\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter((candidate) => {\n const current = getter(this.value, this.valueField);\n const newValue = getter(candidate, this.valueField);\n let newText = getter(candidate, this.textField);\n if (!isPresent(this.value) && !isPresent(newValue)) {\n return false;\n }\n if (isPresent(newText)) {\n newText = newText.toString();\n }\n if (current === newValue && this.text === newText) {\n this.clearFilter();\n return false;\n }\n else {\n return true;\n }\n }), map((candidate) => {\n const newValue = getter(candidate, this.valueField);\n const newText = getter(candidate, this.textField);\n return {\n dataItem: candidate,\n text: newText,\n value: this.valuePrimitive ? newValue : candidate\n };\n }));\n const customValueStreams = partition(() => this.allowCustom)(this.customValueSubject.pipe(throttleTime(300)));\n const allowCustomValueStream = customValueStreams[0].pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), filter(() => {\n const hasChange = this.text !== getter(this.value, this.valueField);\n this.loading = hasChange;\n this.disabled = hasChange;\n if (!hasChange) {\n this.clearFilter();\n }\n return hasChange;\n }), this.valueNormalizer, map((normalizedValue) => {\n return {\n custom: true,\n dataItem: normalizedValue,\n text: this.text,\n value: normalizedValue\n };\n }));\n const disableCustomValueStream = customValueStreams[1].pipe(map(() => {\n return {\n custom: true,\n dataItem: undefined,\n text: undefined,\n value: undefined\n };\n }));\n const clearValueStream = this.clearValueSubject.pipe(map(() => ({\n dataItem: undefined,\n text: undefined,\n value: undefined\n })));\n if (this.valueSubscription) {\n this.valueSubscription.unsubscribe();\n }\n const merged = merge(valueStream, allowCustomValueStream, disableCustomValueStream, clearValueStream);\n this.valueSubscription = merged.pipe(catchError(() => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== undefined;\n this.dataItem = undefined;\n this.value = undefined;\n this.text = undefined;\n this.loading = false;\n this.disabled = false;\n if (selectionChanged) {\n this.selectionChange.emit(undefined);\n }\n this.emitValueChange();\n this.createValueStream();\n return of(null);\n }))\n .subscribe((state) => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== getter(state.dataItem, this.valueField);\n this.dataItem = state.dataItem;\n this.value = state.value;\n this.text = state.text;\n this.loading = false;\n this.disabled = false;\n this.clearFilter();\n if (state.custom) {\n this.selectionService.focused = -1;\n }\n if (selectionChanged) {\n const selectionArgs = state.custom ? undefined : this.dataItem;\n this.selectionChange.emit(selectionArgs);\n }\n this.emitValueChange();\n });\n }\n attachStreams() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => isPresent(event.index)))\n .subscribe((event) => this.navigate(event.index)));\n this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.navigationService.enter.pipe(tap((event) => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n }))\n .subscribe(this.handleEnter.bind(this)));\n this.subs.add(merge(this.selectionService.onChange, this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)))\n .pipe(tap(_ => {\n this._filtering = false;\n this.togglePopup(false);\n }), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n this.change(dataItem);\n }));\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), tap(_ => this._filtering = false), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n const selectionChanged = getter(dataItem, this.valueField) !== getter(this.dataItem, this.valueField);\n this.updateState({ dataItem });\n if (selectionChanged) {\n this.selectionChange.emit(dataItem);\n }\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n if (isPresent(this.valueSubscription)) {\n this.valueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectClickDisposeHandler) {\n this.selectClickDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the ComboBox based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the ComboBox.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the ComboBox.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to open or close the popup,\n * the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the ComboBox.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n this.clearState();\n this.resetSelection();\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label\n * should be rendered in the input when the component is not focused.\n */\n isEmpty() {\n const textEmpty = !isPresent(this.text) || isEmptyString(this.text);\n const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);\n return textEmpty && valueEmpty;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this._filtering = true;\n this._previousDataItem = undefined;\n this.selectionService.resetSelection([]);\n this.clearValueSubject.next();\n this._filtering = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}\n `;\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isOpen) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(ComboBoxMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(ComboBoxMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(ComboBoxMessages.textAndValue);\n }\n if (this.virtual && isNaN(this.virtual.itemHeight)) {\n throw new Error(ComboBoxMessages.noItemHeight);\n }\n }\n setState() {\n // Filtering in process, do nothing.\n if (this._filtering) {\n return;\n }\n const value = this.value;\n const valueField = this.valueField;\n const resolved = this.findDataItem({ valueField, value });\n if (isPresent(resolved.index) && resolved.index !== -1) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && this.allowCustom) {\n this.updateState({ dataItem: value });\n this.resetSelection(-1);\n }\n else if (this._previousDataItem && this.value) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection(-1);\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index) || index < 0;\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = index;\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const comparer = (element) => {\n const dataItem = this.dataService.grouped ? element.value : element;\n return getter(dataItem, valueField) === getter(value, valueField);\n };\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.textField);\n }\n }\n }\n /**\n * @hidden\n */\n getSuggestion() {\n const hasSelected = !!this.selectionService.selected.length;\n const shouldSuggest = this.suggest && !this.backspacePressed && this.suggestedText && this.text;\n if (!hasSelected && shouldSuggest && this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase())) {\n return this.suggestedText;\n }\n else {\n this.suggestedText = undefined;\n }\n }\n navigate(index) {\n if (this.dataService.itemsCount === 0) {\n return;\n }\n this.text = getter(this.dataService.itemAt(index), this.textField);\n this.selectionService.select(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {\n return;\n }\n if (!hasSelected) {\n if (event.keyCode === Keys.ArrowDown) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp) {\n offset = 1;\n }\n }\n const action = this.navigationService.process({\n current: offset + focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter() {\n const text = this.text;\n const focused = this.selectionService.focused;\n const hasFocused = isPresent(focused) && focused !== -1;\n const previousText = getter(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter(this.dataService.itemAt(focused), this.textField);\n const textHasChanged = text !== previousText;\n this.togglePopup(false);\n this._filtering = false;\n if (this.allowCustom && textHasChanged) {\n if (text === focusedItemText || this.useSuggestion()) {\n this.selectionService.change(focused);\n }\n else {\n this.change(text, true);\n }\n }\n if (!this.allowCustom) {\n if (hasFocused) {\n this.selectionService.change(focused);\n }\n else if (textHasChanged) {\n this.change(text, true);\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n this.isFocused = false;\n const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n }\n else {\n this.change(currentText, true);\n }\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleEscape() {\n this.togglePopup(false);\n // clear the focus only if the focused item is not selected\n const hasSelected = this.selectionService.selected.length > 0;\n if (!hasSelected) {\n this.suggestedText = null;\n this.selectionService.focused = -1;\n }\n }\n /**\n * @hidden\n */\n handleNavigationOpen() {\n this.restoreItemFocus();\n this.togglePopup(true);\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = this.text ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n // Reset the selection prior to filter. If a match is present, it will be resolved. If a match is not present, it is not needed.\n this.selectionService.resetSelection([]);\n this.togglePopup(true);\n this._filtering = true;\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n }\n else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(candidate, isCustom = false) {\n if (isCustom) {\n this.customValueSubject.next(candidate);\n }\n else {\n this.valueSubject.next(candidate);\n }\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n this._previousDataItem = this.dataItem;\n }\n /**\n * @hidden\n */\n selectClick() {\n if (!this.touchEnabled) {\n this.searchbar.focus();\n }\n if (!this.isOpen) {\n this.restoreItemFocus();\n }\n this.togglePopup(!this.isOpen);\n }\n get listContainerClasses() {\n return ['k-list-container', 'k-reset'].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n get focusedItemText() {\n const focused = this.selectionService.focused;\n if (!isPresent(focused) || focused === -1) {\n return null;\n }\n const itemText = getter(this.dataService.itemAt(focused), this.textField);\n return !isPresent(itemText) ? \"\" : itemText.toString();\n }\n /**\n * Focuses the first match when there's text in the input field, but no focused item.\n */\n restoreItemFocus() {\n const hasFocus = isPresent(this.selectionService.focused) && this.selectionService.focused > -1;\n if (!hasFocus && this.text && this.dataService.itemsCount) {\n if (this.filterable) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else {\n this.search(this.text);\n }\n }\n }\n useSuggestion() {\n if (!(this.suggest && isPresent(this.searchbar.value))) {\n return false;\n }\n const focusedDataItem = this.dataService.itemAt(this.selectionService.focused);\n const focusedItemText = getter(focusedDataItem, this.textField);\n if (!isPresent(focusedItemText)) {\n return false;\n }\n return this.searchbar.value.toLowerCase() === focusedItemText.toLowerCase();\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n anchorAlign: anchorPosition,\n popupAlign: popupPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.popupHeight;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = '';\n this.filterChange.emit(this.filterText);\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this.zone.runOutsideAngular(() => \n // Roll up ComboBox on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n const isInDropDown = inDropDown(this.wrapper, target, this.popupRef);\n if (this.isFocused && !isInDropDown) {\n // Close popup and mobile keyboard if searchbar is focused\n this.zone.run(() => this.blur());\n }\n else if (this.isOpen && !isInDropDown) {\n // Close popup if the popup is opened via the select click\n this.zone.run(() => this.togglePopup(false));\n }\n }));\n }\n attachSelectClickHandler() {\n const selectElement = this.select.nativeElement;\n const event = pointers ? 'pointerdown' : 'click';\n this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxComponent, selector: \"kendo-combobox\", inputs: { focusableId: \"focusableId\", allowCustom: \"allowCustom\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valuePrimitive: \"valuePrimitive\", valueNormalizer: \"valueNormalizer\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", iconClass: \"iconClass\", loading: \"loading\", suggest: \"suggest\", clearButton: \"clearButton\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-combobox\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }, { propertyName: \"select\", first: true, predicate: [\"select\"], descendants: true, static: true }], exportAs: [\"kendoComboBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoComboBox',\n providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ],\n selector: 'kendo-combobox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], suggest: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], select: [{\n type: ViewChild,\n args: ['select', { static: true }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-combobox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * Renders the selected value of the dropdown. To define the header template, nest an `` tag\n * with the `kendoValueTemplate` directive inside the component tag.\n *\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `ValueTemplate` directive can only be used with the DropDownList and DropDownTree components.\n *\n * - [Using `ValueTemplate` with the DropDownList]({% slug templates_ddl %}#toc-value-template)\n * - [Using `ValueTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-value-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nValueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nValueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueTemplateDirective, selector: \"[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass FilterInputDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n }\n ngOnChanges() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n}\nFilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputDirective, selector: \"[filterInput]\", inputs: { focused: [\"filterInput\", \"focused\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[filterInput]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { focused: [{\n type: Input,\n args: ['filterInput']\n }] } });\n\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI DropDownList component for Angular]({% slug overview_ddl %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass DropDownListComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this._zone = _zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_ddl %}) functionality of the DropDownList.\n */\n this.filterable = false;\n /**\n * Enables a case-insensitive search. When filtration is disabled, use this option.\n */\n this.ignoreCase = true;\n /**\n * Sets the delay before an item search is performed. When filtration is disabled, use this option.\n */\n this.delay = 500;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the value is changed ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field\n * ([see example]({% slug overview_ddl %}#toc-events)).\n * You can filter the source based on the passed filtration value.\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the item selection is changed\n * ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownList.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownList gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.role = 'listbox';\n this.groupIndices = [];\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.filterText = \"\";\n this._isFocused = false;\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.word = \"\";\n this.last = \"\";\n this.filterFocused = new EventEmitter();\n this.filterBlurred = new EventEmitter();\n this.hostElementFocused = new EventEmitter();\n this.hostElementBlurred = new EventEmitter();\n this.selectionSubscription = new Subscription();\n this._open = false;\n this._popupSettings = { animate: true };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n }\n get width() {\n const wrapperWidth = isDocumentAvailable() ? this.wrapper.nativeElement.offsetWidth : 0;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get widgetTabIndex() {\n if (this.disabled) {\n return undefined;\n }\n const providedTabIndex = Number(this.tabIndex);\n const defaultTabIndex = 0;\n return !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get ariaOwns() {\n if (!this.isOpen) {\n return;\n }\n return this.listBoxId;\n }\n get ariaActivedescendant() {\n if (!isPresent(this.dataItem) || !this.isOpen) {\n return;\n }\n return this.optionPrefix + \"-\" + getter(this.dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the DropDownList.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the DropDownList.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(newValue) {\n if (!isPresent(newValue)) {\n this._previousDataItem = undefined;\n }\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownList.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_ddl %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_ddl %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddl %}#toc-primitive-values-from-object-fields)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = rounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n blurComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementFocused.emit();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get hostTabIndex() {\n return this.widgetTabIndex;\n }\n get isReadonly() {\n return this.readonly;\n }\n get isAriaExpanded() {\n return this.ariaExpanded;\n }\n get hostAriaOwns() {\n return this.ariaOwns;\n }\n get hostAriaActivedescendant() {\n return this.ariaActivedescendant;\n }\n get hostNoDataLabel() {\n return this.noDataLabel;\n }\n /**\n * @hidden\n */\n keydown(event) {\n const firstIndex = isPresent(this.defaultItem) ? -1 : 0;\n let focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;\n const isFilterFocused = this.filterable && this.isFocused && this.isOpen;\n if (isFilterFocused && isHomeEnd) {\n return;\n }\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);\n if (!hasSelected || focusedItemNotSelected) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {\n offset = 1;\n }\n }\n const eventData = event;\n const action = this.navigationService.process({\n current: focused + offset,\n max: this.dataService.itemsCount - 1,\n min: this.defaultItem ? -1 : 0,\n originalEvent: eventData\n });\n const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right);\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n !(leftRightKeys && this.filterable) &&\n action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`\n ) {\n eventData.preventDefault();\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n if (this.disabled || this.readonly || this.filterable) {\n return;\n }\n this.onKeyPress(event);\n }\n /**\n * @hidden\n */\n click(event) {\n event.preventDefault();\n this.focus();\n this.togglePopup(!this.isOpen);\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.localizationChangesSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.assignAriaDescribedBy();\n this.setComponentClasses();\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n const value = this.value;\n return !(value === 0 || value === false || value || this.defaultItem);\n }\n /**\n * @hidden\n */\n onFilterFocus() {\n this.filterFocused.emit();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangesSubscription) {\n this.localizationChangesSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('defaultItem', changes, false)) {\n this.disabledItemsService.defaultItem = this.defaultItem;\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'defaultItem', 'itemDisabled'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the DropDownList based on a provided index.\n * If there is a default item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = isPresent(this.defaultItem) ? -1 : 0;\n const isInRange = minIndex <= index && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the DropDownList.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownList.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddl %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n if (!open && this.filterable && this.isFocused) {\n this.focus();\n }\n this._toggle(open);\n }\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the DropDownList.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get optionLabelSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get isDisabledDefaultItem() {\n return this.disabledItemsService.isItemDisabled(this.defaultItem);\n }\n /**\n * @hidden\n */\n getText() {\n return this.text;\n }\n /**\n * @hidden\n */\n getDefaultItemText() {\n return getter(this.defaultItem, this.textField);\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n if (!this.filterable) {\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index);\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = clear ? this.firstFocusableIndex(0) : index;\n }\n onSelectionChange({ dataItem }) {\n this.updateState({ dataItem });\n this.selectionChange.emit(dataItem);\n // reassigning the value label ID as aria-deascibedby forces firefox/nvda, forefox/jaws to read\n // the new value when the popup is closed and the value is changed with the arrow keys (up/down)\n this.assignAriaDescribedBy();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n // Item selection when the popup is open.\n this.selectionSubscription.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), map(this.itemFromEvent.bind(this)))\n .subscribe(this.onSelectionChange.bind(this)));\n // Item selection when the popup is closed | clicked | enter, and so on.\n this.selectionSubscription.add(merge(this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)), this.selectionService.onChange).pipe(map(this.itemFromEvent.bind(this)), tap(_ => this.togglePopup(false)))\n .subscribe(({ dataItem, value: newValue, newSelection }) => {\n if (newSelection) {\n this.onSelectionChange({ dataItem });\n }\n const shouldUsePrevious = !isPresent(dataItem) && this._previousDataItem;\n const shouldUseNewValue = newValue !== getter(this.value, this.valueField);\n if (shouldUsePrevious) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else if (shouldUseNewValue) {\n this.value = this.valuePrimitive ? newValue : dataItem;\n this._previousDataItem = dataItem;\n this.emitChange(this.value);\n }\n this.clearFilter();\n }));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down, this.navigationService.left.pipe(skipWhile(() => this.filterable)), this.navigationService.right.pipe(skipWhile(() => this.filterable)), this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => !isNaN(event.index)))\n .subscribe((event) => this.selectionService.select(event.index));\n this.openSubscription = this.navigationService.open.subscribe(() => this.togglePopup(true));\n this.closeSubscription = this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n });\n this.enterSubscription = this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc\n .subscribe(this.handleEscape.bind(this));\n this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.hostElementFocused))))\n .subscribe(() => {\n this.hostElementBlurred.emit();\n });\n this._zone.runOutsideAngular(() => {\n this.componentBlurredSubscription =\n merge(this.hostElementBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.filterFocused)))), this.navigationService.tab).pipe(tap(event => event instanceof NavigationEvent && this.focus()), filter(() => this.isFocused))\n .subscribe(() => this.componentBlur());\n });\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownList on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.filterFocused) {\n // Close popup if filter is focused\n this.togglePopup(false);\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.focusComponent = this.focusComponent.bind(this);\n this.blurComponent = this.blurComponent.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.focusComponent, useCapture);\n document.addEventListener('blur', this.blurComponent, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.focusComponent, useCapture);\n document.removeEventListener('blur', this.blurComponent, useCapture);\n }\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.navigationSubscription.unsubscribe();\n this.openSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.componentBlurredSubscription.unsubscribe();\n this.filterBlurredSubscription.unsubscribe();\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n }\n itemFromEvent(event) {\n const index = event.indices[0];\n let dataItem = this.dataService.itemAt(index);\n dataItem = isPresent(dataItem) ? dataItem : this.currentOrDefault(index);\n const value = getter(dataItem, this.valueField);\n const newSelection = event.newSelection;\n return {\n dataItem,\n index,\n newSelection,\n value\n };\n }\n currentOrDefault(selectedIndex) {\n const defaultItemIndex = -1;\n if (isPresent(this.dataItem) && selectedIndex !== defaultItemIndex) {\n return this.dataItem;\n }\n else {\n return this.defaultItem;\n }\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n handleEnter() {\n if (this.isOpen) {\n this.selectionService.change(this.selectionService.focused);\n this.focus();\n }\n else {\n this.togglePopup(true);\n }\n }\n handleEscape() {\n if (isPresent(this.selectionService.selected[0])) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n else {\n this.togglePopup(false);\n this.clearFilter();\n }\n this.focus();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = \"\";\n this.cdr.markForCheck();\n this.filterChange.emit(this.filterText);\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.defaultItem && this.valueField && typeof this.defaultItem !== \"object\") {\n throw new Error(DropDownListMessages.defaultItem);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownListMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownListMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(DropDownListMessages.textAndValue);\n }\n }\n componentBlur() {\n this.isFocused = false;\n const selectionPresent = isPresent(this.selectionService.selected[0]);\n const valueHasChanged = selectionPresent && getter(this.value, this.valueField) !== getter(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);\n if (valueHasChanged ||\n hasObservers(this.close) ||\n hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n this.togglePopup(false);\n this.clearFilter();\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n const tagName = event.target.tagName.toLowerCase();\n if (tagName !== \"input\") {\n event.preventDefault();\n }\n }\n onKeyPress(event) {\n if (event.which === 0 || event.keyCode === Keys.Enter) {\n return;\n }\n let character = String.fromCharCode(event.charCode || event.keyCode);\n if (this.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === \" \") {\n event.preventDefault();\n }\n this.word += character;\n this.last = character;\n this.search();\n }\n search() {\n clearTimeout(this.typingTimeout);\n if (!this.filterable) {\n this.typingTimeout = setTimeout(() => {\n this.word = \"\";\n }, this.delay);\n this.selectNext();\n }\n }\n selectNext() {\n let data = this.dataService\n .filter((item) => isPresent(item) && !item.header && !this.disabledItemsService.isItemDisabled(item))\n .map((item) => {\n if (this.dataService.grouped) {\n return { item: item.value, itemIndex: item.offsetIndex };\n }\n return { item: item, itemIndex: this.dataService.indexOf(item) };\n });\n const isInLoop = sameCharsOnly(this.word, this.last);\n let dataLength = data.length;\n let hasSelected = !isNaN(this.selectionService.selected[0]);\n let startIndex = !hasSelected ? 0 : this.selectionService.selected[0];\n let text, index, defaultItem;\n if (this.defaultItem && !this.disabledItemsService.isItemDisabled(this.defaultItem)) {\n defaultItem = { item: this.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop && hasSelected ? 1 : 0;\n data = shuffleData(data, startIndex, defaultItem);\n index = 0;\n for (; index < dataLength; index++) {\n text = getter(data[index].item, this.textField);\n const loopMatch = Boolean(isInLoop && matchText(text, this.last, this.ignoreCase));\n const nextMatch = Boolean(matchText(text, this.word, this.ignoreCase));\n if (loopMatch || nextMatch) {\n index = data[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n this.navigate(index);\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n navigate(index) {\n this.selectionService.select(index);\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const prop = dataItem => getter(dataItem, valueField);\n let comparer;\n if (this.dataService.grouped) {\n comparer = (element) => {\n return prop(element.value) === prop(value);\n };\n }\n else {\n comparer = (element) => {\n return prop(element) === prop(value);\n };\n }\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n setState() {\n const value = this.value;\n const valueField = this.valueField;\n const textField = this.textField;\n const primitive = this.valuePrimitive;\n if (this.defaultItem) {\n const defaultValue = getter(this.defaultItem, valueField);\n const currentValue = getter(value, valueField);\n if (!isPresent(value) || (currentValue === defaultValue)) {\n this.updateState({ dataItem: this.defaultItem, confirm: true });\n this.resetSelection(-1);\n if (this.filterable && this.filterText && this.dataService.itemsCount) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n return;\n }\n }\n const resolved = this.findDataItem({ valueField, value });\n // The data and value are of same shape,\n // for example, value: 'foo', data: ['foo', 'bar']\n // or value: { value: 1, text: 'foo' }, data: [{ value: 1, text: 'foo' }].\n const ofSameType = !(primitive && textField);\n if (resolved.dataItem) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && ofSameType) {\n this.updateState({ dataItem: value });\n this.resetSelection();\n }\n else if (this._previousDataItem) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection();\n }\n }\n /**\n * @hidden\n */\n handleFilter(event) {\n this.filterChange.emit(event.target.value);\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n const trimmed = currentValue.replace(this.valueLabelId, '').trim();\n // reset the value label ID to force readers to read the new value\n this.valueLabelId = guid();\n // add to the current value - don't replace it\n const newValue = `${this.valueLabelId} ${trimmed}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: { iconClass: \"iconClass\", loading: \"loading\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", defaultItem: \"defaultItem\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", ignoreCase: \"ignoreCase\", delay: \"delay\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", focusableId: [\"id\", \"focusableId\"] }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", selectionChange: \"selectionChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"click\": \"click($event)\" }, properties: { \"class.k-dropdownlist\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.focusableId\", \"attr.dir\": \"this.dir\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-owns\": \"this.hostAriaOwns\", \"attr.aria-activedescendant\": \"this.hostAriaActivedescendant\", \"attr.aria-label\": \"this.hostNoDataLabel\" } }, providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoDropDownList\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownList',\n providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ],\n selector: 'kendo-dropdownlist',\n template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], ignoreCase: [{\n type: Input\n }], delay: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdownlist']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], focusableId: [{\n type: Input,\n args: ['id']\n }, {\n type: HostBinding,\n args: ['attr.id']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }, {\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostAriaOwns: [{\n type: HostBinding,\n args: ['attr.aria-owns']\n }], hostAriaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], hostNoDataLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], click: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Renders the content of the custom list item in the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-customizing-the-item-content)).\n * The template context is set to the current component.\n * To get a reference to the current text that is typed by the\n * user, use the `let-customItem` directive.\n *\n * > The `CustomItemTemplate` directive can only be used with the MultiSelect component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * New Item: {{customItem}}\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n *\n */\nclass CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCustomItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCustomItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomItemTemplateDirective, selector: \"[kendoMultiSelectCustomItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectCustomItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the selected tag value of the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-tag-template)).\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `TagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagTemplateDirective, selector: \"[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the grouped tag values in the MultiSelect\n * ([see example]({% slug summarytagmode_multiselect %})).\n * The template context is set to the current component.\n * To get a reference to the current grouped\n * data items collection, use the `let-dataItems` directive.\n *\n * > The `GroupTagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItems.length}} item(s) selected\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nGroupTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupTagTemplateDirective, selector: \"[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Arguments for the `removeTag` event. The `removeTag` event fires when a tag is about\n * to the removed. If you cancel the event, the removal is prevented.\n */\nclass RemoveTagEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param dataItem - The data item or an array of data items that will be removed.\n */\n constructor(dataItem) {\n super();\n this.dataItem = dataItem;\n }\n}\n\n/**\n * @hidden\n */\nconst normalizeCheckboxesSettings = (settings) => {\n if (isObject(settings)) {\n const defaultSettings = { enabled: true, checkOnClick: true };\n return Object.assign({}, defaultSettings, settings);\n }\n return { enabled: Boolean(settings), checkOnClick: true };\n};\n\n/**\n * @hidden\n */\nclass TagListComponent {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.rounded = 'medium';\n this.fillMode = 'solid';\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this._size = 'medium';\n }\n set size(size) {\n this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));\n if (size) {\n this.renderer.addClass(this.hostElement.nativeElement, getSizeClass('chip-list', size));\n }\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get hostId() {\n return this.id;\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter(tag, propField);\n }\n isTagDisabled(tag, positionIndex) {\n if (this.isGroupTag(tag)) {\n /** The `positionIndex` is used to determine after how many single tags is the group tag displayed =>\n * => it is used to increment the indices inside the group tag so that we determine the actual position index\n * of each group tag item as they appear in the `value` (important to check against `disabledIndices`)\n * e.g. `disabledIndices = [0, 1]` && `tags = ['Small', ['Medium', 'Large']]` => without the incrementation with\n * `positionIndex`, the group tag would yield [0, 1] as indices, while it should yield [1, 2]\n */\n return tag.every((_tag, index) => this.disabledIndices.has(index + positionIndex));\n }\n return this.disabledIndices.has(positionIndex);\n }\n deleteTag(event, tag, index) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (!this.disabled && event.which === 1) {\n this.removeTag.emit({ tag, index });\n }\n }\n itemId(tag, index) {\n if (tag) { //because of custom values\n return this.tagPrefix + \"-\" + this.tagProp(tag, this.valueField, index);\n }\n }\n isGroupTag(tag) {\n return tag instanceof Array;\n }\n tagAriaHidden(index) {\n return isPresent(this.focused) && this.focused !== index;\n }\n getPropField(tag, prop, index) {\n // Needed for MultiSelectTree value binding (Heterogeneous Data)\n const fieldsCount = prop.length - 1;\n if (typeof prop === 'string') {\n return prop;\n }\n else if (this.valueDepth) {\n const depth = this.valueDepth[index];\n return fieldsCount < depth ? prop[fieldsCount] : prop[depth];\n }\n else {\n return prop.find(item => item in tag);\n }\n }\n}\nTagListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTagListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagListComponent, selector: \"kendo-taglist\", inputs: { tags: \"tags\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", focused: \"focused\", template: \"template\", groupTemplate: \"groupTemplate\", disabled: \"disabled\", tagPrefix: \"tagPrefix\", id: \"id\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", disabledIndices: \"disabledIndices\" }, outputs: { removeTag: \"removeTag\" }, host: { properties: { \"class.k-input-values\": \"this.hostClasses\", \"class.k-chip-list\": \"this.hostClasses\", \"class.k-selection-multiple\": \"this.hostClasses\", \"attr.id\": \"this.hostId\" } }, ngImport: i0, template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-taglist',\n template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { tags: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], focused: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tagPrefix: [{\n type: Input\n }], id: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], disabledIndices: [{\n type: Input\n }], removeTag: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input-values']\n }, {\n type: HostBinding,\n args: ['class.k-chip-list']\n }, {\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], hostId: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent)\n};\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the [Kendo UI MultiSelect component for Angular]({% slug overview_multiselect %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass MultiSelectComponent {\n constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.dataService = dataService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.differs = differs;\n this.renderer = renderer;\n this._zone = _zone;\n this.touchEnabled = touchEnabled;\n this.listBoxId = guid();\n this.tagListId = guid();\n this.tagPrefix = \"tag-\" + guid();\n this.optionPrefix = \"option-\" + guid();\n this.focusedTagIndex = undefined;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether to close the options list of the MultiSelect after the item selection is finished\n * ([see example]({% slug openstate_multiselect %}#toc-keeping-the-options-list-open-while-on-focus)).\n * @default true\n */\n this.autoClose = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.\n */\n this.filterable = false;\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to an empty array and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags\n * ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Specifies whether the MultiSelect allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_multiselect %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback function which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n *\n * @param { Any } value - The custom value that is defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return {\n * value: Math.floor(Math.random() * (1000 - 100) + 1000), //generate unique valueField\n * text: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => {\n const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();\n const matchingValue = this.value.find(comparer);\n if (matchingValue) {\n return matchingValue;\n }\n const matchingItem = this.dataService.find(comparer);\n return matchingItem ? matchingItem : userInput;\n }));\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_multiselect %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the MultiSelect.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselecttree %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this.role = 'combobox';\n this.initialized = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n this._placeholder = '';\n this._open = false;\n this._value = [];\n this._popupSettings = { animate: true };\n this._checkboxes = { enabled: false };\n this._isFocused = false;\n this.selectedDataItems = [];\n this.customValueSubject = new Subject();\n this.observableSubscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n this.data = [];\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n /**\n * Focuses a specific item of the MultiSelect based on a provided index.\n * If there is a custom item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = this.allowCustom ? -1 : 0;\n const isInRange = minIndex <= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the MultiSelect.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * @hidden\n */\n onSearchBarFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * Blurs the MultiSelect.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onSearchBarBlur() {\n if (!this.isFocused) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n hasObservers(this.close) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the MultiSelect.\n *\n * > The data has to be provided in an array-like list of items.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n //Use length instead of itemsCount because of grouping\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the MultiSelect. It can be either of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(values) {\n this._value = values ? values : [];\n if (!this.differ && this.value) {\n this.differ = this.differs.find(this.value).create();\n }\n this.valueChangeDetected = true;\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The hint which is displayed when the component is empty.\n * When the values are selected, it disappears.\n */\n set placeholder(text) {\n this._placeholder = text || '';\n }\n get placeholder() {\n return this.selectedDataItems.length ? '' : this._placeholder;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Specifies whether checkboxes will be rendered before each item in the popup list.\n */\n set checkboxes(settings) {\n this._checkboxes = normalizeCheckboxesSettings(settings);\n }\n get checkboxes() {\n return this._checkboxes;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_multiselect %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Configures the popup of the MultiSelect.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_multiselect %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n get dir() {\n return this.direction;\n }\n get disabledClass() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n /**\n * @hidden\n */\n hostMousedown(event) {\n const inputElement = this.searchbar.input.nativeElement;\n if (event.button === 0) {\n if (this.isFocused && this.isOpen && event.target === inputElement) {\n return;\n }\n if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {\n this.searchbar.focus();\n }\n this.togglePopup(!this.isOpen);\n event.preventDefault();\n }\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get customItemSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get activeDescendant() {\n const focusedTagIndex = this.focusedTagIndex;\n const focusedListIndex = this.selectionService.focused;\n let prefix;\n let item;\n if (isPresent(focusedTagIndex) && !this.isOpen) {\n item = this.tags[focusedTagIndex];\n prefix = this.tagPrefix;\n }\n else if (isPresent(focusedListIndex) && focusedListIndex !== -1 && this.isOpen) {\n item = this.dataService.itemAt(focusedListIndex);\n prefix = this.optionPrefix;\n }\n else {\n return null;\n }\n return prefix + \"-\" + getter(item, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n verifySettings() {\n if (!isDevMode() || this.value.length === 0) {\n return;\n }\n if (!isArray(this.value)) {\n throw new Error(MultiselectMessages.array);\n }\n if (this.valuePrimitive === true && isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.primitive);\n }\n if (this.valuePrimitive === false && !isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(MultiselectMessages.textAndValue);\n }\n }\n /**\n * @hidden\n */\n change(event) {\n const isCustomItem = (isPresent(event.added) || isPresent(event.removed)) && (event.added === -1 || event.removed === -1);\n if (isCustomItem) {\n this.addCustomValue(this.text);\n return; // The change is emited asynchronosly.\n }\n // Existing items.\n if (isPresent(event.added)) {\n const dataItem = this.dataService.itemAt(event.added);\n const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;\n this.value = [...this.value, newItem];\n }\n if (isPresent(event.removed)) {\n const dataItem = this.dataService.itemAt(event.removed);\n const filter = (item) => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.selectionService.focused = event.removed;\n this.cdr.detectChanges();\n }\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n setState(value) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const selection = selectedIndices(this.value, data, this.valueField);\n this.selectionService.resetSelection(selection);\n if (this.disabledItemsService.isIndexDisabled(this.selectionService.focused)) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n if (this.isOpen && this.selectionService.focused === undefined) {\n if (this.dataService.itemsCount > 0) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else if (this.allowCustom) {\n this.selectionService.focused = -1;\n }\n }\n if (this.valuePrimitive && !this.valueField) {\n this.selectedDataItems = value.slice();\n }\n if (isObjectArray(value) || this.valuePrimitive && this.valueField) {\n this.selectedDataItems = resolveAllValues(value, data, this.valueField);\n }\n if (this.selectedDataItems.length < value.length) {\n this.selectedDataItems = value\n .map(current => {\n const dataItem = this.selectedDataItems.find(item => getter(item, this.valueField) === getter(current, this.valueField));\n return isPresent(dataItem) ? dataItem : this.resolveDataItemFromTags(current);\n })\n .filter(dataItem => isPresent(dataItem));\n }\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.disabledIndices = this.disabledItemsMapper();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilter(text) {\n this.text = text;\n if (text && !this.isOpen) {\n this.openPopup();\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else {\n this.searchTextAndFocus(text);\n }\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n /**\n * @hidden\n */\n clearFilter() {\n if (this.filterable && this.text) {\n this.filterChange.emit(\"\");\n }\n this.text = \"\";\n /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.\n Calling cdr.detectChanges to clear the input value as a result of property binding\n causes JAWS to read outdated tag values in IE upon tag selection for some reason. */\n this.searchbar.input.nativeElement.value = \"\";\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;\n const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;\n const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || navigateInput && !selectValue) {\n return;\n }\n const eventData = event;\n const focused = isNaN(this.selectionService.focused) ? -1 : this.selectionService.focused;\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: this.allowCustom && this.text ? -1 : 0,\n open: this.isOpen,\n originalEvent: eventData\n });\n if (action !== NavigationAction.Undefined &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag }) {\n const eventArgs = new RemoveTagEvent(tag);\n if (this.disabled || this.readonly) {\n return;\n }\n this.focus();\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n if (tag instanceof Array) {\n this.removeGroupTag(tag);\n }\n else {\n this.removeSingleTag(tag);\n }\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.clearFilter();\n const selected = this.selectionService.selected;\n this.value = this.value.filter((_item, index) => this.disabledItemsService.isIndexDisabled(selected[index]));\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n addCustomValue(text) {\n this.customValueSubject.next(text);\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n ngDoCheck() {\n const valueChanges = this.differ && this.differ.diff(this.value);\n if (valueChanges && !this.valueChangeDetected) {\n this.setState(this.value);\n }\n this.valueChangeDetected = false;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n });\n this.setState(this.value);\n this.setComponentClasses();\n this.initialized = true;\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createCustomValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes)) {\n this.setState(this.value);\n }\n }\n ngAfterViewInit() {\n this.searchbar.setInputSize();\n }\n ngOnDestroy() {\n this._toggle(false);\n this.unsubscribeEvents();\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the respective `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required for opening the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the MultiSelect.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.text = \"\";\n this.value = [];\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n // NG MODEL BINDINGS\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n onTagMapperChange() {\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.cdr.markForCheck();\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n const isOpen = () => this.isOpen;\n const isClosed = () => !this.isOpen;\n const isTagFocused = () => !this.isOpen && this.focusedTagIndex !== undefined;\n [\n this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)),\n this.navigationService.esc.subscribe(this.closePopup.bind(this)),\n this.navigationService.enter.pipe(filter(isOpen)).subscribe(this.handleEnter.bind(this)),\n this.navigationService.open.subscribe(this.openPopup.bind(this)),\n this.navigationService.close.subscribe(this.handleClose.bind(this)),\n this.navigationService.up.pipe(filter(isOpen)).subscribe((event) => this.handleUp(event.index)),\n this.navigationService.home.pipe(filter(() => isClosed)).subscribe(this.handleHome.bind(this)),\n this.navigationService.end.pipe(filter(() => isClosed)).subscribe(this.handleEnd.bind(this)),\n this.navigationService.backspace.pipe(filter(isTagFocused)).subscribe(this.handleBackspace.bind(this)),\n this.navigationService.delete.pipe(filter(isTagFocused)).subscribe(this.handleDelete.bind(this)),\n this.navigationService.left.subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)),\n this.navigationService.right.subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)),\n this.navigationService.down.subscribe((event) => this.handleDownKey(event.index))\n ].forEach(s => this.observableSubscriptions.add(s));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up MultiSelect on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if ((this.isFocused || this.isOpen) && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n this.blur();\n if (this.isOpen) {\n this.togglePopup(false);\n }\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.observableSubscriptions.unsubscribe();\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n removeGroupTag(dataItems) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const dataItemValues = new Set(dataItems.map(item => getter(item, this.valueField)));\n this.value = this.value.filter(value => {\n const index = selectedIndices([value], data, this.valueField)[0];\n const isDataItemDisabled = this.disabledItemsService.isIndexDisabled(index);\n return !dataItemValues.has(getter(value, this.valueField)) || isDataItemDisabled;\n });\n this.emitValueChange();\n }\n removeSingleTag(dataItem) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const index = selectedIndices([dataItem], data, this.valueField)[0];\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return;\n }\n if (isNumber(index)) {\n this.selectionService.unselect(index);\n this.selectionService.focused = index;\n this.togglePopup(false);\n }\n else { // the deleted item is not present in the source\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n const { selected } = this.selectionService;\n return new Set(this.selectedDataItems.reduce((indices, _item, index) => {\n if (this.disabledItemsService.isIndexDisabled(selected[index])) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n createCustomValueStream() {\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n this.customValueSubscription = this.customValueSubject.pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), this.valueNormalizer, catchError(() => {\n this.loading = false;\n this.disabled = false;\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n this.createCustomValueStream();\n return of(null);\n }))\n .subscribe((normalizedValue) => {\n this.loading = false;\n this.disabled = false;\n if (isPresent(normalizedValue)) { // if valueNormalizer returns `null` or `undefined` custom value is discarded\n const newValue = this.valuePrimitive ? getter(normalizedValue, this.valueField) : normalizedValue;\n const itemIndex = this.dataService.indexOf(newValue);\n const customItem = itemIndex === -1;\n if (this.value.indexOf(newValue) === -1) {\n this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);\n if (!customItem) {\n this.selectionService.add(itemIndex);\n }\n else {\n this.value = [...this.value, newValue];\n }\n }\n else {\n if (!customItem && this.selectionService.isSelected(itemIndex)) {\n this.selectionService.unselect(itemIndex);\n this.selectionService.focused = itemIndex;\n }\n else {\n this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);\n }\n }\n this.emitValueChange();\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n });\n }\n handleItemChange(event) {\n this.change(event);\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleEnter(event) {\n const service = this.selectionService;\n const focusedIndex = this.selectionService.focused;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focusedIndex === -1) {\n if (this.allowCustom && this.text) {\n this.addCustomValue(this.text);\n }\n return; // Clear filter & close are done at customValueSubscription due to race conditions.\n }\n if (service.isSelected(focusedIndex)) {\n service.unselect(focusedIndex);\n service.focused = focusedIndex;\n }\n else {\n service.add(focusedIndex);\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleClose() {\n this.closePopup();\n this.searchbar.focus();\n }\n handleEnd() {\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome() {\n this.focusedTagIndex = 0;\n }\n handleUp(index) {\n this.selectionService.focused = index;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n this.handleRemoveTag({ tag: this.tags[this.tags.length - 1] });\n this.searchbar.focus();\n }\n }\n handleDelete() {\n this.handleRemoveTag({ tag: this.tags[this.focusedTagIndex] });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n handleLeftKey() {\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleDownKey(index) {\n if (this.isOpen) {\n this.selectionService.focused = index || this.firstFocusableIndex(0);\n }\n else {\n this.openPopup();\n }\n }\n handleRightKey() {\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n }\n findIndex(text, startsFrom = 0) {\n let itemText;\n text = text.toLowerCase();\n let index = this.dataService.findIndex(item => {\n if (this.dataService.grouped) {\n itemText = getter(item.value, this.textField);\n }\n else {\n itemText = getter(item, this.textField);\n }\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return text && itemText.startsWith(text);\n }, startsFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index + 1 > this.dataService.itemsCount) ? -1 : this.findIndex(text, index + 1);\n }\n else {\n return index;\n }\n }\n searchTextAndFocus(text) {\n const index = this.findIndex(text);\n this.selectionService.focused = index;\n }\n closePopup() {\n this.togglePopup(false);\n this.focusedTagIndex = undefined;\n }\n openPopup() {\n this.togglePopup(true);\n this.focusedTagIndex = undefined;\n }\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.togglePopup(false);\n });\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n }\n resolveDataItemFromTags(value) {\n if (!(this.tags && this.tags.length && isPresent(value))) {\n return undefined;\n }\n // Flattening the tags array in case of a summary tag occurrence.\n const tags = this.tags.reduce((acc, tag) => {\n const items = isArray(tag) ? tag : [tag];\n acc.push(...items);\n return acc;\n }, []);\n return tags.find(tag => getter(tag, this.valueField) === getter(value, this.valueField));\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n const nextIndex = index + 1;\n return (nextIndex < maxIndex) ? this.firstFocusableIndex(nextIndex) : undefined;\n }\n else {\n return index;\n }\n }\n nextTick(f) {\n this._zone.runOutsideAngular(() => {\n // Use `setTimeout` instead of a resolved promise\n // because the latter does not wait long enough.\n setTimeout(() => this._zone.run(f));\n });\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: DataService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectComponent, selector: \"kendo-multiselect\", inputs: { focusableId: \"focusableId\", autoClose: \"autoClose\", loading: \"loading\", data: \"data\", value: \"value\", valueField: \"valueField\", textField: \"textField\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", placeholder: \"placeholder\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", checkboxes: \"checkboxes\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", valuePrimitive: \"valuePrimitive\", clearButton: \"clearButton\", tagMapper: \"tagMapper\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\" }, outputs: { filterChange: \"filterChange\", valueChange: \"valueChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\", removeTag: \"removeTag\" }, host: { listeners: { \"mousedown\": \"hostMousedown($event)\" }, properties: { \"class.k-multiselect\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-loading\": \"this.isLoading\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\" } }, providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"customItemTemplate\", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoMultiSelect\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelect',\n providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ],\n selector: 'kendo-multiselect',\n template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: DataService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], textField: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], removeTag: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], customItemTemplate: [{\n type: ContentChild,\n args: [CustomItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-multiselect']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n\n/**\n * Renders the column cell content of the MultiColumnComboBox. To define a column cell template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnCellTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) and data item are available as context variables:\n *\n * - `let-dataItem=\"dataItem\"` (`any`) - The current data item. Also available as implicit context variable.\n * - `let-column=\"column\"` ([`ColumnComponent`]({% slug api_dropdowns_comboboxcolumncomponent %})) - The current column configuration obejct.\n */\nclass ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnCellTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the column header content of the MultiColumnComboBox. To define a column header template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnHeaderTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) is available as implicit context variable.\n */\nclass ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnHeaderTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nclass ComboBoxColumnComponent {\n constructor() {\n /**\n * Sets the visibility of the column.\n *\n * @default false\n */\n this.hidden = false;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n }\n}\nComboBoxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nComboBoxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxColumnComponent, selector: \"kendo-combobox-column\", inputs: { field: \"field\", title: \"title\", width: \"width\", hidden: \"hidden\", style: \"style\", headerStyle: \"headerStyle\", class: \"class\", headerClass: \"headerClass\", media: \"media\" }, queries: [{ propertyName: \"cellTemplate\", first: true, predicate: ColumnCellTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: ColumnHeaderTemplateDirective, descendants: true }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-combobox-column',\n template: ''\n }]\n }], propDecorators: { cellTemplate: [{\n type: ContentChild,\n args: [ColumnCellTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [ColumnHeaderTemplateDirective, { static: false }]\n }], field: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], hidden: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], class: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], media: [{\n type: Input\n }] } });\n\n/**\n * Persists the intially resolved scrollbar width value.\n */\nlet SCROLLBAR_WIDTH;\n/**\n * @hidden\n *\n * Gets the default scrollbar width accoring to the current environment.\n */\nconst scrollbarWidth = () => {\n // calculate scrollbar width only once, then return the memoized value\n if (isNaN(SCROLLBAR_WIDTH)) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return SCROLLBAR_WIDTH;\n};\n/**\n * Checks if all columns have a valid user-defined width.\n */\nconst allColumnsWidthsSet = (columns) => {\n if (!isPresent(columns) || columns.length === 0) {\n return false;\n }\n return columns.toArray().every(column => !isNaN(column.width) && column.width > 0);\n};\n/**\n * @hidden\n *\n * Calculates the row width according to the passed columns width configuration.\n * Hidden columns and such that don't match the provided media query are ignored.\n * If some of the columns don't have a preset width or have an invalid width value, the function returns `null`.\n */\nconst getRowWidthFromColumnsMeta = (columns) => {\n if (!allColumnsWidthsSet(columns)) {\n return null;\n }\n const bordersWidth = 2;\n const initialRowWidht = scrollbarWidth() + bordersWidth;\n return columns.reduce((totalWidth, column) => {\n if (!column.hidden && column.matchesMedia) {\n totalWidth += parseInt(column.width, 10);\n }\n return totalWidth;\n }, initialRowWidht);\n};\n\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nclass MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, touchEnabled) {\n super(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, touchEnabled);\n /**\n * @hidden\n */\n this.hostClasses = true;\n this.removeWindowResizeListener = noop;\n // the row height in @progress/kendo-theme-default\n this.defaultVirtualItemHeight = 36;\n // use a smaller virtual page size as columns with multiple cells can cause poor performance\n this.defaultVirtualPageSize = 30;\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n set header(header) {\n // updates the header padding on initial render as the resize senzor doesn't kick in as early\n this.updateHeaderPadding(header && header.nativeElement);\n }\n get popupWidth() {\n const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n const min = `${wrapperOffsetWidth}px`;\n const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;\n const max = isNaN(width) ? width : `${width}px`;\n return { min, max };\n }\n /**\n * @hidden\n */\n get tableSizeClass() {\n return `${this.size ? getSizeClass('table', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n return [\n 'k-popup',\n 'k-dropdowngrid-popup'\n ].concat(this.popupSettings.popupClass || []);\n }\n ngAfterViewInit() {\n this.updateColumnsMediaState();\n this.addWindowResizeListener();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeWindowResizeListener();\n }\n /**\n * @hidden\n */\n textFrom(dataItem, field) {\n return getter(dataItem, field);\n }\n /**\n * @hidden\n *\n * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.\n * As when the items container has a scrollbar, the column headers and the cells are misaligned.\n * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.\n */\n updateHeaderPadding(header) {\n if (!isPresent(header)) {\n return;\n }\n // the scrollbar is rendered on the left in rtl\n const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';\n if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {\n this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);\n }\n else {\n this.renderer.removeStyle(header, headerPaddingPosition);\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(this.data) && this.data.length > 0 && this.data.some(item => !isObject(item))) {\n throw new Error(MultiColumnComboBoxMessages.data);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiColumnComboBoxMessages.textAndValue);\n }\n super.verifySettings();\n }\n addWindowResizeListener() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.zone.runOutsideAngular(() => this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this)));\n }\n updateColumnsMediaState() {\n if (!(isPresent(this.columns) && isDocumentAvailable())) {\n return;\n }\n this.columns.forEach(column => {\n const matchesMedia = !column.media || window.matchMedia(column.media).matches;\n if (column.matchesMedia !== matchesMedia) {\n column.matchesMedia = matchesMedia;\n if (this.isOpen) {\n // enter the zone only if the popup is actually open\n // update its width in case it's dependent on the columns' width\n this.zone.run(() => this.popupRef.popupElement.style.width = this.popupWidth.max);\n }\n }\n });\n }\n}\nMultiColumnComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }], target: i0.ɵɵFactoryTarget.Component });\nMultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiColumnComboBoxComponent, selector: \"kendo-multicolumncombobox\", host: { properties: { \"class.k-dropdowngrid\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\" } }, providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ], queries: [{ propertyName: \"columns\", predicate: ComboBoxColumnComponent }], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n
\n
\n\n \n \n \n\n \n \n \n
\n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n
\n\n \n \n\n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ],\n selector: 'kendo-multicolumncombobox',\n template: `\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n \n
\n\n \n \n \n\n \n \n \n
\n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n
\n\n \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowngrid']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], columns: [{\n type: ContentChildren,\n args: [ComboBoxColumnComponent]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }] } });\n\n/**\n * Renders the content of each node in the DropDownTree. To define a node template, nest an `` tag\n * with the `kendoDropDownTreeNodeTemplate` directive inside the `` tag.\n *\n * The current data item and hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - The current data item. Available as implicit context variable.\n * - `let-index=\"index\"` (`string`) - The current item hierarchical index.\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst DEFAULT_POPUP_SETTINGS$1 = { animate: true };\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nclass DropDownTreeComponent {\n constructor(wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'listbox';\n this.ariaHasPopup = 'tree';\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_ddt %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$1;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n this.valuePrimitive = false;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled$1;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible$1;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the DropDownTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * @hidden\n */\n this.selectedKeys = [];\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n /**\n * @hidden\n *\n * Used to associate the value label with the wrapper via aria-describedby.\n */\n this.valueLabelId = `k-${guid$1()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._tabindex = 0;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n this.navigationService.process({\n originalEvent: eventData\n });\n }\n set treeview(treeview) {\n if (treeview) {\n if (this.isFocused && !this.filterable || this.touchEnabled) {\n treeview.focus();\n }\n // the treeview animations are initially disabled (we don't want expand animations during popup opening)\n // re-enables the animations for user interaction\n treeview.animate = true;\n this._treeview = treeview;\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Sets the data of the DropDownTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the DropDownTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Keeps the current `dataItem` object in order to resolve selection.\n * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.\n */\n set dataItem(item) {\n this._dataItem = item;\n this.setState();\n }\n get dataItem() {\n return this._dataItem ? this._dataItem : this.value;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = Number(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.assignAriaDescribedBy();\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.text && !this.placeholder;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.togglePopup(false);\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n let isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Focuses the DropDownTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Resets the value of the DropDownTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = undefined;\n this.dataItem = undefined;\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddt %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n onSelectionChange({ dataItem, index }) {\n this.valueDepth = index.split('_').length - 1;\n const valueField = this.getField(this.valueField, dataItem);\n const newValue = this.valuePrimitive ?\n getter$1(valueField)(dataItem) :\n dataItem;\n const shouldUpdateValue = newValue !== this.value;\n if (shouldUpdateValue) {\n this.value = newValue;\n this.dataItem = dataItem;\n this.emitValueChange(this.value);\n }\n this.togglePopup(false);\n this.focus();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.value = undefined;\n this.dataItem = undefined;\n this.clearState();\n this.valueChange.emit(undefined);\n this.emitValueChange();\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // If the user resets the value by providing null/undefined we need to reset the `dataItem`\n // Because upon initialization of the component the `writeValue` is being called twice -\n // first time with `null` value regardless of sync/async value - an extra check is added to\n // distinguish between client reset and initial phanotm 'null' value\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItem = null;\n }\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownTreeMessages.primitive);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.dataItem !== \"object\") {\n throw new Error(DropDownTreeMessages.dataItem);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownTreeMessages.object);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(DropDownTreeMessages.textAndValue);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && isPresent(this.value) && !isPresent(this.valueDepth)) {\n throw new Error(DropDownTreeMessages.valueDepth);\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n getText(textField, dataItem) {\n if (isPresent(dataItem) && isPresent(textField)) {\n const field = this.getField(textField, dataItem);\n return getter$1(field)(dataItem);\n }\n return null;\n }\n /**\n * @hidden\n *\n * Determines the `valueField` and `textField` for a specific level in the data set\n * @param field - the field value (string | string[])\n * @param value - current value\n */\n getField(field, value) {\n const fieldsCount = field.length - 1;\n if (typeof field === 'string') {\n // If the `valueField` | `textField` is the same for all levels\n return field;\n }\n else if (isPresent(this.valueDepth)) {\n // When `valueDepth` can be defined from the index on selectionChange or provided by the user\n return fieldsCount < this.valueDepth ? field[fieldsCount] : field[this.valueDepth];\n }\n else {\n // Fallback: Look to find a match of each field in the current data item\n // Side effect may occur if all of the listed fields are present in the data item\n return field.find(item => item in value);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleEscape() {\n this.togglePopup(false);\n this.focus();\n }\n setState() {\n if (isPresent(this.value) && isPresent(this.dataItem) && isPresent(this.valueField)) {\n this.text = this.getText(this.textField, this.dataItem);\n const valueField = this.getField(this.valueField, this.dataItem);\n this.selectBy = valueField;\n this.selectedKeys = [getter$1(valueField)(this.dataItem)];\n }\n else {\n this.clearState();\n }\n this.cdr.markForCheck();\n }\n clearState() {\n this.text = undefined;\n this.selectedKeys = [];\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n }), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), this.navigationService.esc\n .subscribe(() => this.handleEscape()), this.navigationService.tab.subscribe(() => this.focus()), this.navigationService.down.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n }), this.navigationService.up.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (this.filterable && this.treeview['navigationService']['activeIndex'] === '0') {\n this.filterInput.nativeElement.focus();\n }\n }));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownTree on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)\n const newValue = `${this.valueLabelId} ${currentValue.trim()}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeComponent, selector: \"kendo-dropdowntree\", inputs: { loading: \"loading\", clearButton: \"clearButton\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", dataItem: \"dataItem\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", itemDisabled: \"itemDisabled\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", focusableId: \"focusableId\" }, outputs: { open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\" } }, providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ], queries: [{ propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }], exportAs: [\"kendoDropDownTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n
\n \n `, isInline: true, components: [{ type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: [\"isSelected\", \"selectBy\", \"kendoTreeViewSelectable\", \"selectedKeys\"], outputs: [\"selectedKeysChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownTree',\n providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ],\n selector: 'kendo-dropdowntree',\n template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], focusableId: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass BaseCheckDirective {\n addItem(item) {\n if (this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems.push(candidate);\n this.checkedKeys.add(this.getKey(candidate));\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems = this.checkedItems\n .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(this.getKey(candidate));\n }\n isItemChecked(item) {\n const level = item.index.split('_').length - 1;\n item.level = level;\n return this.checkedKeys.has(this.getKey(item));\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => this.getKey(item)));\n }\n /**\n * Adds the item's depth to the item's value to allow duplicate values on different levels.\n *\n * @param item - The checked key.\n * @returns { string } - A string key consisting of the item's `valueField` value and its depth.\n */\n getKey(item) {\n if (isArray(this.valueField)) {\n return valueFrom(item, this.valueField) + '_' + item.level;\n }\n return valueFrom(item, this.valueField);\n }\n}\nBaseCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nBaseCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseCheckDirective, inputs: { valueField: \"valueField\", checkedItems: \"checkedItems\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, decorators: [{\n type: Directive\n }], propDecorators: { valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckAllDirective extends BaseCheckDirective {\n constructor(element, zone, cdr, renderer) {\n super();\n this.element = element;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n }\n handleChange(event) {\n // Need to store the current checkbox state at the moment of click\n this.currentCheckedState = event.checked;\n this.currentIndeterminateState = this.isIndeterminate;\n this.treeview.nodes.map((_value, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n this.checkNode(itemLookup);\n });\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n get isIndeterminate() {\n const isIndeterminate = this.treeview.nodes.some((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.someChecked(itemLookup);\n });\n return this.isChecked ? false : isIndeterminate;\n }\n get isChecked() {\n const isChecked = this.treeview.nodes.every((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.allChecked(itemLookup);\n });\n return isChecked;\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);\n this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);\n }\n }\n ngOnInit() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n checkNode(itemLookup) {\n if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {\n return;\n }\n const pendingCheck = [];\n const filter = (item) => this.treeview.isVisible(item.dataItem, item.index) &&\n !this.treeview.isDisabled(item.dataItem, item.index);\n pendingCheck.push(itemLookup.item);\n fetchDescendentNodes(itemLookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n if (this.lastAction === 'check') {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n return;\n }\n if (this.currentCheckedState) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n allChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.every(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) && this.allChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked && this.isItemChecked(lookup.item);\n }\n someChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.some(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) || this.someChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked || this.isItemChecked(lookup.item);\n }\n}\nCheckAllDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nCheckAllDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckAllDirective, selector: \"[checkAll]\", inputs: { lastAction: \"lastAction\", treeview: \"treeview\", checkedItems: \"checkedItems\", valueField: \"valueField\", focused: [\"checkAll\", \"focused\"] }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, host: { listeners: { \"change\": \"handleChange($event.target)\" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: '[checkAll]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { lastAction: [{\n type: Input\n }], treeview: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], valueField: [{\n type: Input\n }], focused: [{\n type: Input,\n args: ['checkAll']\n }], checkedItemsChange: [{\n type: Output\n }], handleChange: [{\n type: HostListener,\n args: ['change', ['$event.target']]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckDirective extends BaseCheckDirective {\n constructor(treeView) {\n super();\n this.treeView = treeView;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe(this.handleCheckedChange.bind(this)));\n this.treeView.isChecked = this.getCheckedState.bind(this);\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkable)) {\n this.toggleCheckOnClick();\n }\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n getCheckedState(dataItem, index) {\n if (this.isItemChecked({ dataItem, index })) {\n return 'checked';\n }\n else if (this.checkable.checkChildren && this.isItemIndeterminate(this.treeView.itemLookup(index))) {\n return 'indeterminate';\n }\n else {\n return 'none';\n }\n }\n handleCheckedChange(node) {\n this.checkNode(node);\n // parents should be checked if `checkChildren` is set to `true` (single config option for both)\n const checkParents = this.checkable.checkChildren;\n if (checkParents) {\n this.checkParents(node.parent);\n }\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.checkable.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick\n .pipe(filter(event => event.type === 'click'))\n .subscribe(event => {\n const lookup = this.treeView.itemLookup(event.item.index);\n this.handleCheckedChange(lookup);\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(lookup) {\n if (this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index)) {\n return;\n }\n const target = lookup.item;\n const pendingCheck = [target];\n // TODO: extract in a separate `checkChildren` method?\n if (this.checkable.checkChildren) {\n const filter = (item) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n }\n const shouldCheck = !this.isItemChecked(target);\n pendingCheck.forEach(item => {\n if (shouldCheck) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n checkParents(parent) {\n let currentParent = parent;\n while (currentParent) {\n const allChildrenSelected = currentParent.children.every(item => this.isItemChecked(item));\n if (allChildrenSelected) {\n this.addItem(currentParent.item);\n }\n else {\n this.removeItem(currentParent.item);\n }\n currentParent = currentParent.parent;\n }\n }\n isItemIndeterminate(lookup) {\n const children = lookup.children;\n if (!Array.isArray(children) || children.length === 0) {\n return false;\n }\n let index = 0;\n let child = children[index];\n while (isPresent(child)) {\n if (this.isItemChecked(child.item) || this.isItemIndeterminate(child)) {\n return true;\n }\n index += 1;\n child = children[index];\n }\n return false;\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: i1$1.TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: { checkable: \"checkable\", valueField: \"valueField\", checkedItems: \"checkedItems\" }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeCheckable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.TreeViewComponent }]; }, propDecorators: { checkable: [{\n type: Input\n }], valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], checkedItemsChange: [{\n type: Output\n }] } });\n\nconst DEFAULT_POPUP_SETTINGS = { animate: true };\nconst DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nclass MultiSelectTreeComponent {\n constructor(wrapper, popupService, renderer, navigationService, _zone, localization, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.renderer = renderer;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'combobox';\n this.ariaHasPopup = 'tree';\n /**\n * Sets the levels in the data set where the values can be found when `valueField` is an Array.\n * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.\n */\n this.valueDepth = [];\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_multiselecttree %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be a primitive one.\n */\n this.valuePrimitive = false;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default false\n */\n this.loadOnDemand = false;\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n * @default true\n */\n this.clearButton = true;\n /**\n * Renders the built-in input element for filtering the MultiSelectTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the MultiSelectTree manually]({% slug filtering_multiselecttree %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoMultiSelectTreeHierarchyBinding`]({% slug api_dropdowns_multiselecttreehierarchybindingdirective %}) and [`kendoMultiSelectTreeFlatBinding`]({% slug api_dropdowns_multiselecttreeflatbindingdirective %}) directives.\n * @default false\n */\n this.filterable = false;\n /**\n * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.\n * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.\n * @default false\n */\n this.checkAll = false;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Fires each time the user focuses the MultiSelectTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelectTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_multiselecttree %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselect %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.checkedItems = [];\n /**\n * @hidden\n */\n this.checkBy = (item) => item;\n /**\n * @hidden\n */\n this.showAfter = 0;\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n this.tagListId = guid$1();\n this.tagPrefix = \"tag-\" + guid$1();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.lastAction = 'check';\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n get ariaDescribedBy() {\n return this.tagListId;\n }\n get ariaActiveDescendant() {\n return this.focusedTagId;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n const action = this.navigationService.process({\n originalEvent: eventData\n });\n if (action === NavigationAction.Open) {\n eventData.preventDefault();\n }\n }\n set treeview(treeview) {\n this._treeview = treeview;\n if (treeview) {\n // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input\n if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {\n treeview.focus();\n }\n /**\n * the treeview animations are initially disabled (we don't want expand animations during popup opening)\n * re-enables the animations for user interaction\n * The Promise is required to properly change the `animate` property when\n * the popup is appended to a container and opened upon initialization.\n * Otherwise, the \"Expression has changed...\" type error will be thrown.\n */\n Promise.resolve(null).then(() => this.treeview.animate = true);\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = parseNumber(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Configures the popup of the MultiSelectTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);\n // `detectChanges` needed, otherwise upon value initialization and `appendTo` property\n // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError\n this.cdr.detectChanges();\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines the checkable settings of the MultiSelecTree nodes.\n * If no value is provided, the default [`CheckableSettings`]({% slug api_dropdowns_multiselecttreecheckablesettings %}) are applied.\n */\n set checkableSettings(settings) {\n this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);\n }\n get checkableSettings() {\n return this._checkableSettings;\n }\n /**\n * Sets the data of the MultiSelectTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the MultiSelectTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(value) {\n this._value = value ? value : [];\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Keeps the current `dataItems` object in order to resolve selection.\n * Needs to be provided when when programmatically setting a `value` and `valuePrimitive` is set to `true`.\n */\n set dataItems(items) {\n this._dataItems = (items || []).map((item, index) => {\n if (hasProps(item, ['dataItem', 'index', 'level'])) {\n return item;\n }\n return {\n dataItem: item,\n index: null,\n level: this.valueDepth[index] || 0\n };\n });\n this.setState();\n }\n get dataItems() {\n return this._dataItems || this.value.map((value, index) => ({\n dataItem: value,\n index: null,\n level: this.valueDepth[index] || 0\n }));\n }\n /**\n * @hidden\n */\n get focusedTagId() {\n if (!isPresent(this.focusedTagIndex) || this.isOpen) {\n return null;\n }\n const dataItem = this.tags[this.focusedTagIndex];\n return `${this.tagPrefix}-${valueFrom({ dataItem }, this.valueField)}`;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n get isTagFocused() {\n return !this.isOpen && this.focusedTagIndex !== undefined;\n }\n get isTreeViewActive() {\n return this.treeview && this.treeview.isActive;\n }\n get isWrapperActive() {\n return document.activeElement === this.wrapper.nativeElement;\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n get isCheckAllActive() {\n return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n if (anyChanged(['valueDepth', 'value', 'dataItems'], changes, false)) {\n if (changes.value && !changes.dataItems && !this.valuePrimitive) {\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n this.dataItems = this.value;\n }\n else {\n // Re-map the dataItems because `valueDepth` is not yet available when the check directive parses the items\n this.dataItems = this.dataItems.map((item, index) => (Object.assign(Object.assign({}, item), { level: this.valueDepth[index] || 0 })));\n }\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !Boolean(this.placeholder) && (!isPresent(this.value) || this.value.length === 0);\n }\n /**\n * Focuses the MultiSelectTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the MultiSelectTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Focuses a specific item of the MultiSelectTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Resets the value of the MultiSelectTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = [];\n this.dataItems = [];\n this.valueDepth = [];\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselecttree %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n // Re-focus the treeview if `close` is prevented\n if (this.isOpen && this.treeview) {\n if (this.lastNodeOnFocus) {\n this.lastNodeOnFocus.setAttribute('tabindex', '0');\n }\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n /**\n * @hidden\n */\n handleNodeClick(node) {\n if (!this.isFocused) {\n // Re-focus the MultiSelectTree when popup close is prevented and a node is clicked\n // On click the focus should be on the clicked element which is why we need to update the lastNodeOnFocus\n const parent = node.originalEvent.target.parentElement.parentElement;\n this.lastNodeOnFocus = parent;\n this.focus();\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n this._zone.run(() => {\n this.focusedTagIndex = undefined;\n });\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n else {\n this.removeTreeViewFromTabOrder();\n }\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n handleCheckedItemsChange(items) {\n this.valueDepth = items.map(item => item.level);\n this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';\n this.dataItems = items.slice();\n this.updateValue(this.dataItems);\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag, index }) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventArgs = new RemoveTagEvent(tag);\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n // Remove tags based on their position index\n if (tag instanceof Array) {\n // Remove group tag\n this.dataItems = this.dataItems.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n }\n else {\n // Remove single tag\n this.dataItems = this.dataItems.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n }\n this.updateValue(this.dataItems);\n // focus the wrapper if the component is not focused - the floating label reacts to focus/blur\n if (!this.isFocused) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleTagMapperChange(showAfter) {\n this.showAfter = parseNumber(showAfter);\n this.setTags();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.value = this.value.filter((_item, index) => this.disabledIndices.has(index));\n this.dataItems = this.dataItems.filter((_item, index) => this.disabledIndices.has(index));\n this.valueDepth = this.valueDepth.filter((_depth, index) => this.disabledIndices.has(index));\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n if (!this.valuePrimitive) {\n this.dataItems = this.value;\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get checkAllCheckboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n toggleCheckAll() {\n this.checkAllInput.nativeElement.focus();\n this.checkAllInput.nativeElement.click();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiSelectTreeMessages.textAndValue);\n }\n if (!isArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.array);\n }\n if (this.value.length > 0) {\n if (this.valuePrimitive && this.value.some(item => isObject(item))) {\n throw new Error(MultiSelectTreeMessages.primitive);\n }\n const isEveryDataItemObject = this.dataItems.every(item => isObject(item.dataItem));\n if (this.valuePrimitive && !isArray(this.dataItems)) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && !isEveryDataItemObject) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && this.dataItems.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.dataItemsLength);\n }\n if (!this.valuePrimitive && !isObjectArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.object);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && !isArray(this.valueDepth)) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length === 0) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.valueDepthLength);\n }\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), merge(this.navigationService.close, this.navigationService.esc).subscribe(() => {\n this.focus();\n this.togglePopup(false);\n }), this.navigationService.tab.subscribe(this.handleTabKey.bind(this)), this.navigationService.up.subscribe(this.handleUpKey.bind(this)), this.navigationService.down.subscribe(this.handleDownKey.bind(this)), this.navigationService.left\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(() => !this.isOpen)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => !this.isOpen)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(() => this.isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(() => this.isTagFocused)).subscribe(this.handleDelete.bind(this)));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n handleTabKey() {\n this.focus();\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }\n handleUpKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Prevent toggling the focus between the filterInput and the wrapper elements with `up` key\n if (this.isWrapperActive) {\n return;\n }\n const isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';\n // Current focus is on the filter input => should focus the wrapper\n if (this.filterable && this.isFilterActive) {\n this.focus();\n // Current focus is on the treeview first node => should focus the check all checkbox if enabled\n }\n else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {\n this.checkAllInput.nativeElement.focus();\n // Current focus is either on the check all checkbox or the treeview's first node\n // => should focus either the filter input (if enabled) or the wrapper\n }\n else if (this.isCheckAllActive || isFirstNodeActive) {\n if (this.filterable) {\n this.filterInput.nativeElement.focus();\n }\n else {\n this.focus();\n }\n }\n }\n handleDownKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Current focus is on the wrapper => should focus the filter input\n if (this.filterable && this.isWrapperActive) {\n this.filterInput.nativeElement.focus();\n // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled\n }\n else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {\n this.checkAllInput.nativeElement.focus();\n // Should focus the treeview if filterable and check all are disabled\n }\n else if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n this.focusedTagIndex = undefined;\n }\n handleRightKey(event) {\n event.originalEvent.preventDefault();\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n else if (!this.focusedTagIndex) {\n this.focusedTagIndex = 0;\n }\n }\n handleLeftKey(event) {\n event.originalEvent.preventDefault();\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleEnd(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = 0;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n const tag = this.tags[this.tags.length - 1];\n const index = this.tags.length - 1;\n this.handleRemoveTag({ tag, index });\n }\n }\n handleDelete() {\n const tag = this.tags[this.focusedTagIndex];\n const index = this.focusedTagIndex;\n this.handleRemoveTag({ tag, index });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n setState() {\n if (isPresent(this.dataItems) && isPresent(this.valueField)) {\n this.setTags();\n this.checkedItems = this.dataItems.slice();\n }\n this.cdr.markForCheck();\n }\n setTags() {\n const source = this.dataItems.map(item => item.dataItem);\n this.tags = this.tagMapper(source);\n this.disabledIndices = this.disabledItemsMapper();\n }\n updateValue(value) {\n const newValue = this.valuePrimitive ?\n value.map(item => valueFrom(item, this.valueField)) :\n value.map(item => item.dataItem);\n this.value = newValue;\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n return new Set(this.dataItems.reduce((indices, item, index) => {\n if (this.itemDisabled(item.dataItem, item.index)) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: i0.Renderer2 }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeComponent, selector: \"kendo-multiselecttree\", inputs: { tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", popupSettings: \"popupSettings\", checkableSettings: \"checkableSettings\", data: \"data\", value: \"value\", dataItems: \"dataItems\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", loading: \"loading\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", loadOnDemand: \"loadOnDemand\", focusableId: \"focusableId\", clearButton: \"clearButton\", filterable: \"filterable\", checkAll: \"checkAll\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", itemDisabled: \"itemDisabled\", tagMapper: \"tagMapper\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", valueChange: \"valueChange\", removeTag: \"removeTag\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.aria-describedby\": \"this.ariaDescribedBy\", \"attr.aria-activedescendant\": \"this.ariaActiveDescendant\" } }, providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ], queries: [{ propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }, { propertyName: \"checkAllInput\", first: true, predicate: [\"checkAllInput\"], descendants: true }], exportAs: [\"kendoMultiSelectTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: CheckAllDirective, selector: \"[checkAll]\", inputs: [\"lastAction\", \"treeview\", \"checkedItems\", \"valueField\", \"checkAll\"], outputs: [\"checkedItemsChange\"] }, { type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: [\"checkable\", \"valueField\", \"checkedItems\"], outputs: [\"checkedItemsChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelectTree',\n providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ],\n selector: 'kendo-multiselecttree',\n template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: i0.Renderer2 }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaDescribedBy: [{\n type: HostBinding,\n args: ['attr.aria-describedby']\n }], ariaActiveDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], checkAllInput: [{\n type: ViewChild,\n args: ['checkAllInput', { static: false }]\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], checkableSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], dataItems: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], loading: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], filterable: [{\n type: Input\n }], checkAll: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], removeTag: [{\n type: Output\n }], filterChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * The nodes which will be displayed by the DropDownTree.\n */\n set data(nodes) {\n this.dropDownTree.nodes = nodes;\n this.nodes = nodes;\n }\n ;\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nDropDownTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeFlatBindingDirective, selector: \"[kendoDropDownTreeFlatBinding]\", inputs: { data: [\"kendoDropDownTreeFlatBinding\", \"data\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoDropDownTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\nconst INDEX_SEPARATOR = '_';\nconst nodeIndex = (index = '', parentIndex = '') => {\n return `${parentIndex}${parentIndex ? INDEX_SEPARATOR : ''}${index}`;\n};\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter$1(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass DropDownTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * The nodes which will be displayed by the DropDownTree.\n */\n set data(nodes) {\n this.dropDownTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nDropDownTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeHierarchyBindingDirective, selector: \"[kendoDropDownTreeHierarchyBinding]\", inputs: { data: [\"kendoDropDownTreeHierarchyBinding\", \"data\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoDropDownTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * The nodes which will be displayed by the MultiSelectTree.\n */\n set data(nodes) {\n this.multiSelectTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nMultiSelectTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeFlatBindingDirective, selector: \"[kendoMultiSelectTreeFlatBinding]\", inputs: { data: [\"kendoMultiSelectTreeFlatBinding\", \"data\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass MultiSelectTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * The nodes which will be displayed by the MultiSelectTree.\n */\n set data(nodes) {\n this.multiSelectTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nMultiSelectTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeHierarchyBindingDirective, selector: \"[kendoMultiSelectTreeHierarchyBinding]\", inputs: { data: [\"kendoMultiSelectTreeHierarchyBinding\", \"data\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nclass DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n *\n * Ensures a user-defined `isNodeExpanded` callback will not be overriden by the default directive setup.\n * Implemented as a value setter in the base directive, this just overrides the input name.\n */\n set isExpanded(value) {\n this.dropDownTree.isExpanded = value;\n }\n ;\n}\nDropDownTreesExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, deps: [{ token: i1$1.ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreesExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreesExpandDirective, selector: \"[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]\", inputs: { isExpanded: [\"isNodeExpanded\", \"isExpanded\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input,\n args: ['isNodeExpanded']\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_FILTER_SETTINGS = {\n caseSensitive: false,\n operator: 'startsWith'\n};\n/**\n * Implements an event handler for the `filterChange` event of a DropDowns component\n * which performs simple data filtering.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [\"Albania\", \"Andorra\", \"Armenia\", \"Austria\", \"Azerbaijan\"];\n * }\n * ```\n * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).\n */\nclass FilterDirective {\n constructor(component) {\n this.component = component;\n /**\n * @hidden\n *\n * Sets whether the filtering functionality is enabled on component init.\n */\n this.filterable = true;\n this._data = [];\n }\n /**\n * The initial data that will be used as a source array for the filtering operations.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.component.filterable = this.filterable;\n this.filterChangeSubscription = this.component.filterChange\n .subscribe(this.handleFilterChange.bind(this));\n }\n ngOnDestroy() {\n if (isPresent(this.filterChangeSubscription)) {\n this.filterChangeSubscription.unsubscribe();\n }\n }\n handleFilterChange(query) {\n this.component.data = this.data.filter(item => this.matchesAnyField(item, query));\n }\n matchesAnyField(item, query) {\n const normalizedQuery = this.normalizeValue(query);\n const { fields } = this.filterSettings;\n // if no filter fields are present, we are dealing with primitive data\n if (fields.length === 0) {\n return this.checkItem(item, normalizedQuery);\n }\n return fields.some(field => this.checkItem(getter(item, field), normalizedQuery));\n }\n checkItem(target, query) {\n target = this.normalizeValue(target);\n if (this.filterSettings.operator === 'contains') {\n return target.indexOf(query) !== -1;\n }\n else {\n return target.indexOf(query) === 0;\n }\n }\n normalizeValue(value) {\n const normalizedValue = isPresent(value) ? value.toString() : '';\n return this.filterSettings.caseSensitive ? normalizedValue : normalizedValue.toLowerCase();\n }\n getFilterFields(providedFields) {\n // ignore provided fields if the component deals with primitive data\n if (!this.component.textField && !this.component.valueField) {\n return [];\n }\n if (isArray(providedFields) && providedFields.length > 0) {\n return providedFields;\n }\n else {\n // the autocomplete uses `valueField` for text extraction\n const textField = this.component.textField || this.component.valueField;\n return [textField];\n }\n }\n get filterSettings() {\n const settings = this.rawSettings;\n const providedFields = isPresent(settings) && typeof settings === 'object' ? settings.fields : [];\n return Object.assign({}, DEFAULT_FILTER_SETTINGS, settings, { fields: this.getFilterFields(providedFields) });\n }\n}\nFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, deps: [{ token: FilterableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterDirective, selector: \"[kendoDropDownFilter]\", inputs: { data: \"data\", rawSettings: [\"kendoDropDownFilter\", \"rawSettings\"], filterable: \"filterable\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownFilter]'\n }]\n }], ctorParameters: function () { return [{ type: FilterableComponent }]; }, propDecorators: { data: [{\n type: Input\n }], rawSettings: [{\n type: Input,\n args: ['kendoDropDownFilter']\n }], filterable: [{\n type: Input\n }] } });\n\nconst SHARED_DIRECTIVES = [\n HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The noData template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, declarations: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective], exports: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\nconst INTERNAL_DIRECTIVES = [\n ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective], imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], exports: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_DIRECTIVES],\n exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],\n imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelectTree to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug api_dropdowns_multiselecttreesummarytagdirective %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass MultiSelectTreeSummaryTagDirective {\n constructor(multiSelectTreeComponent) {\n this.multiSelectTreeComponent = multiSelectTreeComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectTreeComponent.handleTagMapperChange(this.showAfter);\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectTreeComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n // tags provided in an array are rendered as a single group tag\n return [...tags.slice(0, showAfter), tags.slice(showAfter)];\n }\n else {\n return tags;\n }\n };\n }\n}\nMultiSelectTreeSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, deps: [{ token: MultiSelectTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeSummaryTagDirective, selector: \"[kendoMultiSelectTreeSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectTreeSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectTreeComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectTreeSummaryTag']\n }] } });\n\nconst DROPDOWNTREE_DIRECTIVES = [\n DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective\n];\n/**\n * @hidden\n */\nclass DropDownTreesModule {\n}\nDropDownTreesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownTreesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, declarations: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective], imports: [SharedModule, TreeViewModule], exports: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective, SharedDirectivesModule] });\nDropDownTreesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, imports: [[SharedModule, TreeViewModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNTREE_DIRECTIVES],\n exports: [DROPDOWNTREE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule, TreeViewModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelect to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug summarytagmode_multiselect %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass SummaryTagDirective {\n constructor(multiSelectComponent) {\n this.multiSelectComponent = multiSelectComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectComponent.onTagMapperChange();\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n let result;\n result = tags.slice(0, showAfter);\n result.push(tags.slice(showAfter, tags.length));\n return result;\n }\n else {\n return tags;\n }\n };\n }\n}\nSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, deps: [{ token: MultiSelectComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SummaryTagDirective, selector: \"[kendoMultiSelectSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectSummaryTag']\n }] } });\n\nconst AUTOCOMPLETE_DIRECTIVES = [\n AutoCompleteComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `AutoCompleteComponent`—The AutoComplete component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass AutoCompleteModule {\n}\nAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoCompleteComponent], imports: [SharedModule], exports: [AutoCompleteComponent, SharedDirectivesModule] });\nAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AUTOCOMPLETE_DIRECTIVES],\n exports: [AUTOCOMPLETE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst COMBOBOX_DIRECTIVES = [\n ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ComboBoxComponent`—The ComboBox component class.\n * - `MultiColumnComboBoxComponent`—The MultiColumnComboBox component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `ColumnHeaderTemplateDirective`—The column header template directive.\n * - `ColumnCellTemplateDirective`—The column cell template directive.\n */\nclass ComboBoxModule {\n}\nComboBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nComboBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, declarations: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective], imports: [SharedModule], exports: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective, SharedDirectivesModule] });\nComboBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMBOBOX_DIRECTIVES],\n exports: [COMBOBOX_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst DROPDOWNLIST_DIRECTIVES = [\n DropDownListComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownListComponent`—The DropDownList component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass DropDownListModule {\n}\nDropDownListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, declarations: [DropDownListComponent], imports: [SharedModule], exports: [DropDownListComponent, SharedDirectivesModule] });\nDropDownListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNLIST_DIRECTIVES],\n exports: [DROPDOWNLIST_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst MULTISELECT_DIRECTIVES = [\n MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `MultiSelectComponent`—The MultiSelect component class.\n * - `SummaryTagDirective`—The MultiSelect summary tag directive.\n * - `ItemTemplateDirective`—The item template directive.\n * - `CustomItemTemplateDirective`—The custom item template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n */\nclass MultiSelectModule {\n}\nMultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective, SharedDirectivesModule] });\nMultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MULTISELECT_DIRECTIVES],\n exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dropdowns components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Dropdowns module\n * import { DropDownsModule } from '@progress/kendo-angular-dropdowns';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DropDownsModule], // import the Dropdowns module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DropDownsModule {\n}\nDropDownsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\nDropDownsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, imports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutoCompleteComponent, AutoCompleteModule, CheckAllDirective, CheckDirective, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, ComboBoxColumnComponent, ComboBoxComponent, ComboBoxModule, CustomItemTemplateDirective, CustomMessagesComponent, DropDownListComponent, DropDownListModule, DropDownTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, DropDownsModule, FilterDirective, FilterInputDirective, FilterableComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTagTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, ListComponent, ListItemDirective, LocalizedMessagesDirective, MultiColumnComboBoxComponent, MultiSelectComponent, MultiSelectModule, MultiSelectTreeComponent, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, MultiSelectTreeSummaryTagDirective, NoDataTemplateDirective, NodeTemplateDirective, PreventableEvent, RemoveTagEvent, SearchBarComponent, SelectableDirective, SharedDirectivesModule, SharedModule, SummaryTagDirective, TagListComponent, TagTemplateDirective, TemplateContextDirective, ValueTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, Component, Input, ViewChild, ElementRef, Directive, EventEmitter, Output, forwardRef, InjectionToken, isDevMode, ViewContainerRef, HostBinding, ContentChild, NgModule } from '@angular/core';\nimport * as i3 from '@angular/forms';\nimport { FormControl, Validators, FormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, zip, fromEvent, interval } from 'rxjs';\nimport { take, map, filter as filter$1, concatMap, takeUntil } from 'rxjs/operators';\nimport * as i1$3 from '@progress/kendo-angular-toolbar';\nimport { ToolBarToolComponent, ToolBarComponent, ToolBarModule } from '@progress/kendo-angular-toolbar';\nimport { isDocumentAvailable, guid, hasObservers, KendoInput, Keys } from '@progress/kendo-angular-common';\nimport { marks as marks$1, nodes as nodes$1, Schema, createTable, insertNode, alignBlocks, alignRemoveRules, expandToWordWrap, toggleInlineFormat, bold, cleanFormatting, applyLink, applyInlineStyle, insertText, italic, strikethrough, subscript, superscript, underline, removeLink, link, selectAll, isAligned, alignCenterRules, alignJustifyRules, alignLeftRules, alignRightRules, formatBlockElements, getHtml, indent, insertImage, toggleOrderedList, toggleUnorderedList, outdent, redo, setHtml, undo, blockquote, addColumnBefore, addColumnAfter, addRowBefore, addRowAfter, deleteRow, deleteColumn, mergeCells, splitCell, deleteTable, hasMark, activeNode, canIndentAsListItem, canBeIndented, indentRules, hasNode, canOutdentAsListItem, outdentRules, isIndented, getActiveMarks, expandSelection, getSelectionText as getSelectionText$1, getNodeFromSelection, getMark, removeComments, sanitize, removeAttribute, sanitizeStyleAttr, sanitizeClassAttr, pasteCleanup, parseContent, AllSelection, TextSelection, Plugin, PluginKey, history, keymap, buildListKeymap, buildKeymap, baseKeymap, gapCursor, imageResizing, tableResizing, tableEditing, caretColor, placeholder, EditorState, EditorView } from '@progress/kendo-editor-common';\nexport { Decoration, DecorationSet, EditorState, EditorView, InputRule, Mark, MarkType, Node, NodeType, Plugin, PluginKey, Schema, Transaction, baseKeymap, dropCursor, gapCursor, history, inputRules, keymap, tableNodes, textblockTypeInputRule, wrappingInputRule } from '@progress/kendo-editor-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@progress/kendo-angular-dialog';\nimport { DialogContentBase, DialogModule } from '@progress/kendo-angular-dialog';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport * as i4 from '@progress/kendo-angular-buttons';\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\nimport * as i3$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i5 from '@progress/kendo-angular-inputs';\nimport { ColorPickerComponent, ColorPickerModule, NumericTextBoxModule, CheckBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport * as i1$2 from '@progress/kendo-angular-dropdowns';\nimport { DropDownListComponent, DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport * as i2 from '@progress/kendo-angular-popup';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-editor',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1653579355,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nconst hasAttrs = (attrs, exclude) => {\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getAttrs = (attrs, exclude) => {\n const result = {};\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n result[attr] = attrs[attr];\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nconst getAttributes = (dom) => {\n const result = {};\n let attributes = dom.attributes, attr;\n for (let i = 0; i < attributes.length; i++) {\n attr = attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n};\n/**\n * @hidden\n */\nconst serializeDOMAttrs = (el) => Array.from(el.attributes)\n .reduce((acc, curr) => Object.assign({}, acc, { [curr.name]: curr.value }), {});\n/**\n * @hidden\n */\nconst commonAttributes = () => {\n return Object.assign({}, createDefaultAttributes(['class', 'id', 'style']));\n};\n/**\n * @hidden\n */\nconst createDefaultAttributes = (attrs = []) => {\n return Object.assign({}, attrs.reduce((acc, curr) => (Object.assign(Object.assign({}, acc), { [curr]: { default: null } })), {}));\n};\n/**\n * @hidden\n */\nconst hole = 0;\n/**\n * @hidden\n */\nconst isSchemaNode = (schemaNodeName) => (node) => node.type.name === schemaNodeName;\n/**\n * @hidden\n */\nconst isTable = isSchemaNode('table');\n/**\n * @hidden\n */\nconst isTableBody = isSchemaNode('table_body');\n/**\n * @hidden\n */\nconst isTableHead = isSchemaNode('table_head');\n/**\n * @hidden\n */\nconst isTableFoot = isSchemaNode('table_foot');\n/**\n * @hidden\n */\nconst isTableRow = isSchemaNode('table_row');\n/**\n * @hidden\n */\nconst isTableCell = isSchemaNode('table_cell');\n/**\n * @hidden\n */\nconst isTableHeaderCell = isSchemaNode('table_header');\n\nconst createSemanticNode = (tagName) => ({\n // Uncaught SyntaxError: Mixing inline and block content (in content expression '(block | inline)*')\n // content: '(block | inline)*',\n content: 'block*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: tagName,\n getAttrs: getAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? [tagName, getAttrs(node.attrs), hole] : [tagName, hole]\n});\n/**\n * @hidden\n */\nconst semanticTagNames = ['article', 'main', 'nav', 'header', 'footer', 'aside', 'section'];\n/**\n * @hidden\n */\nconst semanticNodes = semanticTagNames.reduce((acc, curr) => Object.assign(acc, { [curr]: createSemanticNode(curr) }), {});\n\n/**\n * @hidden\n */\nconst marks = marks$1;\nconst nodes = Object.assign(nodes$1, semanticNodes);\n/**\n * @hidden\n */\nconst schema = new Schema({\n marks,\n nodes\n});\n\n/**\n * @hidden\n */\nconst insertTable = (attrs) => (state, dispatch) => {\n const newTable = createTable(state.schema.nodes, attrs.rows, attrs.cols);\n if (newTable) {\n insertNode(newTable, true)(state, dispatch);\n }\n};\n\nconst alignRemove = (state, dispatch) => alignBlocks(alignRemoveRules)(state, dispatch);\nconst inlineCommand = {\n bold: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, bold), { applyToWord })),\n cleanFormatting: (options) => cleanFormatting(options),\n createLink: attrs => expandToWordWrap(applyLink, { mark: 'link', attrs: attrs.value, applyToWord: attrs.applyToWord }),\n fontFamily: attrs => expandToWordWrap(applyInlineStyle, { style: 'font-family', value: attrs.value, applyToWord: attrs.applyToWord }),\n fontSize: attrs => expandToWordWrap(applyInlineStyle, { style: 'font-size', value: attrs.value, applyToWord: attrs.applyToWord }),\n insertFile: attrs => expandToWordWrap(applyLink, { mark: 'link', attrs: attrs, applyToWord: attrs.applyToWord }),\n insertText: text => insertText(text),\n italic: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, italic), { applyToWord })),\n strikethrough: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, strikethrough), { applyToWord })),\n subscript: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, subscript), { applyToWord })),\n superscript: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, superscript), { applyToWord })),\n underline: (applyToWord) => expandToWordWrap(toggleInlineFormat, Object.assign(Object.assign({}, underline), { applyToWord })),\n unlink: () => removeLink(link),\n foreColor: attrs => expandToWordWrap(applyInlineStyle, { style: 'color', value: attrs.value, applyToWord: attrs.applyToWord }),\n backColor: attrs => expandToWordWrap(applyInlineStyle, { style: 'background-color', value: attrs.value, applyToWord: attrs.applyToWord }),\n selectAll: () => (state, dispatch) => selectAll(state, dispatch)\n};\nconst blockCommand = {\n alignCenter: () => (state, dispatch) => isAligned(state, alignCenterRules) ? alignRemove(state, dispatch) : alignBlocks(alignCenterRules)(state, dispatch),\n alignJustify: () => (state, dispatch) => isAligned(state, alignJustifyRules) ? alignRemove(state, dispatch) : alignBlocks(alignJustifyRules)(state, dispatch),\n alignLeft: () => (state, dispatch) => isAligned(state, alignLeftRules) ? alignRemove(state, dispatch) : alignBlocks(alignLeftRules)(state, dispatch),\n alignRight: () => (state, dispatch) => isAligned(state, alignRightRules) ? alignRemove(state, dispatch) : alignBlocks(alignRightRules)(state, dispatch),\n format: formatAttr => formatBlockElements(formatAttr.tag),\n getHTML: () => getHtml,\n indent: () => indent,\n insertImage: attrs => insertImage(attrs),\n // think about changing the command name.\n insertOrderedList: () => toggleOrderedList,\n // think about changing the command name.\n insertUnorderedList: () => toggleUnorderedList,\n outdent: () => outdent,\n redo: () => redo,\n setHTML: ({ content, parseOptions }) => setHtml(content, 'setHTML', parseOptions),\n undo: () => undo,\n blockquote: () => blockquote\n};\nconst tableCommand = {\n insertTable: attr => insertTable(attr),\n addColumnBefore: () => addColumnBefore,\n addColumnAfter: () => addColumnAfter,\n addRowBefore: () => addRowBefore,\n addRowAfter: () => addRowAfter,\n deleteRow: () => deleteRow,\n deleteColumn: () => deleteColumn,\n mergeCells: () => mergeCells,\n splitCell: () => splitCell,\n deleteTable: () => deleteTable\n};\n/**\n * @hidden\n */\nconst editorCommands = Object.assign({}, inlineCommand, blockCommand, tableCommand);\n\n/**\n * @hidden\n */\nconst getToolbarState = (state, options) => ({\n alignCenter: {\n selected: isAligned(state, alignCenterRules),\n disabled: false\n },\n alignJustify: {\n selected: isAligned(state, alignJustifyRules),\n disabled: false\n },\n alignLeft: {\n selected: isAligned(state, alignLeftRules),\n disabled: false\n },\n alignRight: {\n selected: isAligned(state, alignRightRules),\n disabled: false\n },\n bold: {\n selected: hasMark(state, bold),\n disabled: false\n },\n cleanFormatting: {\n selected: false,\n disabled: !cleanFormatting()(state)\n },\n format: {\n selected: activeNode(state),\n disabled: false\n },\n blockquote: {\n selected: false,\n disabled: !blockquote(state)\n },\n indent: {\n selected: false,\n disabled: !(canIndentAsListItem(state, state.schema.nodes.list_item) || canBeIndented(state, indentRules))\n },\n insertOrderedList: {\n selected: hasNode(state, state.schema.nodes.ordered_list),\n disabled: false\n },\n insertUnorderedList: {\n selected: hasNode(state, state.schema.nodes.bullet_list),\n disabled: false\n },\n italic: {\n selected: hasMark(state, italic),\n disabled: false\n },\n unlink: {\n selected: false,\n disabled: !hasMark(state, link)\n },\n outdent: {\n selected: false,\n get disabled() {\n return !(hasNode(state, state.schema.nodes.blockquote) ||\n canOutdentAsListItem(state, outdentRules) ||\n isIndented(state, outdentRules.nodes));\n }\n },\n redo: {\n selected: false,\n disabled: !redo(state)\n },\n selectAll: {\n selected: false,\n disabled: false\n },\n strikethrough: {\n selected: hasMark(state, strikethrough),\n disabled: false\n },\n style: {\n selected: getActiveMarks(state, state.schema.marks.style),\n disabled: false\n },\n subscript: {\n selected: hasMark(state, subscript),\n disabled: false\n },\n superscript: {\n selected: hasMark(state, superscript),\n disabled: false\n },\n underline: {\n selected: hasMark(state, underline),\n disabled: false\n },\n undo: {\n selected: false,\n disabled: !undo(state)\n },\n //dialogs\n createLink: {\n selected: false,\n get disabled() {\n const empty = state.selection.empty;\n const applyToWord = options && options.applyToWord;\n if (applyToWord && empty) {\n const extendedState = expandSelection(state, () => { }, options).state;\n return extendedState.selection.empty;\n }\n return empty;\n }\n },\n insertFile: {\n selected: false,\n disabled: state.selection.empty\n },\n insertImage: {\n selected: false,\n disabled: false\n },\n viewSource: {\n selected: false,\n disabled: false\n },\n // print\n print: {\n selected: false,\n disabled: false\n },\n // table\n insertTable: {\n selected: false,\n disabled: false\n },\n addColumnBefore: {\n selected: false,\n disabled: !addColumnBefore(state)\n },\n addColumnAfter: {\n selected: false,\n disabled: !addColumnAfter(state)\n },\n addRowBefore: {\n selected: false,\n disabled: !addRowBefore(state)\n },\n addRowAfter: {\n selected: false,\n disabled: !addRowAfter(state)\n },\n deleteRow: {\n selected: false,\n disabled: !deleteRow(state)\n },\n deleteColumn: {\n selected: false,\n disabled: !deleteColumn(state)\n },\n mergeCells: {\n selected: false,\n disabled: !mergeCells(state)\n },\n splitCell: {\n selected: false,\n disabled: !splitCell(state)\n },\n deleteTable: {\n selected: false,\n disabled: !deleteTable(state)\n }\n});\n/**\n * @hidden\n */\nconst initialToolBarState = {\n //alignment\n alignCenter: { selected: false, disabled: false },\n alignJustify: { selected: false, disabled: false },\n alignLeft: { selected: false, disabled: false },\n alignRight: { selected: false, disabled: false },\n //marks\n bold: { selected: false, disabled: false },\n italic: { selected: false, disabled: false },\n underline: { selected: false, disabled: false },\n strikethrough: { selected: false, disabled: false },\n subscript: { selected: false, disabled: false },\n superscript: { selected: false, disabled: false },\n //tools\n format: { selected: { text: 'Format', tag: null }, disabled: false },\n style: { selected: { marks: [], hasNodesWithoutMarks: false }, disabled: false },\n cleanFormatting: { selected: false, disabled: true },\n blockquote: { selected: false, disabled: false },\n //indent\n indent: { selected: false, disabled: false },\n outdent: { selected: false, disabled: false },\n //lists\n insertOrderedList: { selected: false, disabled: false },\n insertUnorderedList: { selected: false, disabled: false },\n //links\n unlink: { selected: false, disabled: true },\n //history\n redo: { selected: false, disabled: true },\n undo: { selected: false, disabled: true },\n // print\n print: { selected: false, disabled: false },\n //dialogs\n createLink: { selected: false, disabled: true },\n insertFile: { selected: false, disabled: true },\n insertImage: { selected: false, disabled: false },\n viewSource: { selected: false, disabled: false },\n //table\n insertTable: { selected: false, disabled: false },\n addColumnBefore: { selected: false, disabled: true },\n addColumnAfter: { selected: false, disabled: true },\n addRowBefore: { selected: false, disabled: true },\n addRowAfter: { selected: false, disabled: true },\n deleteRow: { selected: false, disabled: true },\n deleteColumn: { selected: false, disabled: true },\n mergeCells: { selected: false, disabled: true },\n splitCell: { selected: false, disabled: true },\n deleteTable: { selected: false, disabled: true },\n // select all\n selectAll: { selected: false, disabled: false }\n};\n/**\n * @hidden\n */\nconst disabledToolBarState = {\n //alignment\n alignCenter: { selected: false, disabled: true },\n alignJustify: { selected: false, disabled: true },\n alignLeft: { selected: false, disabled: true },\n alignRight: { selected: false, disabled: true },\n //marks\n bold: { selected: false, disabled: true },\n italic: { selected: false, disabled: true },\n underline: { selected: false, disabled: true },\n strikethrough: { selected: false, disabled: true },\n subscript: { selected: false, disabled: true },\n superscript: { selected: false, disabled: true },\n //tools\n format: { selected: { text: 'Format', tag: null }, disabled: true },\n style: { selected: { marks: [], hasNodesWithoutMarks: false }, disabled: true },\n cleanFormatting: { selected: false, disabled: true },\n blockquote: { selected: false, disabled: true },\n //indent\n indent: { selected: false, disabled: true },\n outdent: { selected: false, disabled: true },\n //lists\n insertOrderedList: { selected: false, disabled: true },\n insertUnorderedList: { selected: false, disabled: true },\n //links\n unlink: { selected: false, disabled: true },\n //history\n redo: { selected: false, disabled: true },\n undo: { selected: false, disabled: true },\n // print\n print: { selected: false, disabled: true },\n //dialogs\n createLink: { selected: false, disabled: true },\n insertFile: { selected: false, disabled: true },\n insertImage: { selected: false, disabled: true },\n viewSource: { selected: false, disabled: true },\n //table\n insertTable: { selected: false, disabled: true },\n addColumnBefore: { selected: false, disabled: true },\n addColumnAfter: { selected: false, disabled: true },\n addRowBefore: { selected: false, disabled: true },\n addRowAfter: { selected: false, disabled: true },\n deleteRow: { selected: false, disabled: true },\n deleteColumn: { selected: false, disabled: true },\n mergeCells: { selected: false, disabled: true },\n splitCell: { selected: false, disabled: true },\n deleteTable: { selected: false, disabled: true },\n // select all\n selectAll: { selected: false, disabled: true }\n};\n\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nconst removeEntries = (obj, predicate) => Object.keys(obj)\n .filter(key => predicate(key))\n .reduce((acc, curr) => Object.assign(acc, { [curr]: obj[curr] }), {});\n/**\n * @hidden\n */\nconst removeEmptyEntries = (obj) => {\n const predicate = key => obj[key] !== null && obj[key] !== undefined && obj[key] !== '';\n return removeEntries(obj, predicate);\n};\n/**\n * @hidden\n */\nconst isEmpty = (obj) => Object.keys(obj).length === 0;\n/**\n * @hidden\n */\nconst isNullOrUndefined = (value) => value === undefined || value === null;\n/**\n * @hidden\n */\nconst isPresent = (value) => !isNullOrUndefined(value);\n/**\n * @hidden\n */\nconst detectIE = () => {\n if (!isDocumentAvailable()) {\n return false;\n }\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const trident = ua.indexOf('Trident/');\n return msie > 0 || trident > 0;\n};\n/**\n * @hidden\n */\nconst safeString = (value) => (isNullOrUndefined(value) ? '' : value.toString());\n/**\n * @hidden\n */\nconst first = (arr) => arr[0];\n/**\n * @hidden\n */\nconst last = (arr) => arr[arr.length - 1];\n/**\n * @hidden\n */\nconst unique = (arr) => Array.from(new Set(arr));\n/**\n * @hidden\n */\nconst split = (splitter) => (value) => value.split(splitter);\n/**\n * @hidden\n */\nconst trim = (value) => value.trim();\n/**\n * @hidden\n */\nconst filter = (predicate) => (arr) => arr.filter(predicate);\n/**\n * @hidden\n */\nconst toArray = (x) => (x instanceof Array ? x : [x]);\n/**\n * @hidden\n */\nconst getUniqueStyleValues = (style, cssStyle) => {\n if (style.hasNodesWithoutMarks) {\n return '';\n }\n const uniqueMarkValues = style.marks\n .filter(m => m.type.name === 'style')\n .map(m => m.attrs.style)\n .map(safeString)\n .map(split(';'))\n .map(filter((m) => m.includes(cssStyle)))\n // guards against empty array\n .map((cssStyleValues) => (cssStyleValues.length !== 0 ? cssStyleValues : [`${cssStyle}: INVALID`]))\n .map(first)\n .map(split(':'))\n .map(last)\n .map(trim)\n .reduce((acc, curr) => (acc.indexOf(curr) > -1 ? acc : [...acc, curr]), []);\n if (uniqueMarkValues.indexOf('INVALID') > -1 || uniqueMarkValues.length !== 1) {\n return '';\n }\n return uniqueMarkValues[0];\n};\n/**\n * @hidden\n */\nconst conditionallyExecute = (fn) => (condition) => (param) => (condition ? fn(param) : param);\n/**\n * @hidden\n */\nconst pipe = (...fns) => x => fns.reduce((y, f) => f(y), x);\n// This re-declaration is neccessary for proper API generation\n/**\n * A method for extracting the text from the current editor state's selection\n * @param state\n * @returns\n */\nconst getSelectionText = (state) => getSelectionText$1(state);\n\n/**\n * @hidden\n */\nclass EditorLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n}\nEditorLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nEditorLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass SourceDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = '';\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.textarea.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n this.editor.exec('setHTML', this.getData());\n this.dialog.close();\n this.editor.view.focus();\n }\n getData() {\n return this.textarea.nativeElement.value;\n }\n setData() {\n this.data = this.indent(this.editor.getSource());\n }\n textFor(key) {\n return this.localization.get(key);\n }\n indent(content) {\n return content\n .replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/gi, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/gi, '
    \\n')\n .replace(/\\n$/, '');\n }\n}\nSourceDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SourceDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSourceDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SourceDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"textarea\", first: true, predicate: [\"textarea\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('viewSource') }}\n \n \n \n \n \n \n `, isInline: true, styles: [\"\\n >>> .k-editor-textarea {\\n height: 100%;\\n }\\n \"], components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SourceDialogComponent, decorators: [{\n type: Component,\n args: [{\n styles: [\n `\n >>> .k-editor-textarea {\n height: 100%;\n }\n `\n ],\n template: `\n \n {{ textFor('viewSource') }}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], textarea: [{\n type: ViewChild,\n args: ['textarea', { static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass ImageDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.src = new FormControl('', Validators.required);\n this.alt = new FormControl('');\n this.width = new FormControl('', Validators.min(1));\n this.height = new FormControl('', Validators.min(1));\n this.data = {\n alt: '',\n height: '',\n src: '',\n width: ''\n };\n this.imageData = new FormGroup({\n alt: this.alt,\n height: this.height,\n src: this.src,\n width: this.width\n });\n }\n ngOnInit() {\n this.srcInputId = `k-${guid()}`;\n this.altTextInputId = `k-${guid()}`;\n this.widthInputId = `k-${guid()}`;\n this.heightInputId = `k-${guid()}`;\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.srcInput.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.src.value) {\n this.editor.exec('insertImage', this.getData());\n this.dialog.close();\n this.editor.view.focus();\n }\n }\n setData(state) {\n const node = getNodeFromSelection(state);\n if (node) {\n this.src.patchValue(node.attrs.src);\n this.alt.patchValue(node.attrs.alt);\n this.width.patchValue(node.attrs.width);\n this.height.patchValue(node.attrs.height);\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n getData() {\n return {\n alt: this.alt.value,\n height: this.normalizeDimension(this.height.value),\n src: this.src.value,\n width: this.normalizeDimension(this.width.value)\n };\n }\n normalizeDimension(value) {\n return Number.isNaN(parseInt(value, 10)) || parseInt(value, 10) <= 0 ? '' : safeString(parseInt(value, 10));\n }\n}\nImageDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ImageDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nImageDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ImageDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"srcInput\", first: true, predicate: [\"srcInput\"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('insertImage') }}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i3.FormControlDirective, selector: \"[formControl]\", inputs: [\"disabled\", \"formControl\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ImageDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('insertImage') }}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], srcInput: [{\n type: ViewChild,\n args: ['srcInput', { read: ElementRef, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass FileLinkDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.linkForm = new FormGroup({\n 'href': new FormControl('', Validators.required),\n 'text': new FormControl({ value: '', disabled: true }, Validators.required),\n 'title': new FormControl('')\n });\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.hrefInput.nativeElement.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n const linkData = this.getData();\n this.editor.exec(this.command, linkData);\n this.dialog.close();\n this.editor.view.focus();\n }\n get titleText() {\n return this.localization.get(this.command);\n }\n setData(state, options) {\n if (this.command === 'createLink') {\n this.linkForm.addControl('target', new FormControl());\n }\n const linkMark = getMark(state, state.schema.marks.link);\n if (linkMark) {\n // const linkMarkRange = getMarkRange(state.selection.$cursor, schema.marks.link);\n // const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === markType);\n this.linkForm.reset({\n href: linkMark.attrs.href,\n title: linkMark.attrs.title,\n target: isPresent(linkMark.attrs.target),\n text: this.setLinkText(state)\n });\n return;\n }\n if (state.selection.empty) {\n const currentState = options.applyToWord ? expandSelection(state, () => { }, options).state : state;\n if (!currentState.selection.empty) {\n this.linkForm.patchValue({\n 'text': getSelectionText$1(currentState)\n });\n }\n }\n else {\n this.linkForm.patchValue({\n 'text': getSelectionText$1(state)\n });\n }\n }\n textForWithPrefix(key) {\n const prefix = this.command === 'createLink' ? 'link' : 'file';\n return this.textFor(prefix + key);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n setLinkText(state) {\n const selection = state.selection;\n if (selection.empty && selection.$cursor) {\n const cursor = selection.$cursor;\n const cursorNodeIndex = cursor.index();\n const parentNode = cursor.parent;\n return parentNode.child(cursorNodeIndex).text;\n }\n else {\n return getSelectionText$1(state);\n }\n }\n getData() {\n let linkData = this.linkForm.value;\n if (isPresent(this.linkForm.controls.target)) {\n linkData.target = linkData.target ? '_blank' : null;\n }\n return linkData;\n }\n}\nFileLinkDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileLinkDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFileLinkDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileLinkDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\", command: \"command\" }, viewQueries: [{ propertyName: \"hrefInput\", first: true, predicate: [\"hrefInput\"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ titleText }}\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i3.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i3.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i3.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i3.FormControlName, selector: \"[formControlName]\", inputs: [\"disabled\", \"formControlName\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { type: i3$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\" }, { type: i5.CheckBoxDirective, selector: \"input[kendoCheckBox]\", inputs: [\"size\", \"rounded\"] }, { type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileLinkDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ titleText }}\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], command: [{\n type: Input\n }], hrefInput: [{\n type: ViewChild,\n args: ['hrefInput', { read: ElementRef, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nconst defaultStyle = `\n html, body {\n margin: 0;\n height: 100%;\n padding: 0;\n }\n\n html {\n min-height: 100%;\n }\n\n body {\n box-sizing: border-box;\n position: relative;\n word-wrap: break-word;\n padding: 8px;\n }\n\n body > .k-content {\n outline: 0;\n height: 100%;\n white-space: pre-wrap;\n }\n\n div.ProseMirror {\n position: relative;\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n }\n\n .ProseMirror pre {\n white-space: pre-wrap;\n }\n\n .k-content > p {\n margin: 0 0 1em;\n }\n\n .k-content table {\n white-space: pre-wrap;\n }\n\n .k-content .k-text-selected, .k-content::selection {\n color: HighlightText;\n background-color: Highlight;\n }\n\n .k-content .k-text-highlighted {\n background-color: #bbdefb;\n }\n\n .k-content .ProseMirror-selectednode {\n outline: 2px solid #8cf;\n }\n\n .ProseMirror-hideselection *::selection { background: transparent; }\n .ProseMirror-hideselection *::-moz-selection { background: transparent; }\n .ProseMirror-hideselection { caret-color: transparent; }\n\n .ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n }\n\n .ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n }\n\n @keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n }\n\n .ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n }\n\n .k-editor-resize-handles-wrapper {\n position: absolute;\n visibility: hidden;\n }\n\n .k-editor-resize-handle {\n position: absolute;\n visibility: visible;\n background-color: #fff;\n border: 1px solid #000;\n z-index: 100;\n width: 5px;\n height: 5px;\n }\n\n .k-editor-resize-handle.northwest {\n top: 0;\n left: 0;\n transform: translate(-50%, -50%);\n cursor: nw-resize;\n }\n\n .k-editor-resize-handle.north {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n cursor: n-resize;\n }\n\n .k-editor-resize-handle.northeast {\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n cursor: ne-resize;\n }\n\n .k-editor-resize-handle.southwest {\n left: 0;\n bottom: 0;\n transform: translate(-50%, 50%);\n cursor: sw-resize;\n }\n\n .k-editor-resize-handle.south {\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 50%);\n cursor: s-resize;\n }\n\n .k-editor-resize-handle.southeast {\n right: 0;\n bottom: 0;\n transform: translate(50%, 50%);\n cursor: se-resize;\n }\n\n .k-editor-resize-handle.west {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n cursor: w-resize;\n }\n\n .k-editor-resize-handle.east {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n cursor: e-resize;\n }\n\n .ProseMirror .k-placeholder::before {\n content: attr(data-placeholder);\n height: 0;\n color: #8a8a8a;\n float: left;\n opacity: 1;\n cursor: text;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .ProseMirror li {\n position: relative;\n }\n\n li.ProseMirror-selectednode {\n outline: none;\n }\n\n li.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n }\n`;\n/**\n * @hidden\n */\nconst tablesStyles = `\n .ProseMirror .tableWrapper {\n overflow-x: auto;\n margin: 1em 0;\n }\n\n .ProseMirror table {\n margin: 0;\n border-collapse: collapse;\n table-layout: fixed;\n width: 100%;\n overflow: hidden;\n }\n\n .ProseMirror td, .ProseMirror th {\n min-width: 1em;\n border: 1px solid #ddd;\n padding: 3px 5px;\n vertical-align: top;\n box-sizing: border-box;\n position: relative;\n }\n\n .ProseMirror th {\n font-weight: bold;\n text-align: left;\n }\n\n .ProseMirror .column-resize-handle {\n position: absolute;\n right: -2px; top: 0; bottom: 0;\n width: 4px;\n z-index: 20;\n background-color: #adf;\n pointer-events: none;\n }\n\n .ProseMirror.resize-cursor {\n cursor: ew-resize;\n cursor: col-resize;\n }\n\n /* Give selected cells a blue overlay */\n .ProseMirror .selectedCell:after {\n z-index: 2;\n position: absolute;\n content: \"\";\n left: 0; right: 0; top: 0; bottom: 0;\n background: rgba(200, 200, 255, 0.4);\n pointer-events: none;\n }\n\n /* Resizing */\n .k-editor-resize-wrap-element {\n display: inline-block;\n position: relative;\n }\n\n .ProseMirror .row-resize-handle {\n position: absolute;\n right: 0; left: 0; bottom: 0;\n transform: translate(0, 50%);\n height: 4px;\n z-index: 20;\n background-color: #adf;\n pointer-events: none;\n }\n \n .ProseMirror.resize-cursor-vertical {\n cursor: sn-resize;\n cursor: row-resize;\n }\n\n .k-editor-resize-wrap-element table td p,\n .k-editor-resize-wrap-element table th p {\n margin: 0 auto;\n }\n`;\n/**\n * @hidden\n */\nconst rtlStyles = 'body { direction: rtl }';\n\n/**\n * @hidden\n */\nconst EditorErrorMessages = {\n schemaType: 'Expected value of type Schema. See http://www.telerik.com/kendo-angular-ui/components/editor/schema/',\n setSchemaOnce: 'The Schema cannot be changed dynamically. See http://www.telerik.com/kendo-angular-ui/components/editor/schema/',\n pluginsCallbackType: (arg) => `plugins must be a function, but received ${JSON.stringify(arg)}.`,\n pastedContentCallbackType: (arg) => `pastedContent must be a function, but received ${JSON.stringify(arg)}.`,\n setPluginsOnce: 'The plugins cannot be changed dynamically. See http://www.telerik.com/kendo-angular-ui/components/editor/plugins/',\n setPlaceHolderOnce: 'The placeholder cannot be changed dynamically. See https://www.telerik.com/kendo-angular-ui/components/editor/plugins/#toc-custom-plugins/',\n printTool: 'The Print tool and functionality are supported only in iframe mode. See https://www.telerik.com/kendo-angular-ui-develop/components/editor/api/EditorPrintButtonDirective/'\n};\n\n/**\n * @hidden\n */\nclass ProviderService {\n}\nProviderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nProviderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProviderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProviderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass EditorToolsService {\n constructor() {\n this.needsCheck = new Subject();\n }\n}\nEditorToolsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorToolsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nEditorToolsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorToolsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorToolsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * The Editor [`paste`]({% slug api_editor_editorcomponent %}#toc-paste) event.\n */\nclass EditorPasteEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `paste` event.\n * @hidden\n */\n constructor(cleanedHtml, originalHtml, originalEvent) {\n super();\n this.cleanedHtml = cleanedHtml;\n this.originalHtml = originalHtml;\n this.originalEvent = originalEvent;\n }\n}\n\n/**\n * @hidden\n */\nclass DropDownToolDirective {\n constructor(hostEl, zone) {\n this.hostEl = hostEl;\n this.zone = zone;\n this.preventDefault = (event) => {\n event.preventDefault();\n };\n }\n get hostElement() {\n return this.hostEl.nativeElement;\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.hostElement.addEventListener('pointerdown', this.preventDefault);\n });\n }\n ngOnDestroy() {\n this.hostElement.removeEventListener('pointerdown', this.preventDefault);\n }\n}\nDropDownToolDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownToolDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownToolDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownToolDirective, selector: \"[kendoEditorDropDownTool]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownToolDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoEditorDropDownTool]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass FormatDropDownListComponent {\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(tag) {\n this.valueChange.emit(tag);\n }\n focus() {\n this.dropDownList.focus();\n }\n}\nFormatDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormatDropDownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFormatDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FormatDropDownListComponent, selector: \"kendo-editor-format-dropdownlist\", inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true, static: true }, { propertyName: \"dropDownList\", first: true, predicate: [\"element\"], descendants: true, read: DropDownListComponent, static: true }], ngImport: i0, template: `\n \n \n \n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n {{ dataItem.text }}\n \n \n \n `, isInline: true, styles: [\"\\n .k-dropdownlist {\\n width: 13em;\\n }\\n \"], components: [{ type: i1$2.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: DropDownToolDirective, selector: \"[kendoEditorDropDownTool]\" }, { type: i1$2.ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\" }, { type: i3$1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i3$1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i3$1.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormatDropDownListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-editor-format-dropdownlist',\n template: `\n \n \n \n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n \n {{ dataItem.text }}\n \n\n {{ dataItem.text }}\n \n \n \n `,\n styles: [`\n .k-dropdownlist {\n width: 13em;\n }\n `]\n }]\n }], propDecorators: { data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass FormatDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.formatDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('format', { tag: this.value });\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFormatDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormatDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFormatDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FormatDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"formatDropDownList\", first: true, predicate: [\"formatDropDownList\"], descendants: true, read: FormatDropDownListComponent, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('format') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: FormatDropDownListComponent, selector: \"kendo-editor-format-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormatDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('format') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], formatDropDownList: [{\n type: ViewChild,\n args: ['formatDropDownList', { read: FormatDropDownListComponent, static: true }]\n }] } });\n\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-dropdownlist` with an Editor command that changes the format of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorFormatComponent extends ToolBarToolComponent {\n constructor(dialogService, localization, providerService, toolsService) {\n super();\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: 'Paragraph', tag: 'p' },\n { text: 'Heading 1', tag: 'h1' },\n { text: 'Heading 2', tag: 'h2' },\n { text: 'Heading 3', tag: 'h3' },\n { text: 'Heading 4', tag: 'h4' },\n { text: 'Heading 5', tag: 'h5' },\n { text: 'Heading 6', tag: 'h6' }\n ];\n this.editor = providerService.editor;\n }\n /**\n * Overrides the default format items list.\n */\n set data(formatItems) {\n this._data = formatItems || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = (itemArgs) => {\n if (!this.overflows && this.formatDropDownList && !this.formatDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.tag === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, tag: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ format }) => {\n const index = this.data.findIndex(item => item.tag === format.selected.tag);\n this.value = index !== -1 ? format.selected.tag : null;\n this.disabled = format.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('format', { tag: ev });\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(d => d.tag === ev));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n const element = this.formatDropDownList.element;\n if (element) {\n return outerWidth(element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('format');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FormatDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.formatButton.nativeElement.focus();\n }\n else {\n this.formatDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n}\nEditorFormatComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFormatComponent, deps: [{ token: i1$1.DialogService }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Component });\nEditorFormatComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorFormatComponent, selector: \"kendo-toolbar-dropdownlist[kendoEditorFormat]\", inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFormatComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"formatDropDownList\", first: true, predicate: [\"formatDropDownList\"], descendants: true }, { propertyName: \"formatButton\", first: true, predicate: [\"formatButton\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `, isInline: true, components: [{ type: FormatDropDownListComponent, selector: \"kendo-editor-format-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFormatComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFormatComponent) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFormat]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogService }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; }, propDecorators: { data: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], formatDropDownList: [{\n type: ViewChild,\n args: ['formatDropDownList', { static: false }]\n }], formatButton: [{\n type: ViewChild,\n args: ['formatButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass MessagesDirective extends ComponentMessages {\n}\nMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MessagesDirective, selector: \"[kendoEditorMessages]\", inputs: { alignCenter: \"alignCenter\", alignJustify: \"alignJustify\", alignLeft: \"alignLeft\", alignRight: \"alignRight\", backColor: \"backColor\", blockquote: \"blockquote\", bold: \"bold\", cleanFormatting: \"cleanFormatting\", createLink: \"createLink\", fontFamily: \"fontFamily\", fontSize: \"fontSize\", foreColor: \"foreColor\", format: \"format\", indent: \"indent\", insertFile: \"insertFile\", insertImage: \"insertImage\", insertOrderedList: \"insertOrderedList\", insertUnorderedList: \"insertUnorderedList\", italic: \"italic\", outdent: \"outdent\", print: \"print\", redo: \"redo\", selectAll: \"selectAll\", strikethrough: \"strikethrough\", subscript: \"subscript\", superscript: \"superscript\", underline: \"underline\", undo: \"undo\", unlink: \"unlink\", viewSource: \"viewSource\", insertTable: \"insertTable\", addColumnBefore: \"addColumnBefore\", addColumnAfter: \"addColumnAfter\", addRowBefore: \"addRowBefore\", addRowAfter: \"addRowAfter\", deleteColumn: \"deleteColumn\", deleteRow: \"deleteRow\", deleteTable: \"deleteTable\", dialogApply: \"dialogApply\", dialogCancel: \"dialogCancel\", dialogInsert: \"dialogInsert\", dialogUpdate: \"dialogUpdate\", fileText: \"fileText\", fileTitle: \"fileTitle\", fileWebAddress: \"fileWebAddress\", imageAltText: \"imageAltText\", imageHeight: \"imageHeight\", imageWebAddress: \"imageWebAddress\", imageWidth: \"imageWidth\", linkOpenInNewWindow: \"linkOpenInNewWindow\", linkText: \"linkText\", linkTitle: \"linkTitle\", linkWebAddress: \"linkWebAddress\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessagesDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEditorMessages]'\n }]\n }], propDecorators: { alignCenter: [{\n type: Input\n }], alignJustify: [{\n type: Input\n }], alignLeft: [{\n type: Input\n }], alignRight: [{\n type: Input\n }], backColor: [{\n type: Input\n }], blockquote: [{\n type: Input\n }], bold: [{\n type: Input\n }], cleanFormatting: [{\n type: Input\n }], createLink: [{\n type: Input\n }], fontFamily: [{\n type: Input\n }], fontSize: [{\n type: Input\n }], foreColor: [{\n type: Input\n }], format: [{\n type: Input\n }], indent: [{\n type: Input\n }], insertFile: [{\n type: Input\n }], insertImage: [{\n type: Input\n }], insertOrderedList: [{\n type: Input\n }], insertUnorderedList: [{\n type: Input\n }], italic: [{\n type: Input\n }], outdent: [{\n type: Input\n }], print: [{\n type: Input\n }], redo: [{\n type: Input\n }], selectAll: [{\n type: Input\n }], strikethrough: [{\n type: Input\n }], subscript: [{\n type: Input\n }], superscript: [{\n type: Input\n }], underline: [{\n type: Input\n }], undo: [{\n type: Input\n }], unlink: [{\n type: Input\n }], viewSource: [{\n type: Input\n }], insertTable: [{\n type: Input\n }], addColumnBefore: [{\n type: Input\n }], addColumnAfter: [{\n type: Input\n }], addRowBefore: [{\n type: Input\n }], addRowAfter: [{\n type: Input\n }], deleteColumn: [{\n type: Input\n }], deleteRow: [{\n type: Input\n }], deleteTable: [{\n type: Input\n }], dialogApply: [{\n type: Input\n }], dialogCancel: [{\n type: Input\n }], dialogInsert: [{\n type: Input\n }], dialogUpdate: [{\n type: Input\n }], fileText: [{\n type: Input\n }], fileTitle: [{\n type: Input\n }], fileWebAddress: [{\n type: Input\n }], imageAltText: [{\n type: Input\n }], imageHeight: [{\n type: Input\n }], imageWebAddress: [{\n type: Input\n }], imageWidth: [{\n type: Input\n }], linkOpenInNewWindow: [{\n type: Input\n }], linkText: [{\n type: Input\n }], linkTitle: [{\n type: Input\n }], linkWebAddress: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends MessagesDirective {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoEditorLocalizedMessages]\", providers: [{\n provide: MessagesDirective,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: MessagesDirective,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }],\n selector: '[kendoEditorLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst commandIcons = {\n alignCenter: 'align-center',\n alignJustify: 'align-justify',\n alignLeft: 'align-left',\n alignRight: 'align-right',\n backColor: 'background',\n blockquote: 'blockquote',\n bold: 'bold',\n cleanFormatting: 'clear-css',\n createLink: 'link-horizontal',\n foreColor: 'foreground-color',\n indent: 'indent-increase',\n insertFile: 'file-add',\n insertImage: 'image',\n insertOrderedList: 'list-ordered',\n insertUnorderedList: 'list-unordered',\n italic: 'italic',\n outdent: 'indent-decrease',\n print: 'print',\n redo: 'redo',\n selectAll: 'select-all',\n strikethrough: 'strikethrough',\n subscript: 'sub-script',\n superscript: 'sup-script',\n underline: 'underline',\n undo: 'undo',\n unlink: 'unlink-horizontal',\n viewSource: 'html',\n //table\n insertTable: 'table-insert',\n addColumnBefore: 'table-column-insert-left',\n addColumnAfter: 'table-column-insert-right',\n addRowBefore: 'table-row-insert-above',\n addRowAfter: 'table-row-insert-below',\n deleteRow: 'table-row-delete',\n deleteColumn: 'table-column-delete',\n mergeCells: 'cells-merge',\n splitCell: 'cell-split-horizontally',\n deleteTable: 'table-delete'\n // tableWizard: 'table-wizard'\n};\n\nconst MY_TOKEN = new InjectionToken('COMMAND_TOKEN');\n/**\n * @hidden\n */\nclass EditorCommandBaseDirective {\n constructor(command, button, localization, providerService, toolsService) {\n this.command = command;\n this.button = button;\n this.localization = localization;\n this.toolsService = toolsService;\n this.editor = providerService.editor;\n setTimeout(() => {\n const text = this.localization.get(this.command);\n if (text) {\n this.button.showText = 'overflow';\n this.button.showIcon = 'both';\n this.button.text = text;\n }\n if (!this.button.toolbarOptions.icon) {\n this.button.icon = commandIcons[this.command];\n }\n this.button.title = text;\n this.toolsService.needsCheck.next();\n });\n }\n ngOnInit() {\n this.subs = this.editor.stateChange.subscribe(this.onStateChange.bind(this));\n this.subs.add(this.button.click.subscribe((this.clickHandler.bind(this))));\n this.subs.add(this.button.pointerdown.subscribe((this.pointerdownHandler.bind(this))));\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n // eslint-disable -next-line\n clickHandler() { }\n // eslint-disable -next-line\n pointerdownHandler(_event) { }\n // eslint-disable -next-line\n onStateChange(_toolBarState) { }\n}\nEditorCommandBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCommandBaseDirective, deps: [{ token: MY_TOKEN }, { token: i1$3.ToolBarButtonComponent }, { token: i1.LocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorCommandBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorCommandBaseDirective, selector: \"[kendoEditorCommandBase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCommandBaseDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEditorCommandBase]'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MY_TOKEN]\n }] }, { type: i1$3.ToolBarButtonComponent }, { type: i1.LocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * @hidden\n */\nclass EditorCommandButton extends EditorCommandBaseDirective {\n constructor(command, button, localization, providerService, toolsService) {\n super(command, button, localization, providerService, toolsService);\n this.command = command;\n this.button = button;\n this.localization = localization;\n this.providerService = providerService;\n this.toolsService = toolsService;\n }\n clickHandler() {\n this.editor.exec(this.command, this.editor.applyToWord);\n this.editor.focus();\n }\n pointerdownHandler(e) {\n e.preventDefault();\n }\n onStateChange(toolBarState) {\n this.button.selected = toolBarState[this.command].selected;\n this.button.disabled = toolBarState[this.command].disabled;\n }\n}\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Bold tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorBoldButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('bold', button, localization, providerService, toolsService);\n }\n}\nEditorBoldButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBoldButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorBoldButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorBoldButtonDirective, selector: \"kendo-toolbar-button[kendoEditorBoldButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBoldButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorBoldButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Italic tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorItalicButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('italic', button, localization, providerService, toolsService);\n }\n}\nEditorItalicButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorItalicButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorItalicButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorItalicButtonDirective, selector: \"kendo-toolbar-button[kendoEditorItalicButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorItalicButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorItalicButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Underline tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorUnderlineButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('underline', button, localization, providerService, toolsService);\n }\n}\nEditorUnderlineButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUnderlineButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorUnderlineButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorUnderlineButtonDirective, selector: \"kendo-toolbar-button[kendoEditorUnderlineButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUnderlineButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUnderlineButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignLeft tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAlignLeftButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('alignLeft', button, localization, providerService, toolsService);\n }\n}\nEditorAlignLeftButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignLeftButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAlignLeftButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAlignLeftButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignLeftButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignLeftButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignLeftButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignCenter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAlignCenterButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('alignCenter', button, localization, providerService, toolsService);\n }\n}\nEditorAlignCenterButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignCenterButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAlignCenterButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAlignCenterButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignCenterButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignCenterButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignCenterButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignRight tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAlignRightButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('alignRight', button, localization, providerService, toolsService);\n }\n}\nEditorAlignRightButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignRightButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAlignRightButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAlignRightButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignRightButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignRightButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignRightButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AlignJustify tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAlignJustifyButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('alignJustify', button, localization, providerService, toolsService);\n }\n}\nEditorAlignJustifyButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignJustifyButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAlignJustifyButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAlignJustifyButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignJustifyButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAlignJustifyButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAlignJustifyButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertUnorderedList tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorInsertUnorderedListButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('insertUnorderedList', button, localization, providerService, toolsService);\n }\n}\nEditorInsertUnorderedListButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertUnorderedListButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorInsertUnorderedListButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorInsertUnorderedListButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertUnorderedListButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertUnorderedListButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertUnorderedListButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertOrderedList tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorInsertOrderedListButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('insertOrderedList', button, localization, providerService, toolsService);\n }\n}\nEditorInsertOrderedListButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertOrderedListButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorInsertOrderedListButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorInsertOrderedListButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertOrderedListButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertOrderedListButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertOrderedListButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Indent tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorIndentButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('indent', button, localization, providerService, toolsService);\n }\n}\nEditorIndentButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorIndentButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorIndentButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorIndentButtonDirective, selector: \"kendo-toolbar-button[kendoEditorIndentButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorIndentButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorIndentButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Outdent tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorOutdentButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('outdent', button, localization, providerService, toolsService);\n }\n}\nEditorOutdentButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorOutdentButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorOutdentButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorOutdentButtonDirective, selector: \"kendo-toolbar-button[kendoEditorOutdentButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorOutdentButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorOutdentButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * @hidden\n */\nclass EditorCommandDialog extends EditorCommandBaseDirective {\n constructor(dialog, button, localization, providerService, toolsService) {\n super(dialog, button, localization, providerService, toolsService);\n this.dialog = dialog;\n this.button = button;\n this.localization = localization;\n this.toolsService = toolsService;\n }\n clickHandler() {\n this.editor.openDialog(this.dialog);\n }\n onStateChange(toolBarState) {\n this.button.selected = toolBarState[this.command].selected;\n this.button.disabled = toolBarState[this.command].disabled;\n }\n}\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor CreateLink tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorCreateLinkButtonDirective extends EditorCommandDialog {\n constructor(button, localization, providerService, toolsService) {\n super('createLink', button, localization, providerService, toolsService);\n }\n}\nEditorCreateLinkButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCreateLinkButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorCreateLinkButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorCreateLinkButtonDirective, selector: \"kendo-toolbar-button[kendoEditorCreateLinkButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCreateLinkButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorCreateLinkButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Unlink tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorUnlinkButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('unlink', button, localization, providerService, toolsService);\n }\n}\nEditorUnlinkButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUnlinkButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorUnlinkButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorUnlinkButtonDirective, selector: \"kendo-toolbar-button[kendoEditorUnlinkButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUnlinkButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUnlinkButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor InsertImage tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorInsertImageButtonDirective extends EditorCommandDialog {\n constructor(button, localization, providerService, toolsService) {\n super('insertImage', button, localization, providerService, toolsService);\n }\n}\nEditorInsertImageButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertImageButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorInsertImageButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorInsertImageButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertImageButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertImageButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertImageButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\nconst EMPTY_PARAGRAPH = '

    ';\nconst defaultPasteCleanupSettings = {\n convertMsLists: false,\n removeAttributes: [],\n removeHtmlComments: false,\n removeInvalidHTML: true,\n removeMsClasses: false,\n removeMsStyles: false,\n stripTags: []\n};\nconst removeCommentsIf = conditionallyExecute(removeComments);\nconst removeInvalidHTMLIf = conditionallyExecute(sanitize);\nconst getPasteCleanupAttributes = (config) => {\n if (config.removeAttributes === 'all') {\n return { '*': removeAttribute };\n }\n const initial = removeEmptyEntries({\n style: config.removeMsStyles ? sanitizeStyleAttr : undefined,\n class: config.removeMsClasses ? sanitizeClassAttr : undefined\n });\n return config.removeAttributes.reduce((acc, curr) => (Object.assign(Object.assign({}, acc), { [curr]: removeAttribute })), initial);\n};\n/**\n * Represents the [Kendo UI Editor component for Angular]({% slug overview_editor %}).\n */\nclass EditorComponent {\n constructor(dialogService, localization, cdr, ngZone, element, providerService, toolsService) {\n this.dialogService = dialogService;\n this.localization = localization;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.element = element;\n this.providerService = providerService;\n this.toolsService = toolsService;\n /**\n * If set to `false`, the Editor will run in style non-encapsulated mode. This means\n * that the styles of the page will be persisted in the Editor and its content will be affected by them.\n * @default true\n */\n this.iframe = true;\n /**\n * If set to `true` or `ApplyToWordOptions` object, commands that apply emphasis or inline styles will be applied to the whole word the cursor is in.\n * @default false\n */\n this.applyToWord = false;\n /**\n * By default, whitespace is collapsed as per HTML's rules.\n * Set to `true` to preserve whitespace, but normalize newlines to spaces.\n * Set to `'full'` to preserve whitespace entirely. In this case the default ProseMirror behavior is to parse white space into nodes.\n *\n * @default false\n */\n this.preserveWhitespace = false;\n /**\n * Determines whether the Editor can be resized ([see example]({% slug styling_editor %}#toc-resizable-editor)).\n * @default false\n */\n this.resizable = false;\n /**\n * Fires each time the value of the Editor is changed upon user interaction—\n * for example, when the value is updated through typing in the content area or using some of the Editor tools ([see example]({% slug overview_editor %}#toc-events)).\n * When the value of the Editor is programmatically changed through its API (`ngModel`) or form binding (`formControl`),\n * the `valueChange` event is not triggered because it might cause a mix-up with the\n * built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the content area of the Editor is focused ([see example]({% slug overview_editor %}#toc-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user performs paste in the content area of the Editor ([see example]({% slug overview_editor %}#toc-events)).\n * The event is preventable. If you cancel it, the Editor content will not change.\n */\n this.paste = new EventEmitter();\n /**\n * Fires when the content area of the Editor is blurred ([see example]({% slug overview_editor %}#toc-events)).\n */\n this.onBlur = new EventEmitter();\n this.hostClass = true;\n /**\n * @hidden\n */\n this.stateChange = new BehaviorSubject(initialToolBarState);\n /**\n * @hidden\n */\n this.valueModified = new Subject();\n this._readonly = false;\n this._placeholder = '';\n this.inForm = false;\n this.afterViewInit = new Subject();\n this.contentAreaLoaded = new Subject();\n this.dispatchTransaction = (tr) => {\n const docChanged = tr.docChanged;\n if (this.disabled || (this.readonly && docChanged)) {\n return;\n }\n if (docChanged) {\n const doc = tr.doc;\n const html = getHtml({ doc });\n this.trOnChange = tr;\n this.htmlOnChange = html;\n this.ngZone.run(() => {\n this.valueModified.next(html);\n });\n }\n if (!docChanged || this.inForm) {\n this.view.updateState(this.view.state.apply(tr));\n }\n };\n this.transformPastedHTML = (dirtyHtml, plainText) => {\n if (plainText) {\n return this.dispatchPasteEvent(dirtyHtml, dirtyHtml);\n }\n const pasteCleanupSettings = Object.assign(Object.assign({}, defaultPasteCleanupSettings), this.pasteCleanupSettings);\n const html = pipe(removeInvalidHTMLIf(pasteCleanupSettings.removeInvalidHTML), removeCommentsIf(pasteCleanupSettings.removeHtmlComments))(dirtyHtml);\n const clean = pasteCleanup(html, {\n convertMsLists: pasteCleanupSettings.convertMsLists,\n stripTags: pasteCleanupSettings.stripTags.join('|'),\n attributes: getPasteCleanupAttributes(pasteCleanupSettings)\n });\n return this.dispatchPasteEvent(dirtyHtml, clean);\n };\n this.changeValue = (value) => {\n const prev = this._value;\n this._value = value;\n if (!this._view) {\n return;\n }\n if (this.htmlOnChange === value && this.trOnChange) {\n this.view.updateState(this.view.state.apply(this.trOnChange));\n }\n else {\n if ((prev || '') !== (value || '')) {\n const iframeContentWindowNotPresent = this.iframe && !this.container.element.nativeElement.contentWindow;\n if (iframeContentWindowNotPresent) {\n return;\n }\n const state = this.view.state;\n const nextDoc = parseContent(value || '', state.schema, { preserveWhitespace: this.preserveWhitespace });\n const tr = state.tr\n .setSelection(new AllSelection(state.doc))\n .replaceSelectionWith(nextDoc);\n this.view.updateState(state.apply(tr));\n }\n }\n this.trOnChange = null;\n this.htmlOnChange = null;\n };\n this.onChangeCallback = (value) => {\n this.changeValue(value);\n };\n this.onTouchedCallback = (_) => { };\n this.onPaste = (_view, nativeEvent) => {\n this._pasteEvent = nativeEvent;\n return false;\n };\n validatePackage(packageMetadata);\n this.providerService.editor = this;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n // https://stackoverflow.com/questions/56572483/chrome-is-synchronously-handling-iframe-loading-whereas-firefox-handles-it-asyn\n this.subs = zip(this.afterViewInit.asObservable(), this.contentAreaLoaded.asObservable()).subscribe(() => this.initialize());\n }\n /**\n * Sets the value of the Editor ([see example]({% slug overview_editor %}#toc-basic-usage)).\n */\n set value(value) {\n this.changeValue(value);\n }\n get value() {\n if (this.trOnChange) {\n return this.htmlOnChange;\n }\n let value = this._view ? this.getSource() : this._value;\n if (value === EMPTY_PARAGRAPH) {\n return this._value ? '' : this._value;\n }\n else {\n return value;\n }\n }\n /**\n * Sets the disabled state of the component.\n */\n set disabled(value) {\n this._disabled = value || false;\n if (this._view) {\n this._view.updateState(this._view.state);\n }\n if (this._disabled) {\n this.readonly = false;\n }\n if (this._disabled || this._readonly) {\n this.stateChange.next(disabledToolBarState);\n }\n else {\n this.stateChange.next(initialToolBarState);\n }\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Sets the read-only state of the component.\n */\n set readonly(value) {\n this._readonly = value || false;\n if (this._view) {\n // remove DOM selection\n let win;\n if (this.iframe) {\n win = this.container.element.nativeElement.contentWindow;\n }\n else {\n win = window;\n }\n const focusedNode = win.getSelection().focusNode;\n if (this._view.dom.contains(focusedNode)) {\n win.getSelection().removeAllRanges();\n }\n // remove ProseMirror selection\n const doc = this._view.state.doc;\n const tr = this._view.state.tr.setSelection(TextSelection.create(doc, 1));\n this._view.dispatch(tr);\n }\n if (this._readonly) {\n if (this.toolbar) {\n this.toolbar.tabindex = -1;\n }\n this.stateChange.next(disabledToolBarState);\n }\n else {\n if (this.toolbar) {\n this.toolbar.tabindex = 0;\n }\n this.stateChange.next(initialToolBarState);\n }\n }\n get readonly() {\n return this._readonly;\n }\n /**\n * Allows providing a custom schema. ([see example]({% slug schema_editor %}))\n */\n set schema(value) {\n if (isDevMode) {\n if (!(value instanceof Schema)) {\n throw new Error(EditorErrorMessages.schemaType);\n }\n if (this._view) {\n throw new Error(EditorErrorMessages.setSchemaOnce);\n }\n }\n this._schema = value;\n }\n get schema() {\n return this._schema;\n }\n /**\n * Defines a function which determines the plugins that will be used when initializing the Editor.\n * It exposes the default plugins collection as an argument, and returns\n * the plugins collection that will be used when creating the Editor component. ([see example]({% slug plugins_editor %}))\n *\n * ```ts-no-run\n * pluginsCallback(defaultPlugins: Plugin[]): Plugin[] {\n * const myPlugin = new Plugin({/custom plugin code/});\n * return [...defaultPlugins, myPlugin];\n * }\n * ```\n */\n set plugins(fn) {\n if (isDevMode) {\n if (typeof fn !== 'function') {\n throw new Error(EditorErrorMessages.pluginsCallbackType(fn));\n }\n if (this._view) {\n throw new Error(EditorErrorMessages.setPluginsOnce);\n }\n }\n this._plugins = fn;\n }\n get plugins() {\n return this._plugins;\n }\n /**\n * The hint, which is displayed when the component is empty.\n */\n set placeholder(value) {\n if (isDevMode && this._view) {\n throw new Error(EditorErrorMessages.setPlaceHolderOnce);\n }\n this._placeholder = value;\n }\n get placeholder() {\n return this._placeholder;\n }\n get resizableClass() {\n return !!this.resizable;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isReadonly() {\n return this.readonly;\n }\n get isIE() {\n return this.iframe && detectIE();\n }\n get dir() {\n return this.direction;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get minWidth() {\n const resizableOptions = this.resizable;\n return resizableOptions.minWidth ? resizableOptions.minWidth + 'px' : undefined;\n }\n get maxWidth() {\n const resizableOptions = this.resizable;\n return resizableOptions.maxWidth ? resizableOptions.maxWidth + 'px' : undefined;\n }\n get minHeight() {\n const resizableOptions = this.resizable;\n return resizableOptions.minHeight ? resizableOptions.minHeight + 'px' : undefined;\n }\n get maxHeight() {\n const resizableOptions = this.resizable;\n return resizableOptions.maxHeight ? resizableOptions.maxHeight + 'px' : undefined;\n }\n get toolbar() {\n return this.defaultToolbarComponent || this.userToolBarComponent;\n }\n get toolbarElement() {\n return this.defaultToolbar || this.userToolBarElement;\n }\n /**\n * Returns the ProseMirror [EditorView](https://prosemirror.net/docs/ref/#view.EditorView) object\n * that manages the DOM structure that represents an editable document.\n */\n get view() {\n return this._view;\n }\n /**\n * Returns the text which the current Editor selection contains ([see example]({% slug selection_editor %}#toc-retrieve-the-selected-text)).\n */\n get selectionText() {\n return this._view && this._view.state ? getSelectionText$1(this._view.state) : '';\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n this.subs.add(this.toolsService.needsCheck.subscribe(() => this.cdr.markForCheck()));\n }\n ngAfterViewInit() {\n var _a;\n this.afterViewInit.next();\n if (!this.iframe) {\n this.contentAreaLoaded.next();\n }\n if (this.resizable) {\n this.normalizeSize();\n }\n // address edge cases for responsive toolbar tools\n // calculations - https://github.com/telerik/kendo-angular/issues/3661\n if ((_a = this.toolbar) === null || _a === void 0 ? void 0 : _a.resizable) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => this.toolbar.onResize(), 70);\n });\n }\n }\n ngOnChanges(changes) {\n if (changes.value && this.view) {\n this.changeValue(changes.value.currentValue);\n }\n if (changes.iframe && !changes.iframe.isFirstChange()) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialize());\n }\n if (changes.resizable && !changes.resizable.isFirstChange()) {\n this.normalizeSize();\n }\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n iframeOnLoad() {\n this.contentAreaLoaded.next();\n }\n /**\n * Executes a command on the currently selected text\n * ([more information and example]({% slug toolbartools_editor %}#toc-custom-tools)).\n *\n * @param {EditorCommand} commandName - The command that will be executed.\n * @param {any} attr - Optional parameters for the command. Apart from the following list,\n * the parameters do not expect specific attributes when you call them:\n * - `format` - Accepts an object with the `tag` property.\n * The supported tags are `p` and any of the `h1` to `h6` heading tags.\n * - `createLink` - Accepts an object with the `href`, `title`, and `target` properties. The `href` property is mandatory.\n * - `setHTML` - Accepts a `string` parameter.\n * - `insertTable` - Accepts an object with the `rows` and `cols` properties. The number values are zero based.\n *\n * @example\n * ```ts-no-run\n * // Toggles the bold styling.\n * editor.exec('bold');\n *\n * // Creates a bullet list.\n * editor.exec('insertUnorderedList');\n *\n * // Creates a link.\n * editor.exec('createLink', { href: 'www.progress.com', title: 'Progress', target: 'window' });\n *\n * // Inserts a file.\n * editor.exec('insertFile', { href: 'www.progress.com/resources/myfile.doc', title: 'My file', target: 'window' });\n *\n * // Inserts a image.\n * editor.exec('insertImage', { src: 'www.progress.com/resources/logo.jpg', title: 'Progress', target: 'window' });\n *\n * // Inserts a text at a given position. If no position is specified, the text will be inserted after the cursor.\n * editor.exec('insertText', { text: 'Hello World!', from: 0, to: 0 });\n *\n * // Changes the format of a text block.\n * editor.exec('format', { tag: 'h2' });\n *\n * // Changes the font size of the selected text.\n * editor.exec('fontSize', 24);\n *\n * // Changes the content of the Editor.\n * editor.exec('setHTML', '

    HTML content

    ');\n *\n * // Creates and inserts a table with the specified number of rows and columns. Numbers are zero based.\n * this.editor.exec(\"insertTable\", { rows: 3, cols: 5 });\n * ```\n */\n exec(commandName, attr) {\n // normalizes setHTML attributes\n if (commandName === 'setHTML' && typeof attr === 'string') {\n attr = {\n content: attr,\n parseOptions: {\n preserveWhitespace: this.preserveWhitespace\n }\n };\n }\n else if (['fontFamily', 'fontSize', 'foreColor', 'backColor', 'createLink'].some(name => name === commandName)) {\n attr = {\n value: attr,\n applyToWord: this.applyToWord\n };\n }\n // Finds a command and applies the attributes.\n const command = editorCommands[commandName](attr);\n // Executes a ProseMirror command.\n command(this._view.state, this._view.dispatch, this._view);\n }\n /**\n * Opens a dialog.\n * @param {DialogCommand} dialogName - The name of the dialog that will open.\n *\n * The supported values are:\n * * `createLink`\n * * `viewSource`\n * * `insertFile`\n * * `insertImage`\n * * `tableWizard`\n *\n * @example\n * ```ts-no-run\n * // Opens a `createLink` dialog.\n * editor.openDialog('createLink');\n *\n * // Opens a `viewSource` dialog.\n * editor.openDialog('viewSource');\n * ```\n */\n openDialog(dialogName) {\n const editorDialogs = {\n createLink: {\n content: FileLinkDialogComponent\n },\n insertFile: {\n content: FileLinkDialogComponent\n },\n insertImage: {\n content: ImageDialogComponent\n },\n viewSource: {\n content: SourceDialogComponent,\n height: 400,\n width: 500\n }\n // tableWizard: {\n // content: TableWizardDialogComponent\n // }\n };\n const dialog = Object.assign({ appendTo: this.dialogContainer }, editorDialogs[dialogName]);\n this.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialog).content.instance;\n if (dialogName === 'createLink' || dialogName === 'insertFile') {\n dialogContent.command = dialogName;\n }\n dialogContent.editor = this;\n dialogContent.setData(this._view.state, { applyToWord: this.applyToWord });\n }\n /**\n * Manually focus the Editor.\n */\n focus() {\n this.focusChangedProgrammatically = true;\n this._view.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Manually blur the Editor.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n this._view.dom.blur();\n this.focusChangedProgrammatically = false;\n }\n /**\n * @hidden\n */\n getSource() {\n return getHtml(this._view.state);\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n if (this._styleObserver) {\n this._styleObserver.disconnect();\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.inForm = true;\n // To avoid confusion, non-existent values are always undefined.\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n initialize() {\n if (!isDocumentAvailable()) {\n return;\n }\n const currentSchema = this.schema || schema;\n const containerNativeElement = this.container.element.nativeElement;\n const contentNode = parseContent((this.value || '').trim(), currentSchema, { preserveWhitespace: this.preserveWhitespace });\n if (this.iframe) {\n const iframeDoc = containerNativeElement.contentDocument;\n const meta = iframeDoc.createElement('meta');\n meta.setAttribute('charset', 'utf-8');\n iframeDoc.head.appendChild(meta);\n [defaultStyle, tablesStyles, this.dir === 'rtl' ? rtlStyles : undefined].forEach(styles => {\n if (styles) {\n const style = iframeDoc.createElement('style');\n style.appendChild(iframeDoc.createTextNode(styles));\n iframeDoc.head.appendChild(style);\n }\n });\n const element = iframeDoc.createElement('div');\n element.classList.add('k-content');\n iframeDoc.body.appendChild(element);\n }\n else {\n const element = document.createElement('div');\n containerNativeElement.appendChild(element);\n }\n const defaultPlugins = [\n new Plugin({\n key: new PluginKey('editor-tabindex'),\n props: {\n attributes: () => ({\n // set tabindex when contenteditable is false, so that the content area can be selected\n tabIndex: this.readonly ? '0' : ''\n })\n }\n }),\n new Plugin({\n key: new PluginKey('toolbar-tools-update'),\n view: () => ({\n update: editorView => {\n if (!this.disabled) {\n this.stateChange.next(this.readonly ? disabledToolBarState : getToolbarState(editorView.state, { applyToWord: this.applyToWord }));\n }\n }\n })\n }),\n history(),\n keymap(buildListKeymap(currentSchema)),\n keymap(buildKeymap(currentSchema, { applyToWord: this.applyToWord })),\n keymap(baseKeymap),\n gapCursor(),\n imageResizing(),\n ...tableResizing(),\n tableEditing(),\n caretColor()\n ];\n if (this.placeholder) {\n defaultPlugins.push(placeholder(this.placeholder));\n }\n const state = EditorState.create({\n schema: currentSchema,\n doc: contentNode,\n plugins: isPresent(this.plugins) ? this.plugins(defaultPlugins) : defaultPlugins\n });\n if (this.iframe) {\n this.viewMountElement = containerNativeElement.contentDocument.querySelector('div');\n }\n else {\n this.viewMountElement = containerNativeElement.querySelector('div');\n }\n this.ngZone.runOutsideAngular(() => {\n this._view = new EditorView({ mount: this.viewMountElement }, {\n state,\n editable: () => !this.readonly,\n dispatchTransaction: this.dispatchTransaction,\n transformPastedHTML: this.transformPastedHTML,\n transformPastedText: this.transformPastedHTML,\n handleDOMEvents: {\n paste: this.onPaste\n }\n });\n });\n if (this._view) {\n let containerElement;\n const contentAreaClasslist = this.element.nativeElement.querySelector('.k-editor-content').classList;\n if (this.iframe) {\n containerElement = this.container.element.nativeElement.contentDocument;\n }\n else {\n containerElement = this.container.element.nativeElement;\n }\n this.subs.add(fromEvent(containerElement, 'focusin')\n .subscribe((e) => {\n if (this.readonly) {\n contentAreaClasslist.add('k-focus');\n }\n if (!this.focusChangedProgrammatically || this.shouldEmitFocus) {\n const relatedTarget = e.relatedTarget;\n const isActiveColorButton = relatedTarget && relatedTarget.classList.contains('k-colorpicker');\n if (!isActiveColorButton || this.shouldEmitFocus) {\n this.ngZone.run(() => this.onFocus.emit());\n }\n this.shouldEmitFocus = false;\n }\n }));\n this.subs.add(fromEvent(containerElement, 'focusout')\n .subscribe((e) => {\n if (this.readonly) {\n contentAreaClasslist.remove('k-focus');\n }\n if (!this.focusChangedProgrammatically) {\n const relatedTarget = e.relatedTarget;\n const isActiveColorButton = relatedTarget && relatedTarget.classList.contains('k-colorpicker');\n if (!isActiveColorButton) {\n this.ngZone.run(() => this.onBlur.emit());\n }\n }\n }));\n }\n this.subs.add(this.stateChange.subscribe(() => {\n if (this.userToolBarComponent) {\n this.userToolBarComponent.cdr.detectChanges();\n }\n else {\n this.cdr.detectChanges();\n }\n }));\n this.subs.add(this.valueModified.subscribe((value) => {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n this.cdr.markForCheck();\n }));\n this.subs.add(fromEvent(this.viewMountElement, 'keyup')\n .pipe(map((e) => e.keyCode), filter$1((code) => code === 121), // F10\n map(() => this.toolbarElement))\n .subscribe((toolbar) => toolbar.nativeElement.focus()));\n this.subs.add(fromEvent(this.viewMountElement, 'blur')\n .pipe(filter$1((event) => !this.viewMountElement.contains(event.relatedTarget)))\n .subscribe(() => this.onTouchedCallback()));\n }\n normalizeSize() {\n if (typeof this.resizable === 'object' && !this._styleObserver) {\n const element = this.element.nativeElement;\n this._styleObserver = new MutationObserver(() => {\n this.ngZone.runOutsideAngular(() => this.normalizeProperties(element));\n });\n this._styleObserver.observe(element, { attributeFilter: ['style'] });\n }\n }\n normalizeProperties(element) {\n const props = Object.keys(this.resizable);\n const pixelWidth = parseInt(element.style.width, 10);\n const pixelHeight = parseInt(element.style.height, 10);\n const resizable = this.resizable;\n props.forEach(prop => {\n const isMinProp = prop.startsWith('min');\n const isMaxProp = !isMinProp;\n const isWidthProp = prop.endsWith('Width');\n const isHeightProp = !isWidthProp;\n if (isMinProp && isWidthProp) {\n if (pixelWidth < resizable.minWidth) {\n element.style.width = resizable.minWidth + 'px';\n }\n }\n else if (isMinProp && isHeightProp) {\n if (pixelHeight < resizable.minHeight) {\n element.style.height = resizable.minHeight + 'px';\n }\n }\n else if (isMaxProp && isWidthProp) {\n if (pixelWidth > resizable.maxWidth) {\n element.style.width = resizable.maxWidth + 'px';\n }\n }\n else {\n if (pixelHeight > resizable.maxHeight) {\n element.style.height = resizable.maxHeight + 'px';\n }\n }\n });\n }\n dispatchPasteEvent(originalContent, cleanContent) {\n if (hasObservers(this.paste)) {\n const event = new EditorPasteEvent(cleanContent, originalContent, this._pasteEvent);\n this.ngZone.run(() => this.paste.emit(event));\n return event.isDefaultPrevented() ? '' : event.cleanedHtml;\n }\n return cleanContent;\n }\n ;\n}\nEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorComponent, deps: [{ token: i1$1.DialogService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Component });\nEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorComponent, selector: \"kendo-editor\", inputs: { value: \"value\", disabled: \"disabled\", readonly: \"readonly\", iframe: \"iframe\", applyToWord: \"applyToWord\", schema: \"schema\", plugins: \"plugins\", placeholder: \"placeholder\", preserveWhitespace: \"preserveWhitespace\", pasteCleanupSettings: \"pasteCleanupSettings\", resizable: \"resizable\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", paste: \"paste\", onBlur: \"blur\" }, host: { properties: { \"class.k-editor\": \"this.hostClass\", \"class.k-editor-resizable\": \"this.resizableClass\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-readonly\": \"this.isReadonly\", \"class.k-ie\": \"this.isIE\", \"attr.dir\": \"this.dir\", \"attr.ariaDisabled\": \"this.ariaDisabled\", \"style.minWidth\": \"this.minWidth\", \"style.maxWidth\": \"this.maxWidth\", \"style.minHeight\": \"this.minHeight\", \"style.maxHeight\": \"this.maxHeight\" } }, providers: [\n EditorLocalizationService,\n ProviderService,\n EditorToolsService,\n {\n provide: LocalizationService,\n useExisting: EditorLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.editor'\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => EditorComponent)\n }\n ], queries: [{ propertyName: \"userToolBarComponent\", first: true, predicate: ToolBarComponent, descendants: true }, { propertyName: \"userToolBarElement\", first: true, predicate: ToolBarComponent, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: \"dialogContainer\", first: true, predicate: [\"dialogsContainer\"], descendants: true, read: ViewContainerRef }, { propertyName: \"container\", first: true, predicate: [\"content\"], descendants: true, read: ViewContainerRef }, { propertyName: \"defaultToolbar\", first: true, predicate: [\"defaultToolbar\"], descendants: true, read: ElementRef }, { propertyName: \"defaultToolbarComponent\", first: true, predicate: [\"defaultToolbar\"], descendants: true, read: ToolBarComponent }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
    \n\n
    \n \n
    \n\n \n `, isInline: true, styles: [\"\\n >>> .k-editor-content > .ProseMirror {\\n height: 100%;\\n width: 100%;\\n box-sizing: border-box;\\n outline: none;\\n overflow: auto;\\n }\\n\\n .k-iframe {\\n width: 100%;\\n height: 100%;\\n display: block;\\n }\\n \"], components: [{ type: i1$3.ToolBarComponent, selector: \"kendo-toolbar\", inputs: [\"overflow\", \"resizable\", \"popupSettings\", \"tabindex\", \"tabIndex\"], outputs: [\"open\", \"close\"], exportAs: [\"kendoToolBar\"] }, { type: i1$3.ToolBarButtonGroupComponent, selector: \"kendo-toolbar-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"look\"], exportAs: [\"kendoToolBarButtonGroup\"] }, { type: i1$3.ToolBarButtonComponent, selector: \"kendo-toolbar-button\", inputs: [\"showText\", \"showIcon\", \"text\", \"style\", \"className\", \"title\", \"disabled\", \"toggleable\", \"look\", \"togglable\", \"selected\", \"fillMode\", \"themeColor\", \"icon\", \"iconClass\", \"imageUrl\"], outputs: [\"click\", \"pointerdown\", \"selectedChange\"], exportAs: [\"kendoToolBarButton\"] }, { type: EditorFormatComponent, selector: \"kendo-toolbar-dropdownlist[kendoEditorFormat]\", inputs: [\"data\"], outputs: [\"valueChange\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoEditorLocalizedMessages]\" }, { type: i3$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: EditorBoldButtonDirective, selector: \"kendo-toolbar-button[kendoEditorBoldButton]\" }, { type: EditorItalicButtonDirective, selector: \"kendo-toolbar-button[kendoEditorItalicButton]\" }, { type: EditorUnderlineButtonDirective, selector: \"kendo-toolbar-button[kendoEditorUnderlineButton]\" }, { type: EditorAlignLeftButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignLeftButton]\" }, { type: EditorAlignCenterButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignCenterButton]\" }, { type: EditorAlignRightButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignRightButton]\" }, { type: EditorAlignJustifyButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAlignJustifyButton]\" }, { type: EditorInsertUnorderedListButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertUnorderedListButton]\" }, { type: EditorInsertOrderedListButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertOrderedListButton]\" }, { type: EditorIndentButtonDirective, selector: \"kendo-toolbar-button[kendoEditorIndentButton]\" }, { type: EditorOutdentButtonDirective, selector: \"kendo-toolbar-button[kendoEditorOutdentButton]\" }, { type: EditorCreateLinkButtonDirective, selector: \"kendo-toolbar-button[kendoEditorCreateLinkButton]\" }, { type: EditorUnlinkButtonDirective, selector: \"kendo-toolbar-button[kendoEditorUnlinkButton]\" }, { type: EditorInsertImageButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertImageButton]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-editor',\n providers: [\n EditorLocalizationService,\n ProviderService,\n EditorToolsService,\n {\n provide: LocalizationService,\n useExisting: EditorLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.editor'\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => EditorComponent)\n }\n ],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
    \n\n
    \n \n
    \n\n \n `,\n styles: [\n `\n >>> .k-editor-content > .ProseMirror {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n outline: none;\n overflow: auto;\n }\n\n .k-iframe {\n width: 100%;\n height: 100%;\n display: block;\n }\n `\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: ProviderService }, { type: EditorToolsService }]; }, propDecorators: { value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], iframe: [{\n type: Input\n }], applyToWord: [{\n type: Input\n }], schema: [{\n type: Input\n }], plugins: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], preserveWhitespace: [{\n type: Input\n }], pasteCleanupSettings: [{\n type: Input\n }], resizable: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], paste: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-editor']\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-editor-resizable']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isReadonly: [{\n type: HostBinding,\n args: ['class.k-readonly']\n }], isIE: [{\n type: HostBinding,\n args: ['class.k-ie']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.ariaDisabled']\n }], minWidth: [{\n type: HostBinding,\n args: ['style.minWidth']\n }], maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth']\n }], minHeight: [{\n type: HostBinding,\n args: ['style.minHeight']\n }], maxHeight: [{\n type: HostBinding,\n args: ['style.maxHeight']\n }], userToolBarComponent: [{\n type: ContentChild,\n args: [ToolBarComponent]\n }], userToolBarElement: [{\n type: ContentChild,\n args: [ToolBarComponent, { read: ElementRef }]\n }], dialogContainer: [{\n type: ViewChild,\n args: ['dialogsContainer', { read: ViewContainerRef }]\n }], container: [{\n type: ViewChild,\n args: ['content', { read: ViewContainerRef }]\n }], defaultToolbar: [{\n type: ViewChild,\n args: ['defaultToolbar', { read: ElementRef, static: false }]\n }], defaultToolbarComponent: [{\n type: ViewChild,\n args: ['defaultToolbar', { read: ToolBarComponent, static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPickerDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.colorPicker.focus();\n });\n }\n handleActiveColorClick(event) {\n event.preventOpen();\n this.value = event.color;\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec(this.editorCommand, this.value);\n }\n this.dialog.close();\n this.editor.view.focus();\n }\n setData(args) {\n this.editor = args.editor;\n this.value = args.value;\n this.editorCommand = args.editorCommand;\n this.paletteSettings = args.paletteSettings;\n this.icon = args.icon;\n this.views = args.view ? [args.view] : args.views;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nColorPickerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"colorPicker\", first: true, predicate: [\"colorpicker\"], descendants: true, read: ColorPickerComponent, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor(editorCommand) }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: i5.ColorPickerComponent, selector: \"kendo-colorpicker\", inputs: [\"views\", \"view\", \"activeView\", \"readonly\", \"disabled\", \"format\", \"value\", \"popupSettings\", \"paletteSettings\", \"gradientSettings\", \"icon\", \"iconClass\", \"clearButton\", \"tabindex\", \"preview\", \"actionsLayout\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"open\", \"close\", \"focus\", \"blur\", \"cancel\", \"activeColorClick\", \"activeViewChange\"], exportAs: [\"kendoColorPicker\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor(editorCommand) }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], colorPicker: [{\n type: ViewChild,\n args: ['colorpicker', { read: ColorPickerComponent, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass FontFamilyDropDownListComponent {\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(tag) {\n this.valueChange.emit(tag);\n }\n focus() {\n this.dropDownList.focus();\n }\n}\nFontFamilyDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontFamilyDropDownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFontFamilyDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FontFamilyDropDownListComponent, selector: \"kendo-editor-fontfamily-dropdownlist\", inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true, static: true }, { propertyName: \"dropDownList\", first: true, predicate: [\"element\"], descendants: true, read: DropDownListComponent, static: true }], ngImport: i0, template: `\n \n \n \n {{ dataItem.text }}\n \n \n \n `, isInline: true, styles: [\"\\n .k-dropdownlist {\\n width: 13em;\\n }\\n \"], components: [{ type: i1$2.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: DropDownToolDirective, selector: \"[kendoEditorDropDownTool]\" }, { type: i1$2.ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\" }, { type: i3$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontFamilyDropDownListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-editor-fontfamily-dropdownlist',\n template: `\n \n \n \n {{ dataItem.text }}\n \n \n \n `,\n styles: [`\n .k-dropdownlist {\n width: 13em;\n }\n `]\n }]\n }], propDecorators: { data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass FontFamilyDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.fontFamilyDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('fontFamily', this.value);\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFontFamilyDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontFamilyDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFontFamilyDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FontFamilyDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"fontFamilyDropDownList\", first: true, predicate: [\"fontFamilyDropDownList\"], descendants: true, read: FontFamilyDropDownListComponent, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('fontFamily') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: FontFamilyDropDownListComponent, selector: \"kendo-editor-fontfamily-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontFamilyDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('fontFamily') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], fontFamilyDropDownList: [{\n type: ViewChild,\n args: ['fontFamilyDropDownList', { read: FontFamilyDropDownListComponent, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass PopupTableGridComponent {\n constructor() {\n this.cellClick = new EventEmitter();\n this.tableWizardClick = new EventEmitter();\n this.state = { rows: -1, cols: -1 };\n this.rows = 6;\n this.cols = 8;\n }\n get message() {\n const { rows, cols } = this.state;\n return `Create a ${rows > -1 ? rows + 1 : ''} ${cols > -1 ? 'x' : ''} ${cols > -1 ? cols + 1 : ''} table`;\n }\n get cells() {\n return Array.from(Array(this.rows * this.cols).keys());\n }\n selected(index) {\n const { rows, cols } = this.state;\n const cellRow = Math.floor(index / this.cols);\n const cellCol = index % this.cols;\n return cellRow <= rows && cellCol <= cols;\n }\n setState(index) {\n const rows = Math.floor(index / this.cols);\n const cols = index % this.cols;\n this.state = { rows: rows, cols: cols };\n }\n resetState() {\n this.state = { rows: -1, cols: -1 };\n }\n insertTable() {\n this.cellClick.emit(this.state);\n }\n openTableWizard() {\n this.tableWizardClick.emit();\n }\n}\nPopupTableGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupTableGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPopupTableGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopupTableGridComponent, selector: \"kendo-popup-table-grid\", outputs: { cellClick: \"cellClick\", tableWizardClick: \"tableWizardClick\" }, ngImport: i0, template: `\n
    \n \n \n
    \n
    {{ message }}
    \n \n `, isInline: true, directives: [{ type: i3$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupTableGridComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-popup-table-grid',\n template: `\n
    \n \n \n
    \n
    {{ message }}
    \n \n `\n }]\n }], propDecorators: { cellClick: [{\n type: Output\n }], tableWizardClick: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass InsertTableDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n }\n onCancelAction() {\n this.dialog.close();\n this.editor.view.focus();\n }\n onCellClick(args) {\n this.dialog.close();\n this.editor.exec(\"insertTable\", args);\n this.editor.view.focus();\n }\n setData(args) {\n this.editor = args.editor;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nInsertTableDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InsertTableDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nInsertTableDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: InsertTableDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('insertTable') }}\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: PopupTableGridComponent, selector: \"kendo-popup-table-grid\", outputs: [\"cellClick\", \"tableWizardClick\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InsertTableDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('insertTable') }}\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FontSizeDropDownListComponent {\n constructor() {\n this.valueChange = new EventEmitter();\n }\n onValueChange(size) {\n this.valueChange.emit(size);\n }\n focus() {\n this.dropDownList.focus();\n }\n}\nFontSizeDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontSizeDropDownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFontSizeDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FontSizeDropDownListComponent, selector: \"kendo-editor-fontsize-dropdownlist\", inputs: { data: \"data\", value: \"value\", defaultItem: \"defaultItem\", itemDisabled: \"itemDisabled\", title: \"title\", disabled: \"disabled\", tabindex: \"tabindex\" }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true, static: true }, { propertyName: \"dropDownList\", first: true, predicate: [\"element\"], descendants: true, read: DropDownListComponent, static: true }], ngImport: i0, template: `\n \n \n `, isInline: true, styles: [\"\\n .k-dropdownlist {\\n width: 13em;\\n }\\n \"], components: [{ type: i1$2.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: DropDownToolDirective, selector: \"[kendoEditorDropDownTool]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontSizeDropDownListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-editor-fontsize-dropdownlist',\n template: `\n \n \n `,\n styles: [`\n .k-dropdownlist {\n width: 13em;\n }\n `]\n }]\n }], propDecorators: { data: [{\n type: Input\n }], value: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], element: [{\n type: ViewChild,\n args: ['element', { static: true }]\n }], dropDownList: [{\n type: ViewChild,\n args: ['element', { read: DropDownListComponent, static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass FontSizeDialogComponent extends DialogContentBase {\n constructor(dialog, localization) {\n super(dialog);\n this.dialog = dialog;\n this.localization = localization;\n this.data = [];\n }\n ngAfterViewInit() {\n Promise.resolve(null).then(() => {\n this.fontSizeDropDownList.dropDownList.focus();\n });\n }\n onCancelAction() {\n this.dialog.close();\n }\n onConfirmAction() {\n if (this.value) {\n this.editor.exec('fontSize', this.value);\n }\n this.dialog.close();\n }\n setData(args) {\n this.editor = args.editor;\n this.data = args.data;\n this.defaultItem = args.defaultItem;\n this.value = args.value;\n this.itemDisabled = args.itemDisabled;\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFontSizeDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontSizeDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: EditorLocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFontSizeDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FontSizeDialogComponent, selector: \"ng-component\", inputs: { editor: \"editor\" }, viewQueries: [{ propertyName: \"fontSizeDropDownList\", first: true, predicate: [\"fontSizeDropDownList\"], descendants: true, read: FontSizeDropDownListComponent, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('fontSize') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: FontSizeDropDownListComponent, selector: \"kendo-editor-fontsize-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }, { type: i1$1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FontSizeDialogComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n {{ textFor('fontSize') }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogRef }, { type: EditorLocalizationService }]; }, propDecorators: { editor: [{\n type: Input\n }], fontSizeDropDownList: [{\n type: ViewChild,\n args: ['fontSizeDropDownList', { read: FontSizeDropDownListComponent, static: true }]\n }] } });\n\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-dropdownlist` with an Editor command that changes the font size of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorFontSizeComponent extends ToolBarToolComponent {\n constructor(dialogService, localization, providerService, toolsService) {\n super();\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: '8px', size: '8px' },\n { text: '10px', size: '10px' },\n { text: '12px', size: '12px' },\n { text: '14px', size: '14px' },\n { text: '18px', size: '18px' },\n { text: '24px', size: '24px' },\n { text: '36px', size: '36px' }\n ];\n this.editor = providerService.editor;\n }\n /**\n * Overrides the default font size list.\n * Numeric values are treated as pixels.\n */\n set data(sizes) {\n let normalizedSizes;\n if (sizes) {\n normalizedSizes = sizes.map(s => {\n if (typeof s.size === 'number') {\n return Object.assign(Object.assign({}, s), { size: `${s.size}px` });\n }\n return s;\n });\n }\n this._data = normalizedSizes || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = itemArgs => {\n if (!this.overflows && this.fontSizeDropDownList && !this.fontSizeDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.size === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, size: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n // remove units(px, em, rem...)\n // string#match returns array\n this.value = getUniqueStyleValues(style.selected, 'font-size') || null;\n this.disabled = style.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('fontSize', ev);\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(d => d.size === ev));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('fontSize');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FontSizeDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.fontSizeButton.nativeElement.focus();\n }\n else {\n this.fontSizeDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n}\nEditorFontSizeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFontSizeComponent, deps: [{ token: i1$1.DialogService }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Component });\nEditorFontSizeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorFontSizeComponent, selector: \"kendo-toolbar-dropdownlist[kendoEditorFontSize]\", inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontSizeComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true }, { propertyName: \"fontSizeDropDownList\", first: true, predicate: [\"element\"], descendants: true, read: FontSizeDropDownListComponent }, { propertyName: \"fontSizeButton\", first: true, predicate: [\"fontSizeButton\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `, isInline: true, components: [{ type: FontSizeDropDownListComponent, selector: \"kendo-editor-fontsize-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFontSizeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontSizeComponent) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFontSize]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogService }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; }, propDecorators: { data: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], fontSizeDropDownList: [{\n type: ViewChild,\n args: ['element', { read: FontSizeDropDownListComponent, static: false }]\n }], fontSizeButton: [{\n type: ViewChild,\n args: ['fontSizeButton', { static: false }]\n }] } });\n\n/**\n * A component which configures an existing `DropDownListComponent` as an Editor tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The component associates a `kendo-toolbar-dropdownlist` with an Editor command that changes the font family of a content block and\n * automatically defines the options of the drop-down list and sets its values.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorFontFamilyComponent extends ToolBarToolComponent {\n constructor(dialogService, localization, providerService, toolsService) {\n super();\n this.dialogService = dialogService;\n this.localization = localization;\n this.toolsService = toolsService;\n this.disabled = false;\n this.tabindex = -1;\n /**\n * Fires when the user updates the value of the drop-down list.\n */\n this.valueChange = new EventEmitter();\n this._data = [\n { text: 'Arial', fontName: 'Arial,\"Helvetica Neue\",Helvetica,sans-serif' },\n { text: 'Courier New', fontName: '\"Courier New\",Courier,\"Lucida Sans Typewriter\",\"Lucida Typewriter\",monospace' },\n { text: 'Georgia', fontName: 'Georgia,Times,\"Times New Roman\",serif' },\n {\n fontName: 'Impact,Haettenschweiler,\"Franklin Gothic Bold\",Charcoal,\"Helvetica Inserat\",\"Bitstream Vera Sans Bold\",\"Arial Black\",\"sans serif\"',\n text: 'Impact'\n },\n { text: 'Lucida Console', fontName: '\"Lucida Console\",\"Lucida Sans Typewriter\",monaco,\"Bitstream Vera Sans Mono\",monospace' },\n { text: 'Tahoma', fontName: 'Tahoma,Verdana,Segoe,sans-serif' },\n { text: 'Times New Roman', fontName: 'TimesNewRoman,\"Times New Roman\",Times,Baskerville,Georgia,serif' },\n { text: 'Trebuchet MS', fontName: '\"Trebuchet MS\",\"Lucida Grande\",\"Lucida Sans Unicode\",\"Lucida Sans\",Tahoma,sans-serif' },\n { text: 'Verdana', fontName: 'Verdana,Geneva,sans-serif' }\n ];\n this.editor = providerService.editor;\n }\n /**\n * Overrides the default font list.\n */\n set data(fonts) {\n this._data = fonts || this._data;\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.itemDisabled = (itemArgs) => {\n if (!this.overflows && this.fontFamilyDropDownList && !this.fontFamilyDropDownList.dropDownList.isOpen) {\n return true; //disable all items in order to prevent navigation when DDL is closed\n }\n else {\n return itemArgs.dataItem.fontName === null;\n }\n };\n setTimeout(() => {\n this.defaultItem = { text: this.title, fontName: null };\n this.toolsService.needsCheck.next();\n });\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n this.value = getUniqueStyleValues(style.selected, 'font-family') || null;\n this.disabled = style.disabled;\n });\n }\n /**\n * @hidden\n */\n onValueChange(ev) {\n if (isPresent(ev)) {\n this.editor.exec('fontFamily', ev);\n this.editor.view.focus();\n this.valueChange.emit(this.data.find(f => f.fontName === ev));\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('fontFamily');\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: FontFamilyDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n data: this.data,\n defaultItem: this.defaultItem,\n value: this.value,\n itemDisabled: this.itemDisabled\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.fontFamilyButton.nativeElement.focus();\n }\n else {\n this.fontFamilyDropDownList.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n}\nEditorFontFamilyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFontFamilyComponent, deps: [{ token: i1$1.DialogService }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Component });\nEditorFontFamilyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorFontFamilyComponent, selector: \"kendo-toolbar-dropdownlist[kendoEditorFontFamily]\", inputs: { data: \"data\" }, outputs: { valueChange: \"valueChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontFamilyComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true }, { propertyName: \"fontFamilyDropDownList\", first: true, predicate: [\"element\"], descendants: true, read: FontFamilyDropDownListComponent }, { propertyName: \"fontFamilyButton\", first: true, predicate: [\"fontFamilyButton\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `, isInline: true, components: [{ type: FontFamilyDropDownListComponent, selector: \"kendo-editor-fontfamily-dropdownlist\", inputs: [\"data\", \"value\", \"defaultItem\", \"itemDisabled\", \"title\", \"disabled\", \"tabindex\"], outputs: [\"valueChange\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorFontFamilyComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorFontFamilyComponent) }],\n selector: 'kendo-toolbar-dropdownlist[kendoEditorFontFamily]',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DialogService }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; }, propDecorators: { data: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], fontFamilyDropDownList: [{\n type: ViewChild,\n args: ['element', { read: FontFamilyDropDownListComponent, static: false }]\n }], fontFamilyButton: [{\n type: ViewChild,\n args: ['fontFamilyButton', { static: false }]\n }] } });\n\n// eslint-disable no-forward-ref\n/**\n * A component which configures an existing ColorPickerComponent as a ToolBar tool.\n * To associate a `kendo-toolbar-colorpicker` with an Editor command that changes the\n * foreground or the background color of the text, use the `kendoEditorForeColor` or `kendoEditorBackColor` directive.\n */\nclass EditorColorPickerComponent extends ToolBarToolComponent {\n constructor(localization, dialogService, ngZone, providerService) {\n super();\n this.localization = localization;\n this.dialogService = dialogService;\n this.ngZone = ngZone;\n this.tabindex = -1;\n /**\n * Specifies if the component should be disabled.\n */\n this.disabled = false;\n /**\n * Specifies whether the ColorPicker will render a gradient, palette, or both in its popup.\n *\n * @default ['palette']\n */\n this.views = ['palette'];\n this.editor = providerService.editor;\n }\n /**\n * @hidden\n *\n * For backward compatibility with configurations using the deprecated \"view\" input.\n */\n set view(view) {\n this.views = [view];\n }\n get view() {\n return (this.views && this.views.length > 0) ? this.views[0] : null;\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get(this.editorCommand);\n }\n ngOnInit() {\n this.subs = this.editor.stateChange.subscribe(({ style }) => {\n this.disabled = style.disabled;\n });\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n this.editor.exec(this.editorCommand, color);\n this.editor.view.focus();\n }\n /**\n * @hidden\n */\n handleActiveColorClick(event) {\n event.preventOpen();\n this.handleValueChange(event.color);\n }\n /**\n * @hidden\n */\n onOpen(picker) {\n this.valueCache = picker.value;\n picker.reset();\n }\n /**\n * @hidden\n */\n onClose(picker) {\n if (!picker.value) {\n picker.value = this.valueCache;\n }\n this.editor.shouldEmitFocus = true;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.editor.view.focus());\n }\n /**\n * @hidden\n */\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: ColorPickerDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor,\n value: this.value,\n title: this.title,\n editorCommand: this.editorCommand,\n paletteSettings: this.paletteSettings,\n icon: this.icon,\n views: this.views\n });\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabindex = 0;\n if (this.overflows) {\n this.colorPickerButton.nativeElement.focus();\n }\n else {\n this.colorPicker.focus();\n }\n }\n /**\n * @hidden\n */\n handleKey() {\n this.tabindex = -1;\n return false;\n }\n}\nEditorColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorColorPickerComponent, deps: [{ token: EditorLocalizationService }, { token: i1$1.DialogService }, { token: i0.NgZone }, { token: ProviderService }], target: i0.ɵɵFactoryTarget.Component });\nEditorColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorColorPickerComponent, selector: \"kendo-toolbar-colorpicker\", inputs: { value: \"value\", icon: \"icon\", paletteSettings: \"paletteSettings\", editorCommand: \"editorCommand\", disabled: \"disabled\", views: \"views\", view: \"view\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorColorPickerComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"element\", first: true, predicate: [\"colorpicker\"], descendants: true, read: ElementRef }, { propertyName: \"colorPicker\", first: true, predicate: [\"colorpicker\"], descendants: true, read: ColorPickerComponent }, { propertyName: \"colorPickerButton\", first: true, predicate: [\"colorPickerButton\"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `, isInline: true, components: [{ type: i5.ColorPickerComponent, selector: \"kendo-colorpicker\", inputs: [\"views\", \"view\", \"activeView\", \"readonly\", \"disabled\", \"format\", \"value\", \"popupSettings\", \"paletteSettings\", \"gradientSettings\", \"icon\", \"iconClass\", \"clearButton\", \"tabindex\", \"preview\", \"actionsLayout\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"open\", \"close\", \"focus\", \"blur\", \"cancel\", \"activeColorClick\", \"activeViewChange\"], exportAs: [\"kendoColorPicker\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorColorPickerComponent) }],\n selector: 'kendo-toolbar-colorpicker',\n template: `\n \n \n \n \n \n \n {{ title }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: EditorLocalizationService }, { type: i1$1.DialogService }, { type: i0.NgZone }, { type: ProviderService }]; }, propDecorators: { value: [{\n type: Input\n }], icon: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], editorCommand: [{\n type: Input\n }], disabled: [{\n type: Input\n }], views: [{\n type: Input\n }], view: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], element: [{\n type: ViewChild,\n args: ['colorpicker', { read: ElementRef, static: false }]\n }], colorPicker: [{\n type: ViewChild,\n args: ['colorpicker', { read: ColorPickerComponent, static: false }]\n }], colorPickerButton: [{\n type: ViewChild,\n args: ['colorPickerButton', { read: ElementRef, static: false }]\n }] } });\n\nconst popupWrapperWidth = '190px';\nconst popupWrapperHeight = '164px'; // Set to '192px' when TableWizard button is added;\n/**\n * A toolbar component which allows the user to create and insert a table in the Editor's content.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorInsertTableButtonComponent extends ToolBarToolComponent {\n constructor(localization, popupService, dialogService, providerService) {\n super();\n this.localization = localization;\n this.popupService = popupService;\n this.dialogService = dialogService;\n this.open = false;\n this.buttonBlurred = new EventEmitter();\n this.cellClicked = new EventEmitter();\n this.editor = providerService.editor;\n this.subs = this.editor.stateChange.subscribe(({ insertTable }) => {\n this.disabled = insertTable.disabled;\n });\n this.subs.add(this.buttonBlurred.pipe(concatMap(() => interval(200).pipe(take(1), takeUntil(this.cellClicked)))).subscribe(() => {\n this.toggle(false);\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get outerWidth() {\n if (this.element) {\n return outerWidth(this.element.nativeElement);\n }\n }\n get title() {\n return this.localization.get('insertTable');\n }\n /**\n * @hidden\n */\n toggle(open) {\n this.open = open === undefined ? !this.open : open;\n this.destroyPopup();\n if (this.open) {\n this.createPopup();\n }\n }\n /**\n * @hidden\n */\n openDialog() {\n const dialogSettings = {\n appendTo: this.editor.dialogContainer,\n content: InsertTableDialogComponent\n };\n this.editor.toolbar.toggle(false);\n const dialogContent = this.dialogService.open(dialogSettings).content.instance;\n dialogContent.setData({\n editor: this.editor\n });\n }\n /**\n * @hidden\n */\n onBlur() {\n this.tabIndex = -1;\n this.buttonBlurred.emit();\n }\n /**\n * @hidden\n */\n onCellClick(args) {\n this.cellClicked.emit();\n this.toggle(false);\n this.editor.exec('insertTable', args);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.tabIndex = 0;\n this.getButton().focus();\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (ev.keyCode === Keys.Space || ev.keyCode === Keys.Enter) {\n return true;\n }\n this.tabIndex = -1;\n return false;\n }\n /**\n * @hidden\n */\n onTableWizardClick() {\n // this.toggle(false);\n // this.editor.openDialog(\"tableWizard\");\n }\n createPopup() {\n const horizontalAlign = this.editor.direction === 'rtl' ? 'right' : 'left';\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.element,\n anchorAlign: anchorPosition,\n animate: true,\n content: this.popupGridTemplate,\n popupAlign: popupPosition,\n popupClass: 'k-ct-popup k-group k-reset k-state-border-up',\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n popupWrapper.style.width = popupWrapperWidth;\n popupWrapper.style.height = popupWrapperHeight;\n popupWrapper.setAttribute('dir', this.editor.direction);\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n getButton() {\n return (this.overflows ? this.overflowElement : this.element).nativeElement;\n }\n}\nEditorInsertTableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertTableButtonComponent, deps: [{ token: EditorLocalizationService }, { token: i2.PopupService }, { token: i1$1.DialogService }, { token: ProviderService }], target: i0.ɵɵFactoryTarget.Component });\nEditorInsertTableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorInsertTableButtonComponent, selector: \"kendo-editor-insert-table-button\", providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorInsertTableButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true }, { propertyName: \"element\", first: true, predicate: [\"element\"], descendants: true }, { propertyName: \"overflowElement\", first: true, predicate: [\"overflowElement\"], descendants: true }, { propertyName: \"popupGridTemplate\", first: true, predicate: [\"popupGridTemplate\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n {{ title }}\n \n \n \n \n \n `, isInline: true, components: [{ type: PopupTableGridComponent, selector: \"kendo-popup-table-grid\", outputs: [\"cellClick\", \"tableWizardClick\"] }], directives: [{ type: i4.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertTableButtonComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => EditorInsertTableButtonComponent) }],\n selector: 'kendo-editor-insert-table-button',\n template: `\n \n \n \n \n \n {{ title }}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: EditorLocalizationService }, { type: i2.PopupService }, { type: i1$1.DialogService }, { type: ProviderService }]; }, propDecorators: { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], element: [{\n type: ViewChild,\n args: ['element', { static: false }]\n }], overflowElement: [{\n type: ViewChild,\n args: ['overflowElement', { static: false }]\n }], popupGridTemplate: [{\n type: ViewChild,\n args: ['popupGridTemplate', { static: true }]\n }] } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Blockquote tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorBlockquoteDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('blockquote', button, localization, providerService, toolsService);\n }\n}\nEditorBlockquoteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBlockquoteDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorBlockquoteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorBlockquoteDirective, selector: \"kendo-toolbar-button[kendoEditorBlockquoteButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBlockquoteDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorBlockquoteButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Redo tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorRedoButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('redo', button, localization, providerService, toolsService);\n }\n}\nEditorRedoButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorRedoButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorRedoButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorRedoButtonDirective, selector: \"kendo-toolbar-button[kendoEditorRedoButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorRedoButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorRedoButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Undo tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorUndoButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('undo', button, localization, providerService, toolsService);\n }\n}\nEditorUndoButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUndoButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorUndoButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorUndoButtonDirective, selector: \"kendo-toolbar-button[kendoEditorUndoButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorUndoButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorUndoButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor ViewSource tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorViewSourceButtonDirective extends EditorCommandDialog {\n constructor(button, localization, providerService, toolsService) {\n super('viewSource', button, localization, providerService, toolsService);\n }\n}\nEditorViewSourceButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorViewSourceButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorViewSourceButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorViewSourceButtonDirective, selector: \"kendo-toolbar-button[kendoEditorViewSourceButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorViewSourceButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorViewSourceButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Strikethrough tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorStrikethroughButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('strikethrough', button, localization, providerService, toolsService);\n }\n}\nEditorStrikethroughButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorStrikethroughButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorStrikethroughButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorStrikethroughButtonDirective, selector: \"kendo-toolbar-button[kendoEditorStrikethroughButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorStrikethroughButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorStrikethroughButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Subscript tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorSubscriptButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('subscript', button, localization, providerService, toolsService);\n }\n}\nEditorSubscriptButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSubscriptButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorSubscriptButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorSubscriptButtonDirective, selector: \"kendo-toolbar-button[kendoEditorSubscriptButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSubscriptButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSubscriptButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Superscript tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `selected` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorSuperscriptButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('superscript', button, localization, providerService, toolsService);\n }\n}\nEditorSuperscriptButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSuperscriptButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorSuperscriptButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorSuperscriptButtonDirective, selector: \"kendo-toolbar-button[kendoEditorSuperscriptButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSuperscriptButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSuperscriptButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor 'Insert File' tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorInsertFileButtonDirective extends EditorCommandDialog {\n constructor(button, localization, providerService, toolsService) {\n super('insertFile', button, localization, providerService, toolsService);\n }\n}\nEditorInsertFileButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertFileButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorInsertFileButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorInsertFileButtonDirective, selector: \"kendo-toolbar-button[kendoEditorInsertFileButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorInsertFileButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorInsertFileButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an `EditorColorPickerComponent`\n * for manipulating the foreground color of the text\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n */\nclass EditorForeColorDirective {\n constructor(colorPicker) {\n this.colorPicker = colorPicker;\n this.colorPicker.icon = commandIcons.foreColor;\n this.colorPicker.editorCommand = 'foreColor';\n }\n}\nEditorForeColorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorForeColorDirective, deps: [{ token: EditorColorPickerComponent }], target: i0.ɵɵFactoryTarget.Directive });\nEditorForeColorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorForeColorDirective, selector: \"[kendoEditorForeColor]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorForeColorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEditorForeColor]'\n }]\n }], ctorParameters: function () { return [{ type: EditorColorPickerComponent }]; } });\n\n/**\n * A directive which configures an `EditorColorPickerComponent`\n * for manipulating the background color of the text\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n */\nclass EditorBackColorDirective {\n constructor(colorPicker) {\n this.colorPicker = colorPicker;\n this.colorPicker.icon = commandIcons.backColor;\n this.colorPicker.editorCommand = 'backColor';\n }\n}\nEditorBackColorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBackColorDirective, deps: [{ token: EditorColorPickerComponent }], target: i0.ɵɵFactoryTarget.Directive });\nEditorBackColorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorBackColorDirective, selector: \"[kendoEditorBackColor]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorBackColorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEditorBackColor]'\n }]\n }], ctorParameters: function () { return [{ type: EditorColorPickerComponent }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Clean Formatting tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorCleanFormattingButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('cleanFormatting', button, localization, providerService, toolsService);\n }\n}\nEditorCleanFormattingButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCleanFormattingButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorCleanFormattingButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorCleanFormattingButtonDirective, selector: \"kendo-toolbar-button[kendoEditorCleanFormattingButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorCleanFormattingButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorCleanFormattingButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddColumnBefore tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAddColumnBeforeButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('addColumnBefore', button, localization, providerService, toolsService);\n }\n}\nEditorAddColumnBeforeButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddColumnBeforeButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAddColumnBeforeButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAddColumnBeforeButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAddColumnBeforeButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddColumnBeforeButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddColumnBeforeButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddColumnAfter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAddColumnAfterButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('addColumnAfter', button, localization, providerService, toolsService);\n }\n}\nEditorAddColumnAfterButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddColumnAfterButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAddColumnAfterButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAddColumnAfterButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAddColumnAfterButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddColumnAfterButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddColumnAfterButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddRowBefore tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAddRowBeforeButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('addRowBefore', button, localization, providerService, toolsService);\n }\n}\nEditorAddRowBeforeButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddRowBeforeButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAddRowBeforeButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAddRowBeforeButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAddRowBeforeButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddRowBeforeButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddRowBeforeButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor AddRowAfter tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorAddRowAfterButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('addRowAfter', button, localization, providerService, toolsService);\n }\n}\nEditorAddRowAfterButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddRowAfterButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorAddRowAfterButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorAddRowAfterButtonDirective, selector: \"kendo-toolbar-button[kendoEditorAddRowAfterButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorAddRowAfterButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorAddRowAfterButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteColumn tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorDeleteColumnButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('deleteColumn', button, localization, providerService, toolsService);\n }\n}\nEditorDeleteColumnButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteColumnButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorDeleteColumnButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorDeleteColumnButtonDirective, selector: \"kendo-toolbar-button[kendoEditorDeleteColumnButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteColumnButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteColumnButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteRow tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorDeleteRowButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('deleteRow', button, localization, providerService, toolsService);\n }\n}\nEditorDeleteRowButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteRowButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorDeleteRowButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorDeleteRowButtonDirective, selector: \"kendo-toolbar-button[kendoEditorDeleteRowButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteRowButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteRowButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor DeleteTable tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorDeleteTableButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('deleteTable', button, localization, providerService, toolsService);\n }\n}\nEditorDeleteTableButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteTableButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorDeleteTableButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorDeleteTableButtonDirective, selector: \"kendo-toolbar-button[kendoEditorDeleteTableButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorDeleteTableButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorDeleteTableButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * @hidden\n *\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor MergeCells tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorMergeCellsButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('mergeCells', button, localization, providerService, toolsService);\n }\n}\nEditorMergeCellsButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorMergeCellsButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorMergeCellsButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorMergeCellsButtonDirective, selector: \"kendo-toolbar-button[kendoEditorMergeCellsButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorMergeCellsButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorMergeCellsButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * @hidden\n *\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor SplitCell tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n * In addition, the directive updates the `disabled` state of the button according to the cursor position in the editing area.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorSplitCellButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('splitCell', button, localization, providerService, toolsService);\n }\n}\nEditorSplitCellButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSplitCellButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorSplitCellButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorSplitCellButtonDirective, selector: \"kendo-toolbar-button[kendoEditorSplitCellButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSplitCellButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSplitCellButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_editor %}#toc-localization)).\n */\nclass CustomMessagesComponent extends MessagesDirective {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCustomMessagesComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-editor-messages\", providers: [\n {\n provide: MessagesDirective,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: MessagesDirective,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-editor-messages'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor Print tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * > The Editor Print tool is supported in the default [`iframe`](https://www.telerik.com/kendo-angular-ui-develop/components/editor/api/EditorComponent/#toc-iframe) mode only.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorPrintDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('print', button, localization, providerService, toolsService);\n }\n ngAfterViewInit() {\n if (isDevMode) {\n if (!this.editor.iframe) {\n throw new Error(EditorErrorMessages.printTool);\n }\n }\n }\n clickHandler() {\n if (this.editor.iframe) {\n const view = this.editor.view;\n const dom = view && view.dom;\n const doc = dom && dom.ownerDocument;\n const editorWindow = doc && doc.defaultView;\n if (editorWindow) {\n editorWindow.print();\n }\n }\n }\n}\nEditorPrintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorPrintDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorPrintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorPrintDirective, selector: \"kendo-toolbar-button[kendoEditorPrintButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorPrintDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorPrintButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\n/**\n * A directive which configures an existing `ToolBarButtonComponent` as an Editor SelectAll tool\n * ([see example]({% slug toolbartools_editor %}#toc-built-in-tools)).\n * The directive will predefine the `icon` and `click` event handlers of the button.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * The following example demonstrates how to change the default icon that is applied by the directive.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass EditorSelectAllButtonDirective extends EditorCommandButton {\n constructor(button, localization, providerService, toolsService) {\n super('selectAll', button, localization, providerService, toolsService);\n }\n clickHandler() {\n this.editor.shouldEmitFocus = true;\n super.clickHandler();\n }\n}\nEditorSelectAllButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSelectAllButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: EditorLocalizationService }, { token: ProviderService }, { token: EditorToolsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditorSelectAllButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditorSelectAllButtonDirective, selector: \"kendo-toolbar-button[kendoEditorSelectAllButton]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorSelectAllButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-toolbar-button[kendoEditorSelectAllButton]'\n }]\n }], ctorParameters: function () { return [{ type: i1$3.ToolBarButtonComponent }, { type: EditorLocalizationService }, { type: ProviderService }, { type: EditorToolsService }]; } });\n\nconst COMPONENT_DIRECTIVES = [\n //alignment\n EditorAlignLeftButtonDirective,\n EditorAlignCenterButtonDirective,\n EditorAlignRightButtonDirective,\n EditorAlignJustifyButtonDirective,\n //file\n EditorInsertFileButtonDirective,\n //history\n EditorRedoButtonDirective,\n EditorUndoButtonDirective,\n //image\n EditorInsertImageButtonDirective,\n //indent\n EditorIndentButtonDirective,\n EditorOutdentButtonDirective,\n //link\n EditorCreateLinkButtonDirective,\n EditorUnlinkButtonDirective,\n //list\n EditorInsertOrderedListButtonDirective,\n EditorInsertUnorderedListButtonDirective,\n //source\n EditorViewSourceButtonDirective,\n //typographical emphasis\n EditorBoldButtonDirective,\n EditorItalicButtonDirective,\n EditorUnderlineButtonDirective,\n EditorStrikethroughButtonDirective,\n EditorSubscriptButtonDirective,\n EditorSuperscriptButtonDirective,\n //color\n EditorForeColorDirective,\n EditorBackColorDirective,\n //clear format\n EditorCleanFormattingButtonDirective,\n //table\n EditorAddColumnBeforeButtonDirective,\n EditorAddColumnAfterButtonDirective,\n EditorAddRowBeforeButtonDirective,\n EditorAddRowAfterButtonDirective,\n EditorDeleteColumnButtonDirective,\n EditorDeleteRowButtonDirective,\n EditorDeleteTableButtonDirective,\n EditorMergeCellsButtonDirective,\n EditorSplitCellButtonDirective,\n // EditorTableWizardButtonDirective,\n //localization\n CustomMessagesComponent,\n LocalizedMessagesDirective,\n // dropdown tools\n DropDownToolDirective,\n // print\n EditorPrintDirective,\n // select all\n EditorSelectAllButtonDirective,\n // blockquote\n EditorBlockquoteDirective\n];\nconst TOOLBAR_TOOLS = [\n EditorFontSizeComponent,\n EditorFontFamilyComponent,\n EditorFormatComponent,\n EditorColorPickerComponent,\n EditorInsertTableButtonComponent\n];\nconst TOOLBAR_DIALOGS = [\n FileLinkDialogComponent,\n ImageDialogComponent,\n SourceDialogComponent,\n FormatDialogComponent,\n ColorPickerDialogComponent,\n FontFamilyDialogComponent,\n FontSizeDialogComponent,\n InsertTableDialogComponent\n // TableWizardDialogComponent\n // Table Wizard Building Blocks\n // TableSettingsComponent,\n // CellSettingsComponent,\n // AccessibilitySettingsComponent\n];\nconst INTERNAL_COMPONENTS = [\n PopupTableGridComponent,\n FormatDropDownListComponent,\n FontFamilyDropDownListComponent,\n FontSizeDropDownListComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the Editor component.\n *\n * The package exports:\n * - `EditorComponent`—The `EditorComponent` class.\n * - `EditorButtonDirective`—The `EditorButton` directive class.\n * - `EditorDropDownDirective`—The `EditorDropDown` directive class.\n * - `EditorDialogDirective`—The `EditorDialog` directive class.\n * - `ToolBarDropDownListComponent`—The `ToolBarDropDownListComponent` directive class.\n * - `ButtonModule`—The `KendoButton` module.\n * - `ToolBarModule`—The `KendoToolBar` module.\n *\n * * @example\n *\n * ```ts-no-run\n * // Import the Editor module\n * import { EditorModule } from '@progress/kendo-angular-editor';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, EditorModule], // import the Editor module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass EditorModule {\n}\nEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorModule, declarations: [EditorComponent, \n //alignment\n EditorAlignLeftButtonDirective,\n EditorAlignCenterButtonDirective,\n EditorAlignRightButtonDirective,\n EditorAlignJustifyButtonDirective,\n //file\n EditorInsertFileButtonDirective,\n //history\n EditorRedoButtonDirective,\n EditorUndoButtonDirective,\n //image\n EditorInsertImageButtonDirective,\n //indent\n EditorIndentButtonDirective,\n EditorOutdentButtonDirective,\n //link\n EditorCreateLinkButtonDirective,\n EditorUnlinkButtonDirective,\n //list\n EditorInsertOrderedListButtonDirective,\n EditorInsertUnorderedListButtonDirective,\n //source\n EditorViewSourceButtonDirective,\n //typographical emphasis\n EditorBoldButtonDirective,\n EditorItalicButtonDirective,\n EditorUnderlineButtonDirective,\n EditorStrikethroughButtonDirective,\n EditorSubscriptButtonDirective,\n EditorSuperscriptButtonDirective,\n //color\n EditorForeColorDirective,\n EditorBackColorDirective,\n //clear format\n EditorCleanFormattingButtonDirective,\n //table\n EditorAddColumnBeforeButtonDirective,\n EditorAddColumnAfterButtonDirective,\n EditorAddRowBeforeButtonDirective,\n EditorAddRowAfterButtonDirective,\n EditorDeleteColumnButtonDirective,\n EditorDeleteRowButtonDirective,\n EditorDeleteTableButtonDirective,\n EditorMergeCellsButtonDirective,\n EditorSplitCellButtonDirective,\n // EditorTableWizardButtonDirective,\n //localization\n CustomMessagesComponent,\n LocalizedMessagesDirective,\n // dropdown tools\n DropDownToolDirective,\n // print\n EditorPrintDirective,\n // select all\n EditorSelectAllButtonDirective,\n // blockquote\n EditorBlockquoteDirective, EditorFontSizeComponent,\n EditorFontFamilyComponent,\n EditorFormatComponent,\n EditorColorPickerComponent,\n EditorInsertTableButtonComponent, FileLinkDialogComponent,\n ImageDialogComponent,\n SourceDialogComponent,\n FormatDialogComponent,\n ColorPickerDialogComponent,\n FontFamilyDialogComponent,\n FontSizeDialogComponent,\n InsertTableDialogComponent\n // TableWizardDialogComponent\n // Table Wizard Building Blocks\n // TableSettingsComponent,\n // CellSettingsComponent,\n // AccessibilitySettingsComponent\n , PopupTableGridComponent,\n FormatDropDownListComponent,\n FontFamilyDropDownListComponent,\n FontSizeDropDownListComponent], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n CheckBoxModule,\n ToolBarModule,\n TextBoxModule], exports: [EditorComponent, \n //alignment\n EditorAlignLeftButtonDirective,\n EditorAlignCenterButtonDirective,\n EditorAlignRightButtonDirective,\n EditorAlignJustifyButtonDirective,\n //file\n EditorInsertFileButtonDirective,\n //history\n EditorRedoButtonDirective,\n EditorUndoButtonDirective,\n //image\n EditorInsertImageButtonDirective,\n //indent\n EditorIndentButtonDirective,\n EditorOutdentButtonDirective,\n //link\n EditorCreateLinkButtonDirective,\n EditorUnlinkButtonDirective,\n //list\n EditorInsertOrderedListButtonDirective,\n EditorInsertUnorderedListButtonDirective,\n //source\n EditorViewSourceButtonDirective,\n //typographical emphasis\n EditorBoldButtonDirective,\n EditorItalicButtonDirective,\n EditorUnderlineButtonDirective,\n EditorStrikethroughButtonDirective,\n EditorSubscriptButtonDirective,\n EditorSuperscriptButtonDirective,\n //color\n EditorForeColorDirective,\n EditorBackColorDirective,\n //clear format\n EditorCleanFormattingButtonDirective,\n //table\n EditorAddColumnBeforeButtonDirective,\n EditorAddColumnAfterButtonDirective,\n EditorAddRowBeforeButtonDirective,\n EditorAddRowAfterButtonDirective,\n EditorDeleteColumnButtonDirective,\n EditorDeleteRowButtonDirective,\n EditorDeleteTableButtonDirective,\n EditorMergeCellsButtonDirective,\n EditorSplitCellButtonDirective,\n // EditorTableWizardButtonDirective,\n //localization\n CustomMessagesComponent,\n LocalizedMessagesDirective,\n // dropdown tools\n DropDownToolDirective,\n // print\n EditorPrintDirective,\n // select all\n EditorSelectAllButtonDirective,\n // blockquote\n EditorBlockquoteDirective, EditorFontSizeComponent,\n EditorFontFamilyComponent,\n EditorFormatComponent,\n EditorColorPickerComponent,\n EditorInsertTableButtonComponent, ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule, PopupTableGridComponent,\n FormatDropDownListComponent,\n FontFamilyDropDownListComponent,\n FontSizeDropDownListComponent] });\nEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorModule, imports: [[\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n CheckBoxModule,\n ToolBarModule,\n TextBoxModule\n ], ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n EditorComponent,\n COMPONENT_DIRECTIVES,\n TOOLBAR_TOOLS,\n TOOLBAR_DIALOGS,\n INTERNAL_COMPONENTS\n ],\n entryComponents: [\n TOOLBAR_DIALOGS\n ],\n exports: [\n EditorComponent,\n COMPONENT_DIRECTIVES,\n TOOLBAR_TOOLS,\n ToolBarModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n //needed for unit tests\n INTERNAL_COMPONENTS\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n //Kendo UI Angular Modules\n ButtonModule,\n ColorPickerModule,\n DialogModule,\n DropDownsModule,\n NumericTextBoxModule,\n CheckBoxModule,\n ToolBarModule,\n TextBoxModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, DropDownToolDirective, EditorAddColumnAfterButtonDirective, EditorAddColumnBeforeButtonDirective, EditorAddRowAfterButtonDirective, EditorAddRowBeforeButtonDirective, EditorAlignCenterButtonDirective, EditorAlignJustifyButtonDirective, EditorAlignLeftButtonDirective, EditorAlignRightButtonDirective, EditorBackColorDirective, EditorBlockquoteDirective, EditorBoldButtonDirective, EditorCleanFormattingButtonDirective, EditorColorPickerComponent, EditorComponent, EditorCreateLinkButtonDirective, EditorDeleteColumnButtonDirective, EditorDeleteRowButtonDirective, EditorDeleteTableButtonDirective, EditorFontFamilyComponent, EditorFontSizeComponent, EditorForeColorDirective, EditorFormatComponent, EditorIndentButtonDirective, EditorInsertFileButtonDirective, EditorInsertImageButtonDirective, EditorInsertOrderedListButtonDirective, EditorInsertTableButtonComponent, EditorInsertUnorderedListButtonDirective, EditorItalicButtonDirective, EditorMergeCellsButtonDirective, EditorModule, EditorOutdentButtonDirective, EditorPasteEvent, EditorPrintDirective, EditorRedoButtonDirective, EditorSelectAllButtonDirective, EditorSplitCellButtonDirective, EditorStrikethroughButtonDirective, EditorSubscriptButtonDirective, EditorSuperscriptButtonDirective, EditorUnderlineButtonDirective, EditorUndoButtonDirective, EditorUnlinkButtonDirective, EditorViewSourceButtonDirective, FontFamilyDropDownListComponent, FontSizeDropDownListComponent, FormatDropDownListComponent, LocalizedMessagesDirective, PopupTableGridComponent, PreventableEvent, getSelectionText, schema };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Component, Input, ContentChildren, QueryList, Directive, Optional, forwardRef, SkipSelf, Host, ContentChild, NgModule } from '@angular/core';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { IntlService, ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nexport * from '@progress/kendo-ooxml';\nimport { toString } from '@progress/kendo-intl';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\n\nconst compileTemplate = (templateRef, context, updateContext) => {\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = (data) => {\n updateContext(context, data);\n embeddedView.detectChanges();\n return embeddedView.rootNodes.reduce((content, rootNode) => {\n return content + rootNode.textContent;\n }, '').trim();\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\nconst updateGroupHeaderContext = (context, data) => {\n context.$implicit = context.group = data;\n context.field = data.field;\n context.value = data.value;\n context.aggregates = data.aggregates;\n};\nconst updateGroupFooterContext = (context, data) => {\n context.group = data.group;\n context.$implicit = context.aggregates = data;\n};\nconst updateFooterContext = (context, data) => {\n context.aggregates = data.aggregates;\n};\n/**\n * @hidden\n */\nconst toExporterColumns = (sourceColumns) => {\n const exporterColumns = [];\n let columnIndex = 0;\n const addColumns = (columns, result, level) => {\n columns.forEach((column) => {\n if (column.level === level) {\n const exporterColumn = new ExporterColumn(column, columnIndex);\n result.push(exporterColumn);\n if (column.children && column.children.some(c => c !== column)) {\n const children = exporterColumn.columns = [];\n addColumns(column.children, children, level + 1);\n }\n else {\n columnIndex++;\n }\n }\n });\n };\n addColumns(sourceColumns, exporterColumns, 0);\n return exporterColumns;\n};\n/**\n * @hidden\n */\nconst destroyColumns = (columns) => {\n if (columns) {\n columns.forEach(column => {\n column.destroy();\n });\n }\n};\n/**\n * @hidden\n */\nclass ExporterColumn {\n constructor(column, columnIndex) {\n this.title = column.title;\n this.field = column.field;\n this.hidden = column.hidden;\n this.locked = column.locked;\n this.width = column.width;\n this.headerCellOptions = column.headerCellOptions;\n this.cellOptions = column.cellOptions;\n this.groupHeaderCellOptions = column.groupHeaderCellOptions;\n this.groupFooterCellOptions = column.groupFooterCellOptions;\n this.footerCellOptions = column.footerCellOptions;\n if (column.footerTemplate) {\n this.footerTemplate = compileTemplate(column.footerTemplate.templateRef, {\n $implicit: column,\n column: column,\n columnIndex: columnIndex\n }, updateFooterContext);\n }\n if (column.groupFooterTemplate) {\n this.groupFooterTemplate = compileTemplate(column.groupFooterTemplate.templateRef, {\n column: column,\n field: column.field\n }, updateGroupFooterContext);\n }\n if (column.groupHeaderTemplate) {\n this.groupHeaderTemplate = compileTemplate(column.groupHeaderTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n if (column.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate = compileTemplate(column.groupHeaderColumnTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n }\n destroy() {\n if (this.footerTemplate) {\n this.footerTemplate.destroy();\n }\n if (this.groupFooterTemplate) {\n this.groupFooterTemplate.destroy();\n }\n if (this.groupHeaderTemplate) {\n this.groupHeaderTemplate.destroy();\n }\n if (this.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate.destroy();\n }\n destroyColumns(this.columns);\n }\n}\n\nIntlService.register({ toString });\n/**\n *\n * @hidden\n */\nconst workbookOptions = (options) => {\n const columns = toExporterColumns(options.columns);\n const exporter = new ExcelExporter({\n columns: columns,\n data: options.data,\n filterable: options.filterable,\n groups: options.group,\n paddingCellOptions: options.paddingCellOptions,\n headerPaddingCellOptions: options.headerPaddingCellOptions,\n collapsible: options.collapsible,\n hierarchy: options.hierarchy,\n aggregates: options.aggregates\n });\n const result = exporter.workbook();\n result.creator = options.creator;\n result.date = options.date;\n result.rtl = options.rtl;\n destroyColumns(columns);\n return result;\n};\n/**\n * @hidden\n */\nconst toDataURL = (options) => {\n const workbook = new Workbook(options);\n return workbook.toDataURL();\n};\n/**\n * @hidden\n */\nconst isWorkbookOptions = (value) => {\n return value && value.sheets;\n};\n\n/**\n * @hidden\n */\nclass ColumnBase {\n constructor(parent) {\n this.parent = parent;\n }\n /**\n * @hidden\n */\n get level() {\n return this.parent ? this.parent.level + 1 : 0;\n }\n}\nColumnBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }], target: i0.ɵɵFactoryTarget.Component });\nColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnBase, selector: \"ng-component\", inputs: { title: \"title\", width: \"width\", locked: \"locked\", hidden: \"hidden\", headerCellOptions: \"headerCellOptions\" }, queries: [{ propertyName: \"children\", predicate: ColumnBase }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase }]; }, propDecorators: { title: [{\n type: Input\n }], width: [{\n type: Input\n }], locked: [{\n type: Input\n }], hidden: [{\n type: Input\n }], headerCellOptions: [{\n type: Input\n }], children: [{\n type: ContentChildren,\n args: [ColumnBase]\n }] } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-excel-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654678008,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n// eslint-disable max-line-length\n/**\n * Represents the [Kendo UI Excel Export component for Angular]({% slug overview_excelexport %}).\n * Configures the settings for the Excel export of the Kendo UI Grid.\n */\nclass ExcelExportComponent {\n constructor(localization, zone) {\n this.localization = localization;\n this.zone = zone;\n /**\n * Specifies the name of the file that is exported to Excel.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n validatePackage(packageMetadata);\n this.saveFile = this.saveFile.bind(this);\n }\n /**\n * Saves the data to Excel.\n *\n * @param exportData - An optional parameter. Can be the data that will be exported or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n */\n save(exportData) {\n this.toDataURL(exportData).then(this.saveFile);\n }\n /**\n * Based on the specified columns and data, returns\n * [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %})\n * ([see example]({% slug customrowsandcells_excelexport %})).\n *\n * @param exportData - The optional data to be exported.\n * @returns {WorkbookOptions} - The workbook options.\n */\n workbookOptions(exportData) {\n const currentData = this.getExportData(exportData);\n const options = workbookOptions({\n columns: this.columns,\n data: currentData.data,\n group: currentData.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n rtl: this.localization.rtl,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n collapsible: this.collapsible\n });\n return options;\n }\n /**\n * Returns a promise which will be resolved with the file data URI\n * ([see example]({% slug filesaving_excelexport %})).\n *\n * @param exportData - The optional data or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}) that will be used to generate the data URI.\n * @returns {Promise} - The promise that will be resolved by the file data URI.\n */\n toDataURL(exportData) {\n const options = isWorkbookOptions(exportData) ?\n exportData :\n this.workbookOptions(exportData);\n return this.zone.runOutsideAngular(() => toDataURL(options));\n }\n getExportData(exportData) {\n let result;\n if (exportData) {\n if (Array.isArray(exportData)) {\n result = {\n data: exportData\n };\n }\n else {\n result = exportData;\n }\n }\n else {\n result = {\n data: this.data,\n group: this.group\n };\n }\n return result;\n }\n saveFile(dataURL) {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n }\n}\nExcelExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nExcelExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelExportComponent, selector: \"kendo-excelexport\", inputs: { fileName: \"fileName\", filterable: \"filterable\", collapsible: \"collapsible\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", data: \"data\", group: \"group\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\" }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }\n ], queries: [{ propertyName: \"columns\", predicate: ColumnBase, descendants: true }], exportAs: [\"kendoExcelExport\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoExcelExport',\n selector: 'kendo-excelexport',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }\n ],\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { fileName: [{\n type: Input\n }], filterable: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], data: [{\n type: Input\n }], group: [{\n type: Input\n }], paddingCellOptions: [{\n type: Input\n }], headerPaddingCellOptions: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase, { descendants: true }]\n }] } });\n\n/**\n * Represents the group header cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-template)).\n * Enables you to customize the content of the group header item.\n */\nclass GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderTemplateDirective, selector: \"[kendoExcelExportGroupHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group header column template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-column-template)).\n */\nclass GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderColumnTemplateDirective, selector: \"[kendoExcelExportGroupHeaderColumnTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderColumnTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-footer-template)).\n * Enables you to customize the group footer cell of the column.\n */\nclass GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupFooterTemplateDirective, selector: \"[kendoExcelExportGroupFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-footer-template)).\n * Enables you to customize the footer cell of the column.\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoExcelExportFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the columns of the Kendo UI Excel Export component for Angular.\n */\nclass ColumnComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n }\n}\nColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnComponent, selector: \"kendo-excelexport-column\", inputs: { field: \"field\", cellOptions: \"cellOptions\", groupHeaderCellOptions: \"groupHeaderCellOptions\", groupFooterCellOptions: \"groupFooterCellOptions\", footerCellOptions: \"footerCellOptions\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ], queries: [{ propertyName: \"groupHeaderTemplate\", first: true, predicate: GroupHeaderTemplateDirective, descendants: true }, { propertyName: \"groupHeaderColumnTemplate\", first: true, predicate: GroupHeaderColumnTemplateDirective, descendants: true }, { propertyName: \"groupFooterTemplate\", first: true, predicate: GroupFooterTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ],\n selector: 'kendo-excelexport-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, propDecorators: { field: [{\n type: Input\n }], cellOptions: [{\n type: Input\n }], groupHeaderCellOptions: [{\n type: Input\n }], groupFooterCellOptions: [{\n type: Input\n }], footerCellOptions: [{\n type: Input\n }], groupHeaderTemplate: [{\n type: ContentChild,\n args: [GroupHeaderTemplateDirective, { static: false }]\n }], groupHeaderColumnTemplate: [{\n type: ContentChild,\n args: [GroupHeaderColumnTemplateDirective, { static: false }]\n }], groupFooterTemplate: [{\n type: ContentChild,\n args: [GroupFooterTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the column group component of the Kendo UI Excel Export component.\n */\nclass ColumnGroupComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n }\n}\nColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnGroupComponent, selector: \"kendo-excelexport-column-group\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ],\n selector: 'kendo-excelexport-column-group',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; } });\n\nconst declarations = [\n ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Excel Export component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ExcelExportModule module\n * import { ExcelExportModule } from '@progress/kendo-angular-excel-export';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ExcelExportModule], // import ExcelExportModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ExcelExportModule {\n}\nExcelExportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExcelExportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, declarations: [ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective], exports: [ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective] });\nExcelExportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ColumnBase, ColumnComponent, ColumnGroupComponent, ExcelExportComponent, ExcelExportModule, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderTemplateDirective, isWorkbookOptions, toDataURL, workbookOptions };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, NgModule, Directive, Input, ViewChild, HostBinding, Optional, Component, ChangeDetectionStrategy, ContentChild, ContentChildren } from '@angular/core';\nimport * as i5 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4 from '@progress/kendo-angular-common';\nimport { ResizeSensorModule, ResizeSensorComponent } from '@progress/kendo-angular-common';\nexport { ResizeSensorComponent } from '@progress/kendo-angular-common';\nimport * as i3 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { exportImage, exportSVG, drawDOM } from '@progress/kendo-drawing';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i2 from '@progress/kendo-angular-intl';\nimport { ArcGauge, LinearGauge, RadialGauge, CircularGauge } from '@progress/kendo-charts';\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\nfunction diffOptions(original, current) {\n if (Object.keys(original).length !== Object.keys(current).length) {\n return true;\n }\n for (let field in original) {\n if (field !== 'value' && original.hasOwnProperty(field)) {\n const originalValue = original[field];\n const currentValue = current[field];\n const diff = isObject(originalValue) && isObject(currentValue) ?\n diffOptions(originalValue, currentValue) : originalValue !== currentValue;\n if (diff) {\n return true;\n }\n }\n }\n}\nfunction diffPointerOptions(original, current) {\n if (!original || !current) {\n return true;\n }\n original = [].concat(original);\n current = [].concat(current);\n if (original.length !== current.length) {\n return true;\n }\n for (let idx = 0; idx < original.length; idx++) {\n if (diffOptions(original[idx], current[idx])) {\n return true;\n }\n }\n}\n/**\n * @hidden\n */\nclass ConfigurationService {\n constructor() {\n this.options = {};\n }\n copyChanges(prefix, changes) {\n for (let propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n const value = changes[propertyName].currentValue;\n const optionName = (prefix ? prefix + '.' : '') + propertyName;\n this.set(optionName, value);\n }\n }\n read() {\n this.hasChanges = false;\n this.valueChange = false;\n return this.options;\n }\n readValues() {\n this.valueChange = false;\n const pointers = [].concat(this.options.pointer);\n return pointers.map((pointer) => pointer.value);\n }\n readValue() {\n this.valueChange = false;\n return this.options.value;\n }\n set(field, value) {\n const { key, options } = this.optionContext(field);\n if (!this.hasChanges && (key === 'value' || (key === 'pointer' && !diffPointerOptions(this.options.pointer, value)))) {\n this.valueChange = true;\n }\n else {\n this.hasChanges = true;\n this.valueChange = false;\n }\n options[key] = value;\n }\n optionContext(field) {\n const parts = field.split('.');\n let options = this.options;\n let key = parts.shift();\n while (parts.length > 0) {\n options = options[key] = options[key] || {};\n key = parts.shift();\n }\n return { key: key, options: options };\n }\n}\nConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass CollectionChangesService {\n}\nCollectionChangesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCollectionChangesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionChangesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionChangesService, decorators: [{\n type: Injectable\n }] });\n\nconst template = `\n
    \n
    \n
    \n`;\n/**\n * @hidden\n */\nclass ThemeService {\n read() {\n if (!this.options) {\n this.load();\n }\n return this.options;\n }\n load() {\n if (typeof document === 'undefined') {\n this.options = {};\n return;\n }\n const container = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template;\n document.body.appendChild(container);\n try {\n const pointerColor = this.getColor(container, 'gauge-pointer');\n const rangePlaceholder = this.getColor(container, 'gauge-track');\n const textColor = this.getColor(container, 'normal-text-color');\n this.options = {\n pointer: {\n color: pointerColor\n },\n scale: {\n labels: {\n color: textColor\n },\n rangePlaceholderColor: rangePlaceholder,\n minorTicks: {\n color: textColor\n },\n majorTicks: {\n color: textColor\n },\n line: {\n color: textColor\n }\n }\n };\n }\n finally {\n document.body.removeChild(container);\n }\n }\n getColor(container, varName) {\n return window.getComputedStyle(container.querySelector(`.k-var--${varName}`)).backgroundColor;\n }\n}\nThemeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nThemeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, exports: [ResizeSensorModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, providers: [\n ThemeService\n ], imports: [ResizeSensorModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ResizeSensorModule],\n providers: [\n ThemeService\n ]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass CollectionComponent {\n constructor(key, configurationService, collectionChangesService) {\n this.key = key;\n this.configurationService = configurationService;\n this.collectionChangesService = collectionChangesService;\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.configurationService.set(this.key, []);\n }\n ngAfterContentInit() {\n this.subscription = this.children.changes.subscribe(() => this.collectionChangesService.hasChanges = true);\n }\n ngAfterContentChecked() {\n if (this.collectionChangesService.hasChanges) {\n this.configurationService.set(this.key, this.readItems());\n this.collectionChangesService.hasChanges = false;\n }\n }\n readItems() {\n return this.children.map(child => Object.assign({}, child.configurationService.read()));\n }\n}\nCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nCollectionComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionComponent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }, { type: CollectionChangesService }]; } });\n\n/**\n * @hidden\n */\nclass CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n this.configurationService = configurationService;\n this.collectionChangesService = collectionChangesService;\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges('', changes);\n this.collectionChangesService.hasChanges = true;\n }\n}\nCollectionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nCollectionItemComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionItemComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-gauges',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441382,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst inDocument = (element) => {\n let node = element;\n while (node && node !== document.body) {\n node = node.parentNode;\n }\n return Boolean(node);\n};\n/**\n * @hidden\n */\nclass GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.intlService = intlService;\n this.localizationService = localizationService;\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n /**\n * The maximum number of times the Gauge resizes per second.\n * Defaults to `10`. To disable the automatic resizing, set `resizeRateLimit` to `0`.\n */\n this.resizeRateLimit = 10;\n this.className = true;\n this.theme = null;\n this.rtl = false;\n validatePackage(packageMetadata);\n }\n ngOnInit() {\n this.setDirection();\n this.subscriptions = this.intlService.changes.subscribe(this.intlChange.bind(this));\n this.subscriptions.add(this.localizationService.changes.subscribe(this.rtlChange.bind(this)));\n }\n ngAfterViewChecked() {\n if (typeof document === 'undefined') {\n return;\n }\n let updateMethod;\n if (!this.instance) {\n updateMethod = this.init;\n }\n else if (this.configurationService.hasChanges) {\n updateMethod = this.updateOptions;\n }\n else if (this.configurationService.valueChange) {\n updateMethod = this.setValues;\n }\n if (updateMethod) {\n clearTimeout(this.redrawTimeout);\n if (!this.instance && !inDocument(this.element.nativeElement)) { // required in case the gauge is initialized by ng-content outside of the DOM\n this.defer(() => {\n this.updateCall(updateMethod);\n });\n }\n else {\n this.updateCall(updateMethod);\n }\n }\n }\n updateCall(updateMethod) {\n this.updateDirection();\n updateMethod.call(this);\n this.updateSize();\n }\n updateOptions() {\n this.instance.setOptions(this.configurationService.read());\n }\n setValues() {\n this.instance.allValues(this.configurationService.readValues());\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges('', changes);\n }\n ngOnDestroy() {\n if (this.instance) {\n this.instance.destroy();\n }\n this.subscriptions.unsubscribe();\n clearTimeout(this.redrawTimeout);\n }\n /**\n * Exports the Gauge as an image. The export operation is asynchronous and returns a promise.\n *\n * @param {ImageExportOptions} options - The parameters for the exported image.\n * @returns {Promise} - A promise that will be resolved with a PNG image that is encoded as a Data URI.\n */\n exportImage(options = {}) {\n return this.exportVisual().then((visual) => {\n return exportImage(visual, options);\n });\n }\n /**\n * Exports the Gauge as an SVG document. The export operation is asynchronous and returns a promise.\n *\n * @param {SVGExportOptions} options - The parameters for the exported file.\n * @returns {Promise} - A promise that will be resolved with an SVG document that is encoded as a Data URI.\n */\n exportSVG(options = {}) {\n return this.exportVisual().then((visual) => {\n return exportSVG(visual, options);\n });\n }\n /**\n * Exports the Gauge as a Drawing `Scene`.\n *\n * @returns {Promise} - A promise that will be resolved with the export visual.\n */\n exportVisual() {\n return Promise.resolve(this.instance.exportVisual());\n }\n /**\n * @hidden\n */\n onResize(_event) {\n if (this.autoResize) {\n this.resize();\n }\n }\n /**\n * Detects the size of the container and redraws the Gauge.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n if (this.instance) {\n this.instance.resize();\n }\n }\n init() {\n if (!this.surfaceElement) {\n return;\n }\n this.createInstance(this.surfaceElement.nativeElement, this.configurationService.read(), this.themeService.read(), {\n intlService: this.intlService,\n rtl: this.rtl\n });\n }\n get autoResize() {\n return this.resizeRateLimit > 0;\n }\n updateSize() {\n this.resizeSensor.acceptSize();\n }\n intlChange() {\n if (this.instance) {\n this.deferredRedraw();\n }\n }\n rtlChange() {\n if (this.instance && this.rtl !== this.isRTL) {\n this.deferredRedraw();\n }\n }\n deferredRedraw() {\n this.defer(() => {\n this.updateDirection();\n this.instance.noTransitionsRedraw();\n });\n }\n defer(callback) {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.redrawTimeout);\n this.redrawTimeout = setTimeout(callback, 0);\n });\n }\n updateDirection() {\n const current = this.isRTL;\n if (this.rtl !== current) {\n this.setDirection();\n if (this.instance) {\n this.instance.setDirection(current);\n }\n }\n }\n setDirection() {\n this.rtl = this.isRTL;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n get isRTL() {\n return Boolean(this.localizationService.rtl);\n }\n}\nGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugeComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i2.IntlService }, { token: i3.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nGaugeComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GaugeComponent, inputs: { gaugeArea: \"gaugeArea\", renderAs: \"renderAs\", resizeRateLimit: \"resizeRateLimit\", scale: \"scale\", transitions: \"transitions\" }, host: { properties: { \"class.k-gauge\": \"this.className\" } }, viewQueries: [{ propertyName: \"surfaceElement\", first: true, predicate: [\"surface\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugeComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i2.IntlService }, { type: i3.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { gaugeArea: [{\n type: Input\n }], renderAs: [{\n type: Input\n }], resizeRateLimit: [{\n type: Input\n }], scale: [{\n type: Input\n }], transitions: [{\n type: Input\n }], surfaceElement: [{\n type: ViewChild,\n args: ['surface', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }], className: [{\n type: HostBinding,\n args: ['class.k-gauge']\n }] } });\n\n/**\n * @hidden\n */\nclass SettingsComponent {\n constructor(key, configurationService) {\n this.key = key;\n this.configurationService = configurationService;\n }\n ngOnChanges(changes) {\n this.configurationService.copyChanges(this.key, changes);\n }\n ngOnDestroy() {\n this.configurationService.set(this.key, null);\n }\n}\nSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nSettingsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SettingsComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }]; } });\n\n/**\n * @hidden\n */\nclass GaugeAreaComponent extends SettingsComponent {\n}\nGaugeAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugeAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nGaugeAreaComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GaugeAreaComponent, inputs: { background: \"background\", border: \"border\", height: \"height\", margin: \"margin\", width: \"width\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugeAreaComponent, decorators: [{\n type: Directive\n }], propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], width: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LabelsComponent extends SettingsComponent {\n}\nLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelsComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nLabelsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelsComponent, inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", content: \"content\", visible: \"visible\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelsComponent, decorators: [{\n type: Directive\n }], propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], content: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass RangeComponent extends CollectionItemComponent {\n}\nRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRangeComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeComponent, inputs: { from: \"from\", to: \"to\", opacity: \"opacity\", color: \"color\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeComponent, decorators: [{\n type: Directive\n }], propDecorators: { from: [{\n type: Input\n }], to: [{\n type: Input\n }], opacity: [{\n type: Input\n }], color: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ScaleComponent extends SettingsComponent {\n}\nScaleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScaleComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nScaleComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ScaleComponent, inputs: { labels: \"labels\", majorTicks: \"majorTicks\", minorTicks: \"minorTicks\", min: \"min\", max: \"max\", minorUnit: \"minorUnit\", majorUnit: \"majorUnit\", reverse: \"reverse\", rangeSize: \"rangeSize\", rangePlaceholderColor: \"rangePlaceholderColor\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScaleComponent, decorators: [{\n type: Directive\n }], propDecorators: { labels: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], reverse: [{\n type: Input\n }], rangeSize: [{\n type: Input\n }], rangePlaceholderColor: [{\n type: Input\n }] } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component which will be used for the center template\n * ([more information and example]({% slug centertemplate_arcgauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n *\n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass ArcCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nArcCenterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcCenterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nArcCenterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ArcCenterTemplateDirective, selector: \"[kendoArcGaugeCenterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcCenterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoArcGaugeCenterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the [Kendo UI ArcGauge component for Angular]({% slug overview_arcgauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass ArcGaugeComponent extends GaugeComponent {\n constructor(changeDetector, configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n this.changeDetector = changeDetector;\n this.className = true;\n this.centerTemplateContext = {};\n }\n ngOnInit() {\n super.ngOnInit();\n if (this.element) {\n this.renderer.setStyle(this.element.nativeElement, 'position', 'relative');\n }\n }\n ngAfterViewChecked() {\n super.ngAfterViewChecked();\n if (this.labelElement && !this.centerTemplate) {\n this.changeDetector.detectChanges();\n }\n else if (!this.labelElement && this.centerTemplate) {\n this.updateCenterTemplate();\n }\n }\n /**\n * Exports the gauge as a Drawing `Scene`.\n *\n * @returns {Promise} - A promise that will be resolved with the export visual.\n */\n exportVisual() {\n return drawDOM(this.element.nativeElement);\n }\n /**\n * Detects the size of the container and redraws the Gauge.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n super.resize();\n this.updateCenterTemplate();\n }\n createInstance(element, options, theme, context) {\n this.instance = new ArcGauge(element, options, theme, context);\n this.updateElements();\n }\n updateOptions() {\n super.updateOptions();\n this.updateElements();\n }\n setValues() {\n const value = this.configurationService.readValue();\n this.instance.value(value);\n this.updateCenterTemplate();\n }\n updateElements() {\n this.resizeSensor.acceptSize();\n this.updateCenterTemplate();\n }\n updateCenterTemplate() {\n if (!this.instance || !this.centerTemplate) {\n return;\n }\n this.centerTemplateContext.value = this.instance.value();\n this.centerTemplateContext.color = this.instance.currentColor();\n this.changeDetector.detectChanges();\n this.positionLabel();\n }\n positionLabel() {\n if (!this.labelElement) {\n return;\n }\n const element = this.labelElement.nativeElement;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n const position = this.instance.centerLabelPosition(width, height);\n element.style.top = `${position.top}px`;\n element.style.left = `${position.left}px`;\n }\n //eslint-disable-next-line no-empty\n updateSize() {\n }\n}\nArcGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ConfigurationService }, { token: ThemeService }, { token: i2.IntlService }, { token: i3.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nArcGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ArcGaugeComponent, selector: \"kendo-arcgauge\", inputs: { value: \"value\", color: \"color\", colors: \"colors\", opacity: \"opacity\", scale: \"scale\" }, host: { properties: { \"class.k-arcgauge\": \"this.className\" } }, providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.arcgauge'\n }\n ], queries: [{ propertyName: \"centerTemplate\", first: true, predicate: ArcCenterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"labelElement\", first: true, predicate: [\"label\"], descendants: true }], exportAs: [\"kendoArcGauge\"], usesInheritance: true, ngImport: i0, template: `\n
    \n
    \n \n
    \n \n `, isInline: true, components: [{ type: i4.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoArcGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.arcgauge'\n }\n ],\n selector: 'kendo-arcgauge',\n template: `\n
    \n
    \n \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: ConfigurationService }, { type: ThemeService }, { type: i2.IntlService }, { type: i3.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { value: [{\n type: Input\n }], color: [{\n type: Input\n }], colors: [{\n type: Input\n }], opacity: [{\n type: Input\n }], scale: [{\n type: Input\n }], centerTemplate: [{\n type: ContentChild,\n args: [ArcCenterTemplateDirective, { static: false }]\n }], labelElement: [{\n type: ViewChild,\n args: [\"label\", { static: false }]\n }], className: [{\n type: HostBinding,\n args: ['class.k-arcgauge']\n }] } });\n\n/**\n * The configuration options of the ArcGauge area.\n * Represents the entire visible area of the ArcGauge.\n */\nclass ArcGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nArcGaugeAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nArcGaugeAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ArcGaugeAreaComponent, selector: \"kendo-arcgauge-area\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeAreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options for the scale of the ArcGauge\n * ([see example]({% slug scaleoptions_arcgauge %})).\n */\nclass ArcScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n}\nArcScaleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcScaleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nArcScaleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ArcScaleComponent, selector: \"kendo-arcgauge-scale\", inputs: { labels: \"labels\", rangeDistance: \"rangeDistance\", rangeLineCap: \"rangeLineCap\", startAngle: \"startAngle\", endAngle: \"endAngle\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcScaleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-scale',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { labels: [{\n type: Input\n }], rangeDistance: [{\n type: Input\n }], rangeLineCap: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for the scale labels of the RadialGauge.\n */\nclass RadialLabelsComponent extends LabelsComponent {\n constructor(configurationService) {\n super('scale.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nRadialLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nRadialLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialLabelsComponent, selector: \"kendo-radialgauge-scale-labels\", inputs: { position: \"position\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialLabelsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-scale-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { position: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for the scale labels of the ArcGauge.\n */\nclass ArcLabelsComponent extends RadialLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n configurationService.set(`${this.key}.visible`, true);\n }\n}\nArcLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nArcLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ArcLabelsComponent, selector: \"kendo-arcgauge-scale-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcLabelsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-arcgauge-scale-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options for an ArcGauge color item.\n */\nclass ColorComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n}\nColorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nColorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorComponent, selector: \"kendo-arcgauge-color\", inputs: { color: \"color\", opacity: \"opacity\", from: \"from\", to: \"to\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-arcgauge-color',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more ArcGauge colors\n * ([more information and example]({% slug colorranges_arcgauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n *\n * public colors: any[] = [{\n * to: 25,\n * color: '#0058e9'\n * }, {\n * from: 25,\n * to: 50,\n * color: '#37b400'\n * }, {\n * from: 50,\n * to: 75,\n * color: '#ffc000'\n * }, {\n * from: 75,\n * color: '#f31700'\n * }];\n * }\n *\n * ```\n */\nclass ColorsComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('colors', configurationService, collectionChangesService);\n }\n}\nColorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorsComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nColorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorsComponent, selector: \"kendo-arcgauge-colors\", providers: [CollectionChangesService], queries: [{ propertyName: \"children\", predicate: ColorComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorsComponent, decorators: [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-arcgauge-colors',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [ColorComponent]\n }] } });\n\nconst DIRECTIVES$3 = [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent,\n ColorsComponent, ColorComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the ArcGauge component and its directives.\n * Imports the `ArcGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the ArcGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ArcGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ArcGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass ArcGaugeModule {\n}\nArcGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nArcGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeModule, declarations: [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent,\n ColorsComponent, ColorComponent], imports: [SharedModule, CommonModule], exports: [ArcGaugeComponent, ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcScaleComponent, ArcLabelsComponent,\n ColorsComponent, ColorComponent] });\nArcGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeModule, imports: [[SharedModule, CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ArcGaugeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$3],\n exports: [DIRECTIVES$3],\n imports: [SharedModule, CommonModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI LinearGauge component for Angular]({% slug overview_lineargauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass LinearGaugeComponent extends GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n }\n createInstance(element, options, theme, context) {\n this.instance = new LinearGauge(element, options, theme, context);\n }\n}\nLinearGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i2.IntlService }, { token: i3.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nLinearGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearGaugeComponent, selector: \"kendo-lineargauge\", inputs: { pointer: \"pointer\", scale: \"scale\" }, providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.lineargauge'\n }\n ], exportAs: [\"kendoLinearGauge\"], usesInheritance: true, ngImport: i0, template: `\n
    \n \n `, isInline: true, components: [{ type: i4.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoLinearGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.lineargauge'\n }\n ],\n selector: 'kendo-lineargauge',\n template: `\n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i2.IntlService }, { type: i3.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { pointer: [{\n type: Input\n }], scale: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for the LinearGauge area.\n * Represents the entire visible area of the LinearGauge.\n */\nclass LinearGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nLinearGaugeAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLinearGaugeAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearGaugeAreaComponent, selector: \"kendo-lineargauge-area\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeAreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options for the scale of the LinearGauge\n * ([see example]({% slug scaleoptions_lineargauge %})).\n */\nclass LinearScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n}\nLinearScaleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearScaleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLinearScaleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearScaleComponent, selector: \"kendo-lineargauge-scale\", inputs: { line: \"line\", ranges: \"ranges\", mirror: \"mirror\", vertical: \"vertical\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearScaleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-scale',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { line: [{\n type: Input\n }], ranges: [{\n type: Input\n }], mirror: [{\n type: Input\n }], vertical: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for the scale labels of the LinearGauge.\n */\nclass LinearLabelsComponent extends LabelsComponent {\n constructor(configurationService) {\n super('scale.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nLinearLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLinearLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearLabelsComponent, selector: \"kendo-lineargauge-scale-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearLabelsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-lineargauge-scale-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options for a pointer item of a LinearGauge.\n */\nclass LinearPointerComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n}\nLinearPointerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearPointerComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nLinearPointerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearPointerComponent, selector: \"kendo-lineargauge-pointer\", inputs: { border: \"border\", color: \"color\", margin: \"margin\", opacity: \"opacity\", shape: \"shape\", size: \"size\", value: \"value\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearPointerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-lineargauge-pointer',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { border: [{\n type: Input\n }], color: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], shape: [{\n type: Input\n }], size: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more LinearGauge pointers\n * ([more information]({% slug multiplepointers_lineargauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public pointers: any[] = [{\n * value: 10,\n * color: '#ff4500'\n * }, {\n * value: 12,\n * color: '#28b4c8'\n * }, {\n * value: 20,\n * color: '#8b0000'\n * }];\n * }\n *\n * ```\n */\nclass LinearPointersComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('pointer', configurationService, collectionChangesService);\n }\n}\nLinearPointersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearPointersComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nLinearPointersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearPointersComponent, selector: \"kendo-lineargauge-pointers\", providers: [CollectionChangesService], queries: [{ propertyName: \"children\", predicate: LinearPointerComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearPointersComponent, decorators: [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-lineargauge-pointers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [LinearPointerComponent]\n }] } });\n\n/**\n * The configuration options for a scale range item of a LinearGauge.\n */\nclass LinearRangeComponent extends RangeComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n}\nLinearRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearRangeComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nLinearRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearRangeComponent, selector: \"kendo-lineargauge-scale-range\", providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearRangeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-lineargauge-scale-range',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; } });\n\n/**\n * A collection of one or more LinearGauge scale ranges\n * ([more information and example]({% slug scaleranghes_lineargauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public ranges: any[] = [{\n * from: 0,\n * to: 15,\n * color: '#ffd246'\n * }, {\n * from: 15,\n * to: 30,\n * color: '#28b4c8'\n * }, {\n * from: 30,\n * to: 50,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nclass LinearRangesComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('scale.ranges', configurationService, collectionChangesService);\n }\n}\nLinearRangesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearRangesComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nLinearRangesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinearRangesComponent, selector: \"kendo-lineargauge-scale-ranges\", providers: [CollectionChangesService], queries: [{ propertyName: \"children\", predicate: LinearRangeComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearRangesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-lineargauge-scale-ranges',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [LinearRangeComponent]\n }] } });\n\nconst DIRECTIVES$2 = [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent,\n LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the LinearGauge component and its directives.\n * Imports the `LinearGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the LinearGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { LinearGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, LinearGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass LinearGaugeModule {\n}\nLinearGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLinearGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeModule, declarations: [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent,\n LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent], imports: [SharedModule], exports: [LinearGaugeComponent, LinearGaugeAreaComponent, LinearScaleComponent, LinearLabelsComponent,\n LinearPointersComponent, LinearPointerComponent, LinearRangeComponent, LinearRangesComponent] });\nLinearGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinearGaugeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$2],\n exports: [DIRECTIVES$2],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI RadialGauge component for Angular]({% slug overview_radialgauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass RadialGaugeComponent extends GaugeComponent {\n constructor(configurationService, themeService, intlService, localizationService, element, renderer, ngZone) {\n super(configurationService, themeService, intlService, localizationService, element, renderer, ngZone);\n }\n createInstance(element, options, theme, context) {\n this.instance = new RadialGauge(element, options, theme, context);\n }\n}\nRadialGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i2.IntlService }, { token: i3.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nRadialGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialGaugeComponent, selector: \"kendo-radialgauge\", inputs: { pointer: \"pointer\", scale: \"scale\" }, providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.radialgauge'\n }\n ], exportAs: [\"kendoRadialGauge\"], usesInheritance: true, ngImport: i0, template: `\n
    \n \n `, isInline: true, components: [{ type: i4.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoRadialGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.radialgauge'\n }\n ],\n selector: 'kendo-radialgauge',\n template: `\n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i2.IntlService }, { type: i3.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { pointer: [{\n type: Input\n }], scale: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for the RadialGauge area.\n * Represents the entire visible area of the RadialGauge.\n */\nclass RadialGaugeAreaComponent extends GaugeAreaComponent {\n constructor(configurationService) {\n super('gaugeArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nRadialGaugeAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nRadialGaugeAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialGaugeAreaComponent, selector: \"kendo-radialgauge-area\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeAreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options for the scale of the RadialGauge\n * ([more information and example]({% slug scaleoptions_radialgauge %})).\n */\nclass RadialScaleComponent extends ScaleComponent {\n constructor(configurationService) {\n super('scale', configurationService);\n this.configurationService = configurationService;\n }\n}\nRadialScaleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialScaleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nRadialScaleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialScaleComponent, selector: \"kendo-radialgauge-scale\", inputs: { labels: \"labels\", rangeDistance: \"rangeDistance\", ranges: \"ranges\", startAngle: \"startAngle\", endAngle: \"endAngle\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialScaleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-radialgauge-scale',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { labels: [{\n type: Input\n }], rangeDistance: [{\n type: Input\n }], ranges: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }] } });\n\n/**\n * The configuration options for a pointer item of a RadialGauge.\n */\nclass RadialPointerComponent extends CollectionItemComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n}\nRadialPointerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialPointerComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nRadialPointerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialPointerComponent, selector: \"kendo-radialgauge-pointer\", inputs: { cap: \"cap\", color: \"color\", length: \"length\", value: \"value\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialPointerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-radialgauge-pointer',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { cap: [{\n type: Input\n }], color: [{\n type: Input\n }], length: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more RadialGauge pointers\n * ([more information and example]({% slug multiplepointers_radialgauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public pointers: any[] = [{\n * value: 10,\n * color: '#ffd246'\n * }, {\n * value: 20,\n * color: '#28b4c8'\n * }, {\n * value: 30,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nclass RadialPointersComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('pointer', configurationService, collectionChangesService);\n }\n}\nRadialPointersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialPointersComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nRadialPointersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialPointersComponent, selector: \"kendo-radialgauge-pointers\", providers: [CollectionChangesService], queries: [{ propertyName: \"children\", predicate: RadialPointerComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialPointersComponent, decorators: [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-radialgauge-pointers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [RadialPointerComponent]\n }] } });\n\n/**\n * The configuration options for a scale range item of a RadialGauge.\n */\nclass RadialRangeComponent extends RangeComponent {\n constructor(configurationService, collectionChangesService) {\n super(configurationService, collectionChangesService);\n }\n}\nRadialRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialRangeComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nRadialRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialRangeComponent, selector: \"kendo-radialgauge-scale-range\", providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialRangeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [ConfigurationService],\n selector: 'kendo-radialgauge-scale-range',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; } });\n\n/**\n * A collection of one or more RadialGauge scale ranges\n * ([more information and example]({% slug scaleranghes_radialgauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public ranges: any[] = [{\n * from: 0,\n * to: 15,\n * color: '#ffd246'\n * }, {\n * from: 15,\n * to: 30,\n * color: '#28b4c8'\n * }, {\n * from: 30,\n * to: 50,\n * color: '#78d237'\n * }];\n * }\n *\n * ```\n */\nclass RadialRangesComponent extends CollectionComponent {\n constructor(configurationService, collectionChangesService) {\n super('scale.ranges', configurationService, collectionChangesService);\n }\n}\nRadialRangesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialRangesComponent, deps: [{ token: ConfigurationService }, { token: CollectionChangesService }], target: i0.ɵɵFactoryTarget.Component });\nRadialRangesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadialRangesComponent, selector: \"kendo-radialgauge-scale-ranges\", providers: [CollectionChangesService], queries: [{ propertyName: \"children\", predicate: RadialRangeComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialRangesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [CollectionChangesService],\n selector: 'kendo-radialgauge-scale-ranges',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionChangesService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [RadialRangeComponent]\n }] } });\n\nconst DIRECTIVES$1 = [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent,\n RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the RadialGauge component and its directives.\n * Imports the `RadialGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the RadialGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { RadialGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, RadialGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass RadialGaugeModule {\n}\nRadialGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRadialGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeModule, declarations: [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent,\n RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent], imports: [SharedModule], exports: [RadialGaugeComponent, RadialGaugeAreaComponent, RadialScaleComponent, RadialLabelsComponent,\n RadialPointersComponent, RadialPointerComponent, RadialRangeComponent, RadialRangesComponent] });\nRadialGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadialGaugeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES$1],\n exports: [DIRECTIVES$1],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component which will be used for the center template\n * ([more information and example]({% slug centertemplate_circulargauge %})).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n *\n * `\n * })\n * export class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass CircularGaugeCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCircularGaugeCenterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeCenterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCircularGaugeCenterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CircularGaugeCenterTemplateDirective, selector: \"[kendoCircularGaugeCenterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeCenterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCircularGaugeCenterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the [Kendo UI CircularGauge component for Angular]({% slug overview_circulargauge_gauges %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ value }}%\n * \n * \n * `\n * })\n * class AppComponent {\n * public value: number = 10;\n * }\n *\n * ```\n */\nclass CircularGaugeComponent extends ArcGaugeComponent {\n createInstance(element, options, theme, context) {\n this.instance = new CircularGauge(element, options, theme, context);\n this.updateElements();\n }\n}\nCircularGaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nCircularGaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CircularGaugeComponent, selector: \"kendo-circulargauge\", inputs: { scale: \"scale\" }, providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circulargauge'\n }\n ], queries: [{ propertyName: \"centerTemplate\", first: true, predicate: CircularGaugeCenterTemplateDirective, descendants: true }], exportAs: [\"kendoCircularGauge\"], usesInheritance: true, ngImport: i0, template: `\n
    \n
    \n \n
    \n \n `, isInline: true, components: [{ type: i4.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoCircularGauge',\n providers: [\n ConfigurationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circulargauge'\n }\n ],\n selector: 'kendo-circulargauge',\n template: `\n
    \n
    \n \n
    \n \n `\n }]\n }], propDecorators: { scale: [{\n type: Input\n }], centerTemplate: [{\n type: ContentChild,\n args: [CircularGaugeCenterTemplateDirective, { static: false }]\n }] } });\n\n/**\n * The configuration options of the Circular Gauge area.\n * Represents the entire visible area of the Circular Gauge.\n */\nclass CircularGaugeAreaComponent extends ArcGaugeAreaComponent {\n}\nCircularGaugeAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nCircularGaugeAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CircularGaugeAreaComponent, selector: \"kendo-circulargauge-area\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeAreaComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-area',\n template: ''\n }]\n }] });\n\n/**\n * The configuration options for the scale of the Circular Gauge\n * ([see example]({% slug scaleoptions_circulargauge %})).\n */\nclass CircularGaugeScaleComponent extends ArcScaleComponent {\n}\nCircularGaugeScaleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeScaleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nCircularGaugeScaleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CircularGaugeScaleComponent, selector: \"kendo-circulargauge-scale\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeScaleComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-scale',\n template: ''\n }]\n }] });\n\n/**\n * The configuration options for the scale labels of the Circular Gauge.\n */\nclass CircularGaugeLabelsComponent extends ArcLabelsComponent {\n}\nCircularGaugeLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeLabelsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nCircularGaugeLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CircularGaugeLabelsComponent, selector: \"kendo-circulargauge-scale-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeLabelsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-circulargauge-scale-labels',\n template: ''\n }]\n }] });\n\nconst DIRECTIVES = [\n CircularGaugeComponent,\n CircularGaugeCenterTemplateDirective,\n CircularGaugeAreaComponent,\n CircularGaugeScaleComponent,\n CircularGaugeLabelsComponent\n];\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes the CircularGauge component and its directives.\n * Imports the `CircularGaugeModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the CircularGauge component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { CircularGaugeModule } from '@progress/kendo-angular-gauges';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, CircularGaugeModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass CircularGaugeModule {\n}\nCircularGaugeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCircularGaugeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeModule, declarations: [CircularGaugeComponent,\n CircularGaugeCenterTemplateDirective,\n CircularGaugeAreaComponent,\n CircularGaugeScaleComponent,\n CircularGaugeLabelsComponent], imports: [SharedModule, CommonModule], exports: [CircularGaugeComponent,\n CircularGaugeCenterTemplateDirective,\n CircularGaugeAreaComponent,\n CircularGaugeScaleComponent,\n CircularGaugeLabelsComponent] });\nCircularGaugeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeModule, imports: [[SharedModule, CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CircularGaugeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIRECTIVES],\n exports: [DIRECTIVES],\n imports: [SharedModule, CommonModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmodules'] }}) that includes all Gauge components and directives.\n *\n * Imports the `GaugesModule` into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Gauge components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { GaugesModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, GaugesModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass GaugesModule {\n}\nGaugesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGaugesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugesModule, exports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule] });\nGaugesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugesModule, imports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GaugesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ArcGaugeModule, CircularGaugeModule, LinearGaugeModule, RadialGaugeModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArcCenterTemplateDirective, ArcGaugeAreaComponent, ArcGaugeComponent, ArcGaugeModule, ArcLabelsComponent, ArcScaleComponent, CircularGaugeAreaComponent, CircularGaugeCenterTemplateDirective, CircularGaugeComponent, CircularGaugeLabelsComponent, CircularGaugeModule, CircularGaugeScaleComponent, CollectionChangesService, CollectionComponent, CollectionItemComponent, ColorComponent, ColorsComponent, ConfigurationService, GaugeAreaComponent, GaugeComponent, GaugesModule, LabelsComponent, LinearGaugeAreaComponent, LinearGaugeComponent, LinearGaugeModule, LinearLabelsComponent, LinearPointerComponent, LinearPointersComponent, LinearRangeComponent, LinearRangesComponent, LinearScaleComponent, RadialGaugeAreaComponent, RadialGaugeComponent, RadialGaugeModule, RadialLabelsComponent, RadialPointerComponent, RadialPointersComponent, RadialRangeComponent, RadialRangesComponent, RadialScaleComponent, RangeComponent, ScaleComponent, SettingsComponent, ThemeService };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, ChangeDetectionStrategy, ViewChild, HostListener, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';\nimport { switchMap, take, map, filter, takeUntil, switchMapTo, delay, auditTime, distinctUntilChanged, tap, throttleTime, debounceTime, bufferCount } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4$2 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { orderBy, isCompositeFilterDescriptor, process, filterBy } from '@progress/kendo-data-query';\nimport * as i1$2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport * as i1$3 from '@angular/platform-browser';\nimport * as i4$1 from '@progress/kendo-angular-inputs';\nimport { NumericTextBoxComponent, InputsModule, NumericTextBoxModule } from '@progress/kendo-angular-inputs';\nimport * as i1$4 from '@progress/kendo-angular-dropdowns';\nimport { DropDownListComponent, DropDownListModule, AutoCompleteModule, DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport * as i5 from '@progress/kendo-angular-label';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport * as i4$3 from '@progress/kendo-angular-dateinputs';\nimport { DatePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { getter } from '@progress/kendo-common';\nimport * as i1$5 from '@progress/kendo-angular-intl';\nimport { Button } from '@progress/kendo-angular-buttons';\nimport { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ExcelExportModule } from '@progress/kendo-angular-excel-export';\n\nconst EMPTY_REGEX = /^\\s*$/;\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || EMPTY_REGEX.test(value);\n/**\n * @hidden\n */\nconst observe = (list) => merge(of(list), list.changes);\n/**\n * @hidden\n */\nconst isUniversal = () => typeof document === 'undefined';\n/**\n * @hidden\n */\nconst isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === \"number\" && !isNaN(value);\n/**\n * @hidden\n */\nconst extractFormat = (format) => {\n if (isString(format) && !isNullOrEmptyString(format) && format.startsWith('{0:')) {\n return format.slice(3, format.length - 1);\n }\n return format;\n};\n/**\n * @hidden\n */\nconst not = (fn) => (...args) => !fn.apply(null, args);\n/**\n * @hidden\n */\nconst or = (...conditions) => (value) => conditions.reduce((acc, x) => acc || x(value), false);\n/**\n * @hidden\n */\nconst and = (...conditions) => (value) => conditions.reduce((acc, x) => acc && x(value), true);\n/**\n * @hidden\n */\nconst Skip = new InjectionToken(\"Skip\");\n/**\n * @hidden\n */\nconst createPromise = () => {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n reject(data);\n return promise;\n };\n });\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n return promise;\n};\n/** @hidden */\nconst iterator = getIterator$1();\n// TODO: Move to kendo-common\nfunction getIterator$1() {\n if (typeof Symbol === 'function' && Symbol.iterator) {\n return Symbol.iterator;\n }\n const keys = Object.getOwnPropertyNames(Map.prototype);\n const proto = Map.prototype;\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (key !== 'entries' && key !== 'size' && proto[key] === proto.entries) {\n return key;\n }\n }\n}\nconst FRAME_DURATION = 1000 / 60;\nconst wnd = typeof window !== 'undefined' ? window : {};\n/** @hidden */\nconst requestAnimationFrame = wnd.requestAnimationFrame || wnd.msRequestAnimationFrame || (callback => setTimeout(callback, FRAME_DURATION));\n/** @hidden */\nconst cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequestAnimationFrame || clearTimeout;\n/**\n * @hidden\n */\nconst detectIE = () => {\n if (!isDocumentAvailable()) {\n return;\n }\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const trident = ua.indexOf('Trident/');\n return msie > 0 || trident > 0;\n};\n/**\n * @hidden\n */\nconst nodesToArray = (nodes) => [].slice.call(nodes);\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n\n/**\n * Represents the Kendo UI GridSpacer component for Angular.\n * Used to give additional white space between the Pager inner elements,\n * and provides a way for customizing the spacer width.\n * It can also be used in any flex container within the Grid.\n */\nclass GridSpacerComponent {\n constructor() {\n this.hostClass = true;\n }\n get sizedClass() {\n return isPresent(this.width);\n }\n get flexBasisStyle() {\n return this.width;\n }\n}\nGridSpacerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridSpacerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridSpacerComponent, selector: \"kendo-grid-spacer, kendo-pager-spacer\", inputs: { width: \"width\" }, host: { properties: { \"class.k-spacer\": \"this.hostClass\", \"class.k-spacer-sized\": \"this.sizedClass\", \"style.flexBasis\": \"this.flexBasisStyle\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridSpacerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-spacer, kendo-pager-spacer',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-spacer']\n }], sizedClass: [{\n type: HostBinding,\n args: ['class.k-spacer-sized']\n }], flexBasisStyle: [{\n type: HostBinding,\n args: ['style.flexBasis']\n }], width: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DomEventsService {\n constructor() {\n this.cellClick = new EventEmitter();\n this.cellMousedown = new EventEmitter();\n this.cellMouseup = new EventEmitter();\n this.click = new EventEmitter();\n this.keydown = new EventEmitter();\n this.focus = new EventEmitter();\n this.focusIn = new EventEmitter();\n this.focusOut = new EventEmitter();\n this.windowBlur = new EventEmitter();\n }\n}\nDomEventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDomEventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass LocalDataChangesService {\n constructor() {\n this.changes = new EventEmitter();\n }\n}\nLocalDataChangesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocalDataChangesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass GridFocusableElement {\n constructor(navigationService) {\n this.navigationService = navigationService;\n }\n focus() {\n this.navigationService.focusCell();\n }\n toggle(active) {\n this.navigationService.toggle(active);\n }\n canFocus() {\n return true;\n }\n hasFocus() {\n return this.navigationService.hasFocus();\n }\n isNavigable() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationCursor {\n constructor(model) {\n this.model = model;\n this.changes = new Subject();\n this.activeRow = 0;\n this.activeCol = 0;\n this.virtualCol = 0;\n this.virtualRow = 0;\n }\n get row() {\n return this.model.findRow(this.activeRow);\n }\n get cell() {\n const row = this.row;\n if (row) {\n return this.model.findCell(this.activeCol, row);\n }\n }\n get dataRowIndex() {\n const row = this.row;\n if (row) {\n return row.dataRowIndex;\n }\n return -1;\n }\n /**\n * Assumes and announces a new cursor position.\n */\n reset(rowIndex = this.activeRow, colIndex = this.activeCol, force = true) {\n if (this.activate(rowIndex, colIndex, force)) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n }\n }\n activate(rowIndex, colIndex, force) {\n if (!force && this.isActiveRange(rowIndex, colIndex)) {\n return false;\n }\n const prevColIndex = this.activeCol;\n const prevRowIndex = this.activeRow;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n this.changes.next({\n colIndex,\n prevColIndex,\n prevRowIndex,\n rowIndex\n });\n return true;\n }\n isActiveRange(rowIndex, colIndex) {\n if (this.activeRow !== rowIndex) {\n return false;\n }\n const cell = this.cell;\n const { start, end } = this.model.cellRange(cell);\n return !Boolean(cell) || (start <= colIndex && colIndex <= end);\n }\n /**\n * Assumes a new cursor position without announcing it.\n */\n assume(rowIndex = this.activeRow, colIndex = this.activeCol) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n }\n /**\n * Announces a current cursor position to subscribers.\n */\n announce() {\n this.changes.next({\n colIndex: this.activeCol,\n prevColIndex: this.activeCol,\n prevRowIndex: this.activeRow,\n rowIndex: this.activeRow\n });\n }\n activateVirtualCell(cell) {\n const rowRange = this.model.rowRange(cell);\n const cellRange = this.model.cellRange(cell);\n const activeCol = this.activeCol;\n const activeRow = this.activeRow;\n if (rowRange.start <= activeRow && activeRow <= rowRange.end &&\n cellRange.start <= activeCol && activeCol <= cellRange.end) {\n this.activeRow = cell.rowIndex;\n this.activeCol = cell.colIndex;\n return true;\n }\n }\n isActive(rowIndex, colIndex) {\n return this.activeCol === colIndex && this.activeRow === rowIndex;\n }\n moveUp(offset = 1) {\n return this.offsetRow(-offset);\n }\n moveDown(offset = 1) {\n return this.offsetRow(offset);\n }\n moveLeft(offset = 1) {\n return this.offsetCol(-offset);\n }\n moveRight(offset = 1) {\n return this.offsetCol(offset);\n }\n lastCellIndex(row) {\n return this.metadata.columns.leafColumnsToRender.length - 1 +\n (this.metadata.hasDetailTemplate && (!row || !row.groupItem) ? 1 : 0);\n }\n offsetCol(offset) {\n const prevRow = this.model.findRow(this.virtualRow);\n const lastIndex = this.lastCellIndex(prevRow);\n const virtualCol = this.virtualCol;\n this.virtualCol = Math.max(0, Math.min(virtualCol + offset, lastIndex));\n let nextColIndex = this.virtualCol;\n let nextRowIndex = this.virtualRow;\n let cell = this.model.findCell(this.virtualCol, prevRow);\n if (!cell && this.metadata.virtualColumns) {\n return this.activate(nextRowIndex, nextColIndex);\n }\n if (cell.colSpan > 1 && cell.colIndex <= virtualCol && virtualCol < cell.colIndex + cell.colSpan) {\n nextColIndex = offset > 0 ? Math.min(cell.colIndex + cell.colSpan, lastIndex) : Math.max(0, cell.colIndex + offset);\n const nextCell = this.model.findCell(nextColIndex, prevRow);\n if (cell !== nextCell) {\n cell = nextCell;\n this.virtualCol = cell.colIndex;\n }\n else {\n this.virtualCol = virtualCol;\n }\n }\n return this.activate(cell.rowIndex, cell.colIndex);\n }\n offsetRow(offset) {\n let nextColIndex = this.virtualCol;\n if (this.metadata && this.metadata.isVirtual) {\n const maxIndex = this.metadata.maxLogicalRowIndex;\n let nextIndex = Math.max(0, Math.min(this.activeRow + offset, maxIndex));\n if (this.metadata.hasDetailTemplate && !this.model.findRow(nextIndex)) {\n nextIndex = offset > 0 ? nextIndex + 1 : nextIndex - 1;\n nextIndex = Math.max(0, Math.min(nextIndex, maxIndex));\n }\n if (this.metadata.hasDetailTemplate && nextIndex === maxIndex) {\n if (this.model.lastRow.index !== maxIndex) {\n // Don't attempt to navigate past the last collapsed row.\n nextIndex--;\n }\n }\n const nextRow = this.model.findRow(nextIndex);\n if (nextRow) {\n // remove duplication\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) {\n cell = this.model.findCell(this.virtualCol, this.model.findRow(cell.rowIndex + cell.rowSpan - 1 + offset));\n }\n nextIndex = cell.rowIndex;\n nextColIndex = cell.colIndex;\n }\n this.virtualRow = nextIndex;\n return this.activate(nextIndex, nextColIndex);\n }\n const nextRow = this.model.findRow(this.virtualRow + offset) || this.model.nextRow(this.virtualRow, offset);\n if (!nextRow) {\n return false;\n }\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (cell && cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) { // spanned cell go to next\n const nextPos = cell.rowIndex + cell.rowSpan - 1 + offset;\n cell = this.model.findCell(this.virtualCol, this.model.findRow(nextPos));\n }\n if (!cell && this.metadata.virtualColumns) {\n return this.activate(this.virtualRow + offset, this.virtualCol);\n }\n this.virtualRow = cell.rowIndex;\n return this.activate(this.virtualRow, cell.colIndex);\n }\n}\n\n/**\n * @hidden\n */\nclass ItemMap {\n constructor() {\n this.count = 0;\n this.items = {};\n }\n get first() {\n if (this.count > 0) {\n let result;\n this.forEach(item => {\n result = item;\n return true;\n });\n return result;\n }\n }\n get last() {\n if (this.count > 0) {\n const keys = Object.keys(this.items);\n return this.items[keys[keys.length - 1]];\n }\n }\n removeItem(key) {\n if (this.items[key]) {\n delete this.items[key];\n this.count--;\n }\n }\n setItem(key, item) {\n if (!this.items[key]) {\n this.count++;\n }\n this.items[key] = item;\n }\n getItem(key) {\n return this.items[key];\n }\n toArray() {\n const result = [];\n this.forEach(item => {\n result.push(item);\n });\n return result;\n }\n forEach(callback) {\n for (let key in this.items) {\n if (this.items.hasOwnProperty(key) && callback(this.items[key])) {\n return this.items[key];\n }\n }\n }\n find(callback) {\n return this.forEach(callback);\n }\n}\n\n/**\n * @hidden\n *\n * Contains information for the currently rendered rows and cells.\n */\nclass NavigationModel {\n constructor() {\n this.rows = new ItemMap();\n }\n get firstRow() {\n return this.rows.first;\n }\n get lastRow() {\n return this.rows.last;\n }\n registerCell(cell) {\n const row = this.rows.getItem(cell.logicalRowIndex);\n if (!row) {\n return;\n }\n const colIndex = cell.logicalColIndex;\n const modelCell = {\n uid: cell.uid,\n colIndex,\n rowIndex: row.index,\n colSpan: cell.colSpan,\n rowSpan: cell.rowSpan,\n detailExpandCell: cell.detailExpandCell,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n focusGroup: cell.focusGroup\n };\n row.cells.setItem(colIndex, modelCell);\n if (cell.groupItem) {\n row.groupItem = cell.groupItem;\n }\n return modelCell;\n }\n unregisterCell(index, rowIndex, cell) {\n const row = this.rows.getItem(rowIndex);\n if (row) {\n const match = row.cells.getItem(index);\n if (match && match.uid === cell.uid) {\n row.cells.removeItem(index);\n }\n }\n }\n registerRow(row) {\n const modelRow = {\n uid: row.uid,\n index: row.logicalRowIndex,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n cells: new ItemMap()\n };\n this.rows.setItem(row.logicalRowIndex, modelRow);\n }\n updateRow(row) {\n const current = this.rows.getItem(row.logicalRowIndex);\n if (current) {\n Object.assign(current, {\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex\n });\n }\n }\n unregisterRow(index, row) {\n const match = this.rows.getItem(index);\n if (match && match.uid === row.uid) {\n this.rows.removeItem(index);\n }\n }\n cellRange(cell) {\n if (cell) {\n const start = cell.colIndex;\n const end = cell.colIndex + (cell.colSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n rowRange(cell) {\n if (cell) {\n const start = cell.rowIndex;\n const end = cell.rowIndex + (cell.rowSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n nextRow(rowIndex, offset) {\n const rows = this.rows.toArray();\n const row = this.rows.getItem(rowIndex);\n const position = rows.indexOf(row);\n const next = rows[position + offset];\n return next;\n }\n findRow(index) {\n return this.rows.getItem(index);\n }\n findCell(index, row) {\n if (!row) {\n return;\n }\n const rowIndex = row.index;\n let cell = row.cells.getItem(index);\n let currentIndex = rowIndex;\n while (!cell && row) {\n row = this.rows.getItem(currentIndex);\n cell = this.rowCell(index, row);\n currentIndex--;\n }\n if (cell && rowIndex <= row.index + (cell.rowSpan || 1) - 1) {\n return cell;\n }\n }\n rowCell(index, row) {\n if (!row || !row.cells.count) {\n return;\n }\n const firstCell = row.cells.first;\n let cell, currentIndex = index;\n while (!cell && currentIndex >= firstCell.colIndex) {\n cell = row.cells.getItem(currentIndex);\n currentIndex--;\n }\n if (cell && index <= cell.colIndex + (cell.colSpan || 1) - 1) {\n return cell;\n }\n }\n}\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst NODE_NAME_PREDICATES = {};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n/**\n * @hidden\n */\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst contains$2 = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n/**\n * @hidden\n */\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const visible = !checkVisibility || isVisible(element);\n const ariaHidden = element.getAttribute('aria-hidden') === 'true';\n const tabIndex = element.getAttribute('tabIndex');\n return visible && !ariaHidden && tabIndex !== '-1';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst findLastElement = (node, predicate, matchSelf = true) => {\n let last = null;\n findElement(node, (node) => {\n if (predicate(node)) {\n last = node;\n }\n return false;\n }, matchSelf);\n return last;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findLastFocusableChild = (element, checkVisibility = true) => {\n return findLastElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass PagerContextService {\n constructor() {\n this.changes = new Subject();\n this.pageChange = new Subject();\n }\n get currentPage() {\n return this.skip / this.pageSize;\n }\n notifyChanges(changes) {\n this.total = changes.total;\n this.pageSize = changes.pageSize;\n this.skip = changes.skip;\n this.changes.next(changes);\n }\n changePage(page) {\n this.pageChange.next({ skip: page * this.pageSize, take: this.pageSize });\n }\n changePageSize(value) {\n this.pageChange.next({ skip: 0, take: value });\n }\n nextPage() {\n const nextPage = this.currentPage + 1;\n if (nextPage * this.pageSize < this.total) {\n this.changePage(nextPage);\n }\n }\n prevPage() {\n const prevPage = this.currentPage - 1;\n if (prevPage * this.pageSize >= 0) {\n this.changePage(prevPage);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass ScrollRequestService {\n constructor() {\n this.requests = new Subject();\n }\n scrollTo(request) {\n this.requests.next(request);\n }\n}\nScrollRequestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nScrollRequestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst getGroupRowArgs = (groupItem) => {\n if (!isPresent(groupItem)) {\n return null;\n }\n return { group: groupItem.data, groupIndex: groupItem.index, parentGroup: getGroupRowArgs(groupItem.parentGroup) };\n};\n\nconst isChildIndex = (targetIndex, parentIndex) => parentIndex !== targetIndex && targetIndex.startsWith(parentIndex);\n/**\n * @hidden\n */\nclass GroupsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n reset() {\n this.rowState.clear();\n }\n ngOnDestroy() {\n this.reset();\n }\n isExpanded(groupArgs) {\n if (this.userCallback) {\n return this.userCallback(groupArgs);\n }\n return !this.rowState.has(groupArgs.groupIndex);\n }\n isInExpandedGroup(groupItem) {\n let expanded = true;\n while (groupItem && expanded) {\n expanded = this.isExpanded({\n group: groupItem.data,\n groupIndex: groupItem.index,\n parentGroup: getGroupRowArgs(groupItem.parentGroup)\n });\n groupItem = groupItem.parentGroup;\n }\n return expanded;\n }\n toggleRow(groupItem) {\n const parentGroup = getGroupRowArgs(groupItem.parentGroup);\n const expand = !this.isExpanded({ group: groupItem.data, groupIndex: groupItem.index, parentGroup });\n this.changes.next({ group: groupItem.data, expand, groupIndex: groupItem.index, parentGroup });\n // if usercallback is given, the rowState should be ignored\n if (this.userCallback) {\n return;\n }\n if (expand) {\n this.rowState.delete(groupItem.index);\n }\n else {\n this.rowState.add(groupItem.index);\n }\n }\n expandChildren(parentIndex) {\n this.rowState.forEach(index => isChildIndex(index, parentIndex) && this.rowState.delete(index));\n }\n}\nGroupsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nGroupsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `detailCollapse` event.\n */\nclass DetailCollapseEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `detailExpand` event.\n */\nclass DetailExpandEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nclass DetailsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n ngOnDestroy() {\n this.rowState.clear();\n }\n isExpanded(index, dataItem) {\n if (this.userCallback) {\n return this.userCallback({ index, dataItem });\n }\n return this.rowState.has(index);\n }\n toggleRow(index, dataItem) {\n if (this.isExpanded(index, dataItem)) {\n this.collapseRow(index, dataItem);\n }\n else {\n this.expandRow(index, dataItem);\n }\n }\n expandRow(index, dataItem) {\n const prevented = this.emitEvent({ dataItem, index, expand: true });\n if (!prevented && !this.userCallback) {\n this.rowState.add(index);\n }\n }\n collapseRow(index, dataItem) {\n const prevented = this.emitEvent({ dataItem, index, expand: false });\n if (!prevented && !this.userCallback) {\n this.rowState.delete(index);\n }\n }\n emitEvent(args) {\n const eventArg = new (args.expand ? DetailExpandEvent : DetailCollapseEvent)(args);\n this.changes.next(eventArg);\n return eventArg.isDefaultPrevented();\n }\n}\nDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst FOCUS_ROOT_ACTIVE = new InjectionToken('focus-root-initial-active-state');\n/**\n * @hidden\n */\nclass FocusRoot {\n constructor(active = false) {\n this.active = active;\n this.groups = new Set();\n }\n registerGroup(group) {\n if (this.active) {\n this.groups.add(group);\n }\n }\n unregisterGroup(group) {\n if (this.active) {\n this.groups.delete(group);\n }\n }\n activate() {\n if (this.active) {\n this.groups.forEach(f => f.activate());\n }\n }\n deactivate() {\n if (this.active) {\n this.groups.forEach(f => f.deactivate());\n }\n }\n}\nFocusRoot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot, deps: [{ token: FOCUS_ROOT_ACTIVE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusRoot.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_ROOT_ACTIVE]\n }] }]; } });\n\n/**\n * Arguments for the `cellClose` event.\n */\nclass CellCloseEvent extends PreventableEvent {\n constructor(options) {\n super();\n /**\n * @hidden\n */\n this.action = 'cellClose';\n Object.assign(this, options);\n }\n}\n\n/**\n * @hidden\n */\nconst isEqual = (index) => (item) => item.index === index;\n/**\n * @hidden\n */\nconst isNotEqual = (index) => (item) => item.index !== index;\n/**\n * @hidden\n */\nconst isNewRow = (index) => index === -1 || index === undefined;\n/**\n * @hidden\n */\nclass EditService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n this.editedIndices = [];\n this.keepEditCell = false;\n this.closingCell = false;\n this.changedSource = new Subject();\n this.changed = this.changedSource.asObservable().pipe(switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))));\n }\n editRow(index, group = undefined) {\n this.editedIndices.push({ index, group });\n this.onChanged();\n }\n addRow(group) {\n this.newItemGroup = { group };\n this.onChanged();\n }\n editCell(rowIndex, column, group) {\n if (isNewRow(rowIndex) || column.editable === false || !(column.editTemplate || column.field)) {\n return;\n }\n this.preventCellClose();\n if (!this.closeCell()) {\n this.editRow(rowIndex, group);\n this.column = column;\n this.onChanged();\n }\n }\n isEditing() {\n return this.editedIndices.length > 0;\n }\n isEditingCell() {\n return this.isEditing() && this.column !== undefined;\n }\n get hasNewItem() {\n return isPresent(this.newItemGroup);\n }\n get newDataItem() {\n if (this.hasNewItem) {\n return this.newItemGroup.group.value;\n }\n return {};\n }\n close(index) {\n if (isNewRow(index)) {\n this.newItemGroup = undefined;\n return;\n }\n this.editedIndices = this.editedIndices.filter(isNotEqual(index));\n delete this.column;\n this.onChanged();\n }\n closeCell(originalEvent) {\n if (this.column && !this.closingCell) {\n return this.ngZone.run(() => {\n const { index, group } = this.editedIndices[0];\n const args = new CellCloseEvent({\n column: this.column,\n formGroup: group,\n originalEvent: originalEvent,\n rowIndex: index\n });\n this.closingCell = true;\n this.changes.emit(args);\n this.closingCell = false;\n if (!args.isDefaultPrevented()) {\n this.cancelCell();\n }\n return args.isDefaultPrevented();\n });\n }\n }\n cancelCell() {\n if (this.column) {\n this.editedIndices = [];\n delete this.column;\n this.onChanged();\n }\n }\n shouldCloseCell() {\n return this.column && !this.keepEditCell;\n }\n preventCellClose() {\n this.ngZone.runOutsideAngular(() => {\n window.clearTimeout(this.keepCellTimeout);\n this.keepEditCell = true;\n this.keepCellTimeout = window.setTimeout(() => {\n this.keepEditCell = false;\n }, 0);\n });\n }\n context(index) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n return this.findByIndex(index);\n }\n columnContext(index, column) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n if (!this.column || column === this.column) {\n return this.findByIndex(index);\n }\n }\n isEdited(index) {\n if (isNewRow(index) && isPresent(this.newItemGroup)) {\n return true;\n }\n return !this.column && isPresent(this.findByIndex(index));\n }\n hasEdited(index) {\n return isPresent(this.context(index));\n }\n isEditedColumn(index, column) {\n if (this.column && this.column === column) {\n return isPresent(this.findByIndex(index));\n }\n return false;\n }\n beginEdit(rowIndex) {\n this.changes.emit({ action: 'edit', rowIndex });\n }\n beginAdd() {\n this.changes.emit({ action: 'add' });\n }\n endEdit(rowIndex) {\n const { group: formGroup } = this.context(rowIndex);\n this.changes.emit({ action: 'cancel', rowIndex, formGroup, isNew: isNewRow(rowIndex) });\n }\n save(rowIndex) {\n const { group: formGroup } = this.context(rowIndex);\n this.changes.emit({ action: 'save', rowIndex, formGroup, isNew: isNewRow(rowIndex) });\n }\n remove(rowIndex) {\n this.changes.emit({ action: 'remove', rowIndex });\n }\n findByIndex(index) {\n return this.editedIndices.find(isEqual(index));\n }\n onChanged() {\n this.ngZone.runOutsideAngular(() => {\n this.changedSource.next();\n });\n }\n}\nEditService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nEditService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nconst isButton = matchesNodeName('button');\nconst isInputTag = matchesNodeName('input');\nconst navigableRegex = /(button|checkbox|color|file|radio|reset|submit)/i;\nconst isNavigableInput = element => isInputTag(element) && navigableRegex.test(element.type);\nconst isNavigable = element => !element.disabled && (isButton(element) || isNavigableInput(element));\n/**\n * @hidden\n */\nclass DefaultFocusableElement {\n constructor(host, renderer) {\n this.renderer = renderer;\n this.element = host.nativeElement;\n this.focusable = findFocusable(this.element, false) || this.element;\n }\n get enabled() {\n return this.focusable && !this.focusable.disabled;\n }\n get visible() {\n return this.focusable && isVisible(this.focusable);\n }\n isNavigable() {\n return this.canFocus() && isNavigable(this.element);\n }\n toggle(active) {\n this.renderer.setAttribute(this.focusable, 'tabIndex', active ? '0' : '-1');\n }\n focus() {\n if (this.focusable) {\n this.focusable.focus();\n }\n }\n canFocus() {\n return this.visible && this.enabled;\n }\n hasFocus() {\n return document.activeElement !== this.element && closest(document.activeElement, e => e === this.element);\n }\n}\n\n/**\n * @hidden\n */\nconst CELL_CONTEXT = new InjectionToken('grid-cell-context');\n/**\n * @hidden\n */\nconst EMPTY_CELL_CONTEXT = {};\n\n/**\n * A directive that controls the way focusable elements receive\n * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public readonly data: any = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }];\n * }\n * ```\n */\nclass FocusableDirective {\n constructor(cellContext, hostElement, renderer) {\n this.cellContext = cellContext;\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.active = true;\n this._enabled = true;\n if (this.cellContext) {\n this.group = this.cellContext.focusGroup;\n }\n if (this.group) {\n this.group.registerElement(this);\n }\n }\n /**\n * @hidden\n */\n set enabled(value) {\n if (value === '') {\n value = true;\n }\n else {\n value = Boolean(value);\n }\n if (value !== this.enabled) {\n this._enabled = value;\n if (this.element) {\n this.element.toggle(this.active && value);\n }\n }\n }\n get enabled() {\n return this._enabled;\n }\n ngAfterViewInit() {\n if (!this.element) {\n this.element = new DefaultFocusableElement(this.hostElement, this.renderer);\n }\n if (this.group && this.element) {\n this.toggle(this.group.isActive);\n }\n }\n ngOnDestroy() {\n if (this.group) {\n this.group.unregisterElement(this);\n }\n }\n /**\n * @hidden\n */\n toggle(active) {\n if (this.element && active !== this.active) {\n this.element.toggle(this.enabled && active);\n this.active = active;\n }\n }\n /**\n * @hidden\n */\n canFocus() {\n return this.enabled && this.element && this.element.canFocus();\n }\n /**\n * @hidden\n */\n isNavigable() {\n return this.enabled && this.element && this.element.isNavigable();\n }\n /**\n * @hidden\n */\n focus() {\n if (this.enabled && this.element) {\n this.element.focus();\n }\n }\n /**\n * @hidden\n */\n hasFocus() {\n return this.enabled && this.element && this.element.hasFocus();\n }\n /**\n * @hidden\n */\n registerElement(element) {\n this.element = element;\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: CELL_CONTEXT, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: { enabled: [\"kendoGridFocusable\", \"enabled\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFocusable]' + `,\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }, {\n type: SkipSelf\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['kendoGridFocusable']\n }] } });\n\nconst isInSameGrid = (element, gridElement) => closest(element, matchesNodeName('kendo-grid')) === gridElement;\nconst matchHeaderCell = matchesNodeName('th');\nconst matchDataCell = matchesNodeName('td');\nconst matchFooterCell = matchesNodeName('.k-grid-footer td');\nconst matchCell = (element) => matchDataCell(element) || matchHeaderCell(element) || matchFooterCell(element);\nconst gridCell = (element, gridElement) => {\n let target = closest(element, matchCell);\n while (target && !isInSameGrid(target, gridElement)) {\n target = closest(target.parentElement, matchCell);\n }\n return target;\n};\nconst targetCell = (target, gridElement) => {\n const cell = gridCell(target, gridElement);\n const row = closest(cell, matchesNodeName('tr'));\n if (cell && row) {\n let rowIndex = row.getAttribute('aria-rowindex');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) - 1 : null;\n let colIndex = cell.getAttribute('aria-colindex');\n colIndex = colIndex ? parseInt(colIndex, 10) - 1 : null;\n if (rowIndex !== null && colIndex !== null) {\n return { colIndex, rowIndex, element: cell };\n }\n }\n};\nconst isArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight ||\n keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\nconst isNavigationKey = keyCode => isArrowKey(keyCode) ||\n keyCode === Keys.PageUp || keyCode === Keys.PageDown ||\n keyCode === Keys.Home || keyCode === Keys.End;\nconst isInput = matchesNodeName('input');\nconst isTextInput = element => element && isInput(element) && element.type.toLowerCase() === 'text';\nconst isPrintableCharacter = (str) => str.length === 1 && str.match(/\\S/);\n/**\n * @hidden\n */\nclass NavigationViewport {\n constructor(firstItemIndex, lastItemIndex) {\n this.firstItemIndex = firstItemIndex;\n this.lastItemIndex = lastItemIndex;\n }\n containsRow(dataRowIndex) {\n const headerRow = dataRowIndex < 0;\n return headerRow || (dataRowIndex >= this.firstItemIndex && dataRowIndex <= this.lastItemIndex);\n }\n intersects(start, end) {\n return (start <= this.firstItemIndex && this.lastItemIndex <= end) ||\n (this.firstItemIndex <= start && start <= this.lastItemIndex) ||\n (this.firstItemIndex <= end && end <= this.lastItemIndex);\n }\n}\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(zone, domEvents, pagerContextService, scrollRequestService, groupsService, detailsService, focusRoot, editService, cd, localization, focusableParent) {\n this.zone = zone;\n this.domEvents = domEvents;\n this.pagerContextService = pagerContextService;\n this.scrollRequestService = scrollRequestService;\n this.groupsService = groupsService;\n this.detailsService = detailsService;\n this.focusRoot = focusRoot;\n this.editService = editService;\n this.cd = cd;\n this.localization = localization;\n this.focusableParent = focusableParent;\n this.cellKeydown = new EventEmitter();\n this.activeRowIndex = 0;\n this.alive = false;\n this.active = true;\n this.mode = 0 /* Standby */;\n this.model = new NavigationModel();\n this.cursor = new NavigationCursor(this.model);\n this.pagerIsNavigable = false;\n this.tableIsNavigable = false;\n this.changes = this.cursor.changes;\n }\n set metadata(value) {\n this.meta = value;\n this.cursor.metadata = value;\n }\n get metadata() {\n return this.meta;\n }\n get enabled() {\n return this.alive;\n }\n get pagerEnabled() {\n return this.alive && this.pagerIsNavigable;\n }\n get tableEnabled() {\n return this.alive && this.tableIsNavigable;\n }\n get activeCell() {\n if (this.mode !== 0 /* Standby */) {\n return this.cursor.cell;\n }\n }\n get activeRow() {\n if (this.mode !== 0 /* Standby */) {\n return Object.assign({}, this.cursor.row, {\n cells: this.cursor.row.cells.toArray()\n });\n }\n }\n get activeDataRow() {\n return Math.max(0, this.activeRowIndex - this.meta.headerRows);\n }\n init(meta, navigableOptions) {\n this.setActiveSections(navigableOptions);\n this.alive = true;\n this.focusRoot.active = true;\n this.metadata = meta;\n const onStableSubscriber = (...operators) => (args) => this.zone.isStable ?\n from([true]).pipe(map(() => args)) :\n this.zone.onStable.pipe(take(1), map(() => args), ...operators);\n const onStable = onStableSubscriber();\n this.subs = new Subscription();\n this.subs.add(this.cursor.changes\n .subscribe(args => this.onCursorChanges(args)));\n this.subs.add(this.domEvents.focus.pipe(switchMap(onStable))\n .subscribe((args) => this.navigateTo(args.target)));\n this.subs.add(this.domEvents.focusOut.pipe(filter(() => this.mode !== 0 /* Standby */), switchMap(onStableSubscriber(takeUntil(this.domEvents.focus))))\n .subscribe(args => this.onFocusOut(args)));\n this.subs.add(this.domEvents.windowBlur.pipe(filter(() => this.mode !== 0 /* Standby */))\n .subscribe(() => this.onWindowBlur()));\n this.subs.add(\n // Closing the editor will not always trigger focusout in Firefox.\n // To get around this, we ensure that the cell is closed after editing.\n this.editService.changes.pipe(filter(e => e.action !== 'edit' && this.mode === 2 /* Content */), filter((e) => e.action === 'cellClose' && !e.prevented), switchMap(onStable))\n .subscribe(() => this.leaveCell()));\n this.subs.add(this.pagerContextService.pageChange\n .subscribe(() => this.cursor.reset(0, 0)));\n this.subs.add(this.domEvents.keydown\n .subscribe(args => this.onKeydown(args)));\n this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(\n // Timeout if focusOut doesn't fire very soon\n interval(0).pipe(take(1))))))\n .subscribe(() => this.onTabout()));\n if (this.focusableParent) {\n const element = new GridFocusableElement(this);\n this.focusableParent.registerElement(element);\n }\n this.deactivateElements();\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n this.alive = false;\n }\n registerCell(cell) {\n if (cell.logicalRowIndex !== this.pendingRowIndex) {\n const modelCell = this.model.registerCell(cell);\n if (this.virtualCell && this.cursor.activateVirtualCell(modelCell)) {\n this.virtualCell = false;\n }\n }\n }\n registerCellOnCurrentRow(cell) {\n if (cell.logicalRowIndex === this.pendingRowIndex) {\n this.model.registerCell(cell);\n }\n }\n unregisterCell(index, rowIndex, cell) {\n this.model.unregisterCell(index, rowIndex, cell);\n }\n registerRow(row) {\n this.model.registerRow(row);\n this.pendingRowIndex = row.logicalRowIndex;\n }\n updateRow(row) {\n this.model.updateRow(row);\n }\n unregisterRow(index, row) {\n this.model.unregisterRow(index, row);\n const lastRow = this.model.lastRow;\n if (lastRow && this.mode === 0 /* Standby */) {\n const maxIndex = (this.needsViewport() && this.viewport) ? this.viewport.lastItemIndex : lastRow.index;\n if (this.activeRowIndex > maxIndex) {\n this.cursor.reset(0, 0);\n }\n }\n }\n isCellFocusable(cell) {\n return this.alive &&\n this.active &&\n this.mode !== 2 /* Content */ &&\n this.cursor.isActive(cell.logicalRowIndex, cell.logicalColIndex);\n }\n isCellFocused(cell) {\n return this.mode === 1 /* Cursor */ && this.isCellFocusable(cell);\n }\n navigateTo(el) {\n if (!this.alive) {\n return;\n }\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (!cell) {\n return;\n }\n const oldMode = this.mode;\n const focusInCell = contains$2(cell.element, document.activeElement);\n const focusInActiveRowContent = this.mode === 2 /* Content */ &&\n this.activeRowIndex === cell.rowIndex &&\n el !== cell.element;\n if (focusInCell) {\n this.mode = 2 /* Content */;\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.activateRow();\n }\n else if (!focusInActiveRowContent) {\n this.mode = 1 /* Cursor */;\n this.deactivateElements();\n const alreadyActive = this.cursor.isActive(cell.rowIndex, cell.colIndex);\n const isCursor = oldMode === 1 /* Cursor */ && alreadyActive;\n if (!isCursor) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n }\n }\n }\n tryFocus(el) {\n this.activateElements();\n const focusable = findFocusableChild(el);\n if (focusable) {\n const cell = targetCell(focusable, this.meta.gridElement.nativeElement);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.deactivateElements();\n this.enterCell();\n }\n focusable.focus();\n }\n else {\n this.deactivateElements();\n }\n return !!focusable;\n }\n needsViewport() {\n return this.meta && this.meta.isVirtual;\n }\n setViewport(firstItemIndex, lastItemIndex) {\n this.viewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n if (this.meta && this.meta.isVirtual && this.activeDataRow > -1) {\n const dataRowIndex = this.activeDataRow;\n const ahead = firstItemIndex - dataRowIndex;\n const behind = dataRowIndex - lastItemIndex;\n if (ahead > 0) {\n this.cursor.reset(firstItemIndex + this.meta.headerRows);\n }\n else if (behind > 0) {\n this.cursor.reset(lastItemIndex - this.meta.headerRows);\n }\n }\n }\n setColumnViewport(firstItemIndex, lastItemIndex) {\n this.columnViewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n }\n focusCell(rowIndex = undefined, colIndex = undefined) {\n this.mode = 1 /* Cursor */;\n this.cursor.reset(rowIndex, colIndex);\n return this.activeCell;\n }\n focusCellByElement(el) {\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (cell) {\n return this.focusCell(cell.rowIndex, cell.colIndex);\n }\n }\n focusNextCell(wrap = true) {\n return this.focusAdjacentCell(true, wrap);\n }\n focusPrevCell(wrap = true) {\n return this.focusAdjacentCell(false, wrap);\n }\n toggle(active) {\n this.active = active;\n this.cursor.announce();\n }\n hasFocus() {\n return this.mode === 1 /* Cursor */ || this.mode === 2 /* Content */;\n }\n autoFocusCell(start, end) {\n return !this.meta.virtualColumns || end < this.meta.columns.lockedLeafColumns.length || this.columnViewport.intersects(start, end);\n }\n setActiveSections(navigableOptions) {\n this.pagerIsNavigable = navigableOptions.includes('pager');\n this.tableIsNavigable = navigableOptions.includes('table');\n }\n focusAdjacentCell(fwd, wrap) {\n this.focusCell();\n let success = fwd ? this.moveCursorFwd() : this.moveCursorBwd();\n if (wrap && !success) {\n success = fwd ? this.cursor.moveDown(1) : this.cursor.moveUp(1);\n if (success) {\n const row = this.cursor.row;\n const colIdx = fwd ? 0 : this.cursor.lastCellIndex(row);\n this.cursor.reset(row.index, colIdx);\n }\n }\n if (success) {\n return this.activeCell;\n }\n else {\n this.mode = 0 /* Standby */;\n this.cursor.announce();\n }\n return null;\n }\n enterCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n this.mode = focusable ? 2 /* Content */ : 1 /* Cursor */;\n this.cursor.announce();\n if (focusable) {\n this.activateRow();\n group.focus();\n }\n }\n leaveCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n if (!focusable) {\n this.deactivateElements();\n }\n this.mode = 1 /* Cursor */;\n this.cursor.announce();\n }\n activateElements() {\n this.focusRoot.activate();\n }\n deactivateElements() {\n this.focusRoot.deactivate();\n }\n activateRow() {\n this.cursor.row.cells\n .forEach(cell => cell.focusGroup && cell.focusGroup.activate());\n }\n moveCursorFwd() {\n return this.localization.rtl ? this.cursor.moveLeft() : this.cursor.moveRight();\n }\n moveCursorBwd() {\n return this.localization.rtl ? this.cursor.moveRight() : this.cursor.moveLeft();\n }\n onCursorKeydown(args) {\n let preventDefault = false;\n const modifier = args.ctrlKey || args.metaKey;\n const step = modifier ? 5 : 1;\n if (!this.onCellKeydown(args)) {\n return;\n }\n const row = this.cursor.row;\n switch (args.keyCode) {\n case Keys.ArrowDown:\n preventDefault = this.cursor.moveDown(step);\n break;\n case Keys.ArrowUp:\n preventDefault = this.cursor.moveUp(step);\n break;\n case Keys.ArrowRight:\n preventDefault = this.moveCursorFwd();\n break;\n case Keys.ArrowLeft:\n preventDefault = this.moveCursorBwd();\n break;\n case Keys.PageDown:\n if (this.metadata.isVirtual && this.viewport) {\n let nextItemIndex = this.meta.headerRows + this.viewport.lastItemIndex + 1;\n if (this.metadata.hasDetailTemplate) {\n nextItemIndex++;\n }\n nextItemIndex = Math.min(this.meta.maxLogicalRowIndex, nextItemIndex);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n }\n else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.nextPage());\n preventDefault = true;\n }\n break;\n case Keys.PageUp:\n if (this.metadata.isVirtual && this.viewport) {\n let viewportSize = this.viewport.lastItemIndex - this.viewport.firstItemIndex;\n let firstItemIndex = this.viewport.firstItemIndex;\n let nextItemIndex = Math.max(this.meta.headerRows, firstItemIndex - viewportSize - 1);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n }\n else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.prevPage());\n preventDefault = true;\n }\n break;\n case Keys.Home:\n if (modifier) {\n if (this.meta.isVirtual) {\n this.cursor.reset(this.meta.headerRows, 0, false);\n }\n else {\n this.cursor.reset(this.model.firstRow.index, 0, false);\n }\n }\n else {\n this.cursor.reset(row.index, 0, false);\n }\n preventDefault = true;\n break;\n case Keys.End:\n if (modifier) {\n if (this.meta.isVirtual) {\n let lastRowIndex = this.meta.maxLogicalRowIndex;\n if (this.meta.hasDetailTemplate) {\n lastRowIndex--;\n }\n this.cursor.reset(lastRowIndex, this.cursor.lastCellIndex(), false);\n }\n else {\n this.cursor.reset(this.model.lastRow.index, this.cursor.lastCellIndex(this.model.lastRow), false);\n }\n }\n else {\n const lastIndex = this.cursor.lastCellIndex(row);\n const cell = this.model.findCell(lastIndex, row);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n }\n else {\n this.cursor.reset(row.index, lastIndex);\n }\n }\n preventDefault = true;\n break;\n case Keys.Enter:\n case Keys.F2:\n const groupItem = row.groupItem;\n if (groupItem) {\n this.zone.run(() => this.groupsService.toggleRow(groupItem));\n }\n else if (this.cursor.cell.detailExpandCell) {\n this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));\n }\n else {\n this.enterCell();\n if (!this.cursor.cell.focusGroup.isNavigable()) {\n preventDefault = true;\n }\n }\n break;\n default:\n if (!args.ctrlKey && !args.altKey && isPrintableCharacter(args.key)) {\n this.enterCell();\n }\n }\n if (preventDefault) {\n args.preventDefault();\n }\n }\n onContentKeydown(args) {\n if (!this.onCellKeydown(args)) {\n return;\n }\n const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.srcElement);\n if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {\n this.leaveCell();\n this.cursor.reset();\n args.stopPropagation();\n }\n else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {\n this.onCursorKeydown(args);\n if (args.defaultPrevented) {\n this.leaveCell();\n }\n }\n }\n onCellKeydown(args) {\n if (this.editService.isEditingCell()) {\n const confirm = args.keyCode === Keys.Enter;\n const cancel = args.keyCode === Keys.Escape;\n const navigate = isNavigationKey(args.keyCode);\n if (confirm) {\n this.editService.closeCell(args);\n }\n else if (cancel) {\n this.editService.closeCell(args);\n this.cd.detectChanges();\n }\n else if (navigate) {\n return false;\n }\n }\n this.cellKeydown.emit(args);\n return true;\n }\n onCursorChanges(args) {\n this.activeRowIndex = args.rowIndex;\n const dataRowIndex = this.activeDataRow;\n if (this.meta && (this.meta.isVirtual &&\n args.rowIndex >= this.meta.headerRows &&\n this.viewport &&\n !this.viewport.containsRow(dataRowIndex) && dataRowIndex > -1)) {\n this.scrollRequestService.scrollTo({ row: dataRowIndex });\n }\n if (this.meta.virtualColumns && args.colIndex >= this.meta.columns.lockedLeafColumns.length) {\n const cell = this.activeCell;\n const { start, end } = this.model.cellRange(cell);\n if (!cell) {\n this.virtualCell = true;\n }\n if ((!cell && this.mode !== 0 /* Standby */) || (cell && !this.columnViewport.intersects(start, end))) {\n this.scrollRequestService.scrollTo({ column: args.colIndex - (this.metadata.hasDetailTemplate ? 1 : 0) });\n }\n }\n }\n onFocusOut(args) {\n if (isVisible(args.target)) {\n this.mode = 0 /* Standby */;\n }\n else {\n // Focused target is no longer visible,\n // reset to cursor mode and recapture focus.\n this.mode = 1 /* Cursor */;\n }\n this.deactivateElements();\n this.cursor.announce();\n }\n onWindowBlur() {\n this.mode = 0 /* Standby */;\n this.deactivateElements();\n this.cursor.announce();\n }\n onKeydown(args) {\n if (this.mode === 1 /* Cursor */) {\n this.onCursorKeydown(args);\n }\n else if (this.mode === 2 /* Content */) {\n this.onContentKeydown(args);\n }\n }\n onTabout() {\n // Tabbed out of the last focusable content element\n // reset to cursor mode and recapture focus.\n if (this.cursor.cell.focusGroup.isNavigable()) {\n // Unless the cell has a single focusable element,\n // otherwise we'd return to Content mode and enter an endless loop\n return;\n }\n this.leaveCell();\n this.cursor.reset();\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: DomEventsService }, { type: PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: FocusableDirective, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor(domEvents, localDataChangesService, navigationService) {\n this.domEvents = domEvents;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.changes = new EventEmitter();\n this.lastSelectionStartIndex = 0;\n this.currentSelection = [];\n this.selectAllChecked = false;\n this.active = false;\n this.dragging = false;\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof (selectableSettings) === 'object' &&\n isPresent(selectableSettings) &&\n selectableSettings.mode === 'multiple' &&\n selectableSettings.enabled !== false &&\n !selectableSettings.checkboxOnly &&\n selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n this._selectAllState = true;\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (settings.rowSelected(rowArgs)) {\n this.currentSelection[item.value.index] = rowArgs;\n }\n else {\n this._selectAllState = undefined;\n }\n }\n item = iterator.next();\n }\n if (this.currentSelection.length === 0) {\n this._selectAllState = false;\n }\n }\n }\n isSelected(index) {\n if (this.settings && this.active) {\n return this.options.enabled && isPresent(this.currentSelection[index]);\n }\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isSelected(item.index)) {\n ev = this.toggle(item);\n }\n else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n }\n else if (event.shiftKey) {\n ev = this.addAllTo(item, ctrlKey);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection[item.index] = {\n dataItem: item.data,\n index: item.index\n };\n }\n if (!ev.selectedRows.length && !ev.deselectedRows.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n this.changes.emit(ev);\n }\n toggle(item) {\n let selectedRows = [];\n let deselectedRows = [];\n this.lastSelectionStartIndex = item.index;\n const rowArgs = { dataItem: item.data, index: item.index };\n if (this.isSelected(item.index)) {\n deselectedRows.push(rowArgs);\n }\n else {\n selectedRows.push(rowArgs);\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n toggleByIndex(index) {\n const iterator = this.getIterator();\n if (this.selectAllChecked && this.isSelected(index)) {\n this.selectAllChecked = false;\n }\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.index === index) {\n const itemToToggle = {\n data: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(index) || this.options.mode === \"multiple\") {\n return this.toggle(itemToToggle);\n }\n else {\n return this.select(itemToToggle);\n }\n }\n item = iterator.next();\n }\n }\n select(item) {\n let deselectedRows = [];\n let selectedRows = [];\n this.lastSelectionStartIndex = item.index;\n if (!this.isSelected(item.index)) {\n selectedRows.push({ dataItem: item.data, index: item.index });\n }\n this.currentSelection.forEach((row) => {\n if (row.index !== item.index) {\n deselectedRows.push(row);\n }\n });\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(rowArgs.index)) {\n let ev = {\n ctrlKey: false,\n deselectedRows: [rowArgs],\n selectedRows: []\n };\n this.changes.emit(ev);\n }\n }\n item = iterator.next();\n }\n }\n addAllTo(item, ctrlKey) {\n let selectedRows = [];\n let deselectedRows = [];\n const start = Math.min(this.lastSelectionStartIndex, item.index);\n const end = Math.max(this.lastSelectionStartIndex, item.index);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if ((idx < start || idx > end) && this.isSelected(idx) && !ctrlKey) {\n deselectedRows.push(rowArgs);\n }\n if ((idx >= start && idx <= end) && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n updateAll(selectAllChecked) {\n this.selectAllChecked = selectAllChecked;\n let selectedRows = [];\n let deselectedRows = [];\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if (this.isSelected(idx) && !selectAllChecked) {\n deselectedRows.push(rowArgs);\n }\n if (!this.isSelected(idx) && selectAllChecked) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n if (!selectedRows.length && !deselectedRows.length) {\n return;\n }\n let ev = {\n ctrlKey: true,\n deselectedRows: deselectedRows,\n selectedRows: selectedRows,\n shiftKey: true\n };\n this.changes.emit(ev);\n }\n selectRange(startIndex, endIndex) {\n let selectedRows = [];\n let deselectedRows = [];\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if ((idx < start || idx > end) && this.isSelected(idx)) {\n deselectedRows.push(rowArgs);\n }\n if ((idx >= start && idx <= end) && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n get selectAllState() {\n return this._selectAllState;\n }\n get selected() {\n return this.currentSelection.map((item) => {\n return item.index;\n }).filter((n) => typeof n === \"number\");\n }\n get options() {\n const defaultOptions = {\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n }\n else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n targetArgs() {\n return {\n index: this.mouseDownEventArgs.rowIndex,\n dataItem: this.mouseDownEventArgs.dataItem\n };\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({ index: args.rowIndex, data: args.dataItem }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe((args) => {\n this.mouseDownEventArgs = args;\n if ((this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") &&\n !this.options.checkboxOnly && args.originalEvent.shiftKey)) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe((args) => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });\n\n/**\n * @hidden\n */\nclass CellSelectionService {\n constructor(domEvents, localDataChangesService, navigationService) {\n this.domEvents = domEvents;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.changes = new EventEmitter();\n this.mouseUpEvent = new EventEmitter();\n this.currentSelection = [];\n this.active = false;\n this.dragging = false;\n this.dragSelectDeselect = false;\n this.lastSelectionItem = { itemKey: 0, columnKey: 0 };\n this.lastSelectionItemRowIndex = 0;\n this.lastSelectionItemColIndex = 0;\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof (selectableSettings) === 'object' &&\n isPresent(selectableSettings) &&\n selectableSettings.mode === 'multiple' &&\n selectableSettings.cell &&\n selectableSettings.enabled !== false &&\n selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n settings.columns.forEach(col => {\n const selectedCellArgs = settings.cellSelected(rowArgs, col, col.leafIndex);\n if (selectedCellArgs.selected) {\n this.currentSelection.push(selectedCellArgs.item);\n }\n });\n }\n item = iterator.next();\n }\n }\n }\n isCellSelected(item, col) {\n if (this.settings && this.active) {\n const selectedCellArgs = this.settings.cellSelected({ dataItem: item.data, index: item.index }, col, col.leafIndex);\n return this.options.enabled && selectedCellArgs.selected;\n }\n return false;\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isCellSelected(item, item.column)) {\n ev = this.toggle(item);\n }\n else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n }\n else if (event.shiftKey) {\n const startRowIndex = Math.min(this.lastSelectionItemRowIndex, item.index);\n const startColIndex = Math.min(this.lastSelectionItemColIndex, item.column.leafIndex);\n const endRowIndex = Math.max(this.lastSelectionItemRowIndex, item.index);\n const endColIndex = Math.max(this.lastSelectionItemColIndex, item.column.leafIndex);\n ev = this.selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection = [this.lastSelectionItem];\n }\n if (!ev.selectedCells.length && !ev.deselectedCells.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n this.changes.emit(ev);\n }\n toggle(item) {\n let selectedCells = [];\n let deselectedCells = [];\n this.lastSelectionItem =\n this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (this.isCellSelected(item, item.column)) {\n deselectedCells.push(this.lastSelectionItem);\n }\n else {\n selectedCells.push(this.lastSelectionItem);\n }\n return {\n deselectedCells,\n selectedCells\n };\n }\n select(item) {\n const selectedCells = [];\n const deselectedCells = [];\n this.lastSelectionItem =\n this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (!this.isCellSelected(item, item.column)) {\n selectedCells.push(this.lastSelectionItem);\n }\n this.currentSelection.forEach((selectedItem) => {\n if (selectedItem.itemKey !== this.lastSelectionItem.itemKey || selectedItem.columnKey !== this.lastSelectionItem.columnKey) {\n deselectedCells.push(selectedItem);\n }\n });\n return {\n deselectedCells,\n selectedCells\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n let rowArgs;\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n break;\n }\n item = iterator.next();\n }\n if (rowArgs) {\n const cellsToRemove = this.currentSelection.filter(selectedItem => {\n const contender = this.settings.cellSelected(rowArgs, null, null).item;\n return selectedItem.itemKey === contender.itemKey;\n });\n if (cellsToRemove.length) {\n let ev = {\n ctrlKey: false,\n deselectedCells: cellsToRemove,\n selectedCells: []\n };\n this.changes.emit(ev);\n }\n }\n }\n selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex) {\n const selectedCells = [];\n const deselectedCells = [];\n const selectionStartRow = Math.min(startRowIndex, endRowIndex);\n const selectionStartCol = Math.min(startColIndex, endColIndex);\n const selectionEndRow = Math.max(startRowIndex, endRowIndex);\n const selectionEndCol = Math.max(startColIndex, endColIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const data = next.value.data;\n const rowArgs = {\n dataItem: data,\n index: idx\n };\n this.settings.columns.forEach(col => {\n const { item } = this.settings.cellSelected(rowArgs, col, col.leafIndex);\n const selected = this.isCellSelected(next.value, col);\n const isInRowRange = selectionStartRow <= idx && idx <= selectionEndRow;\n const isInColRange = selectionStartCol <= col.leafIndex && col.leafIndex <= selectionEndCol;\n const isInSelectionRect = isInRowRange && isInColRange;\n if (!isInSelectionRect && selected) {\n deselectedCells.push(item);\n }\n if (isInSelectionRect && !selected) {\n selectedCells.push(item);\n }\n });\n }\n next = iterator.next();\n }\n return {\n deselectedCells,\n selectedCells\n };\n }\n get options() {\n const defaultOptions = {\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n }\n else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({ index: args.rowIndex, data: args.dataItem, column: args.column }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe((args) => {\n this.mouseDownEventArgs = args;\n if (this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") &&\n !this.options.checkboxOnly && args.originalEvent.shiftKey) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe((args) => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n}\nCellSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });\nCellSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });\n\nconst createElement$1 = () => {\n const marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n return marquee;\n};\nconst POINTER_OFFSET = 2;\nconst MINIMAL_DRAG_DISTANCE = 5;\nconst offsets = {\n topLeft: { x: POINTER_OFFSET, y: POINTER_OFFSET },\n topRight: { x: -POINTER_OFFSET, y: POINTER_OFFSET },\n bottomLeft: { x: POINTER_OFFSET, y: -POINTER_OFFSET },\n bottomRight: { x: -POINTER_OFFSET, y: -POINTER_OFFSET }\n};\n/**\n * @hidden\n */\nclass GridMarqueeDirective {\n constructor(draggable, selection, cellSelection, domEvents) {\n this.draggable = draggable;\n this.selection = selection;\n this.cellSelection = cellSelection;\n this.domEvents = domEvents;\n this.selectionStarted = false;\n }\n get webkitUserSelection() {\n return (this.cellSelection.enableMarquee || this.selection.enableMarquee) ? 'none' : null;\n }\n get userSelection() {\n return (this.cellSelection.enableMarquee || this.selection.enableMarquee);\n }\n ngOnInit() {\n this.subscriptions = (this.draggable.kendoPress.subscribe(this.start.bind(this)));\n this.subscriptions.add(this.draggable.kendoDrag.subscribe(this.moveMarquee.bind(this)));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.clean();\n }\n start(args) {\n if (args.originalEvent.target.classList.contains('k-checkbox')) {\n this.pressArgs = null;\n return;\n }\n this.pressArgs = args;\n this.pressTarget = null;\n }\n moveMarquee(args) {\n if (!this.pressTarget) {\n this.pressTarget = this.cellSelection.active ? this.cellSelection.mouseDownEventArgs : this.selection.mouseDownEventArgs;\n }\n const press = this.pressArgs;\n if (!press) {\n return;\n }\n if (!this.selectionStarted) {\n const distance = Math.sqrt(Math.pow((args.pageX - press.pageX), 2) + Math.pow((args.pageY - press.pageY), 2));\n if (distance > MINIMAL_DRAG_DISTANCE) {\n this.selectionStarted = true;\n this.dragEndSubscription = merge(this.domEvents.cellMouseup.pipe(take(1)), this.draggable.kendoRelease.pipe(delay(1), take(1)))\n .subscribe(this.endSelection.bind(this));\n }\n else {\n return;\n }\n }\n this.initMarquee();\n const element = this.marqueeElement;\n const marqueeQuadrant = this.getMarqueeQuadrant(args.pageX, args.pageY, press.pageX, press.pageY);\n let left = Math.min(args.pageX, press.pageX);\n let top = Math.min(args.pageY, press.pageY);\n const width = Math.abs(args.pageX - press.pageX);\n const height = Math.abs(args.pageY - press.pageY);\n if (marqueeQuadrant) {\n left += offsets[marqueeQuadrant].x;\n top += offsets[marqueeQuadrant].y;\n }\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n }\n endSelection(args) {\n if (args.type === 'mouseup' || args.type === 'touchend') {\n if (this.cellSelection.active) {\n this.cellSelection.dragging = true;\n this.cellSelection.changes.emit(this.cellSelection.selectRange(this.pressTarget.rowIndex, this.pressTarget.column.leafIndex, args.rowIndex, args.column.leafIndex));\n }\n else if (this.selection.active) {\n this.selection.dragging = true;\n this.selection.changes.emit(this.selection.selectRange(this.pressTarget.rowIndex, args.rowIndex));\n }\n }\n this.clean();\n }\n clean() {\n if (this.marqueeElement) {\n document.body.removeChild(this.marqueeElement);\n this.marqueeElement = null;\n }\n if (this.dragEndSubscription) {\n this.dragEndSubscription.unsubscribe();\n }\n this.dragEndSubscription = null;\n this.pressTarget = null;\n this.pressArgs = null;\n this.selectionStarted = false;\n // eslint-disable-next-line no-unused-expressions\n this.cellSelection.active ? this.cellSelection.dragging = false : this.selection.dragging = false;\n }\n initMarquee() {\n if (!this.marqueeElement) {\n this.marqueeElement = createElement$1();\n document.body.appendChild(this.marqueeElement);\n }\n }\n getMarqueeQuadrant(pointerX, pointerY, startX, startY) {\n const leftHalf = pointerX < startX;\n const rightHalf = pointerX > startX;\n const topHalf = pointerY < startY;\n const bottomHalf = pointerY > startY;\n if (leftHalf && topHalf) {\n return 'topLeft';\n }\n if (leftHalf && bottomHalf) {\n return 'bottomLeft';\n }\n if (rightHalf && topHalf) {\n return 'topRight';\n }\n if (rightHalf && bottomHalf) {\n return 'bottomRight';\n }\n return null;\n }\n}\nGridMarqueeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMarqueeDirective, deps: [{ token: i1$1.DraggableDirective }, { token: SelectionService }, { token: CellSelectionService }, { token: DomEventsService }], target: i0.ɵɵFactoryTarget.Directive });\nGridMarqueeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridMarqueeDirective, selector: \"[kendoGridSelectionMarquee]\", host: { properties: { \"style.-webkit-user-select\": \"this.webkitUserSelection\", \"class.user-select-none\": \"this.userSelection\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMarqueeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionMarquee]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective }, { type: SelectionService }, { type: CellSelectionService }, { type: DomEventsService }]; }, propDecorators: { webkitUserSelection: [{\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }], userSelection: [{\n type: HostBinding,\n args: ['class.user-select-none']\n }] } });\n\n/**\n * @hidden\n */\nclass ZoneAwareEventEmitter extends EventEmitter {\n constructor(ngZone, isAsync = false) {\n super(isAsync);\n this.ngZone = ngZone;\n }\n subscribe(generatorOrNext, error, complete) {\n let schedulerFn;\n let errorFn = (_) => null;\n let completeFn = () => null;\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext.next(value)); };\n if (generatorOrNext.error) {\n errorFn = (err) => { this.ngZone.run(() => generatorOrNext.error(err)); };\n }\n if (generatorOrNext.complete) {\n completeFn = () => { this.ngZone.run(() => generatorOrNext.complete()); };\n }\n }\n else {\n schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext(value)); };\n if (error) {\n errorFn = (err) => { this.ngZone.run(() => error(err)); };\n }\n if (complete) {\n completeFn = () => { this.ngZone.run(() => complete()); };\n }\n }\n return super.subscribe(schedulerFn, errorFn, completeFn);\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-grid',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654697320,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the column cell template of the Grid ([more information and example]({% slug templates_columns_grid %}#toc-cell-template)).\n * Helps to customize the content of the cells. To define the cell template, nest an `` tag\n * with the `kendoGridCellTemplate` directive inside a `` tag.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `columnIndex`—The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex=\"columnIndex\"` syntax.\n * - `rowIndex`—The current data row index. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-dataItem`.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Data Row #: {{rowIndex}} /\n * {{dataItem.ProductName}}\n * ({{dataItem.Discontinued ? \"discontinued\" : \"active\"}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellTemplateDirective, selector: \"[kendoGridCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderTemplate`\n * directive inside ``.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n * - `index`—The index of the current group.\n * - `expanded`—A boolean value indicating if the group is currently expanded.\n * ([see example]({% slug groupable_grid_with_aggregates %})).\n *\n * @example\n * ```ts\n * import { process } from '@progress/kendo-data-query';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{field}}: {{value}}\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public groups = [{ field: \"ProductName\" }];\n *\n * public gridData = process([{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ], {\n * group: this.groups\n * });\n * }\n *\n * ```\n */\nclass GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderTemplateDirective, selector: \"[kendoGridGroupHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group-header column template of the Grid which helps to customize the content of the group headers.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderColumnTemplate`\n * directive inside ``. ([See example]({% slug groupable_grid_with_aggregates %})).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```ts\n * \n * \n * \n * Count: {{ aggregates.Discontinued.count }}\n * \n * \n * \n * ```\n */\nclass GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderColumnTemplateDirective, selector: \"[kendoGridGroupHeaderColumnTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderColumnTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column edit-cell template of the Grid ([see example]({% slug editing_template_forms_grid %})).\n * Helps to customize the content of the edited cells. To define the cell template, nest an ``\n * tag with the `kendoGridEditTemplate` directive inside a `` tag.\n *\n * The template context is set to the current form group and the following additional fields are passed:\n * - `formGroup`—The current [FormGroup]({{ site.data.urls.angular['formgroupapi'] }}).\n * Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-formGroup`.\n * If you use the Grid inside [Template-Driven Forms]({{ site.data.urls.angular['forms'] }}), it will be `undefined`.\n * - `rowIndex`—The current data row index. If inside a new item row, `rowIndex` is `-1`. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem=\"dataItem\"` syntax.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n * - `isNew`—The state of the current item. Use it as an alias for a template variable by utilizing the `let-isNew=\"isNew\"` syntax.\n */\nclass EditTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nEditTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nEditTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditTemplateDirective, selector: \"[kendoGridEditTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column group footer cell template of the Grid which helps to customize the group footer cell for the column.\n * To define the group footer template, nest an `` tag with the `kendoGridGroupFooterTemplate` directive\n * inside ``.\n *\n * The template context is set to the current aggregates and the following additional fields are passed:\n * - `column`—Defines an instance of the `ColumnComponent` option.\n * - `field`—The current column field name.\n * - `group`—The current group data item.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```ts-preview\n * import { process } from '@progress/kendo-data-query';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Count: {{aggregates[field].count}}\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public groups = [{ field: \"ProductName\", aggregates: [{ field: \"ProductName\", aggregate: \"count\" }] }];\n *\n * public gridData = process([{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ], {\n * group: this.groups\n * });\n * }\n * ```\n */\nclass GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupFooterTemplateDirective, selector: \"[kendoGridGroupFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column header cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).\n * Helps to customize the table header cell for the column.\n * To define a header template, nest an `` tag with the\n * [kendoGridHeaderTemplate]({% slug api_grid_headertemplatedirective %}) directive inside the `` tag.\n *\n * The template context is set to the current column and then the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTemplateDirective, selector: \"[kendoGridHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column footer cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-footer-template)).\n * Helps to customize the table footer cell for the column.\n * To define a footer template, nest an `` tag with the\n * [kendoGridFooterTemplate]({% slug api_grid_footertemplatedirective %}) directive inside the `` tag.\n *\n * The template context is set to the current column and the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * For more information on how to display aggregates in the footer of the Grid,\n * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoGridFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the column menu in the Grid. Provides an option for\n * customizing the content of the column menu for all or for specific columns.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuTemplate` directive inside the `kendo-grid` or the `` component.\n *\n * The template context is passes through the following fields:\n * - `service`—Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).\n * - `column`—Represents the Grid column.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];\n * }\n *\n * ```\n */\nclass ColumnMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuTemplateDirective, selector: \"[kendoGridColumnMenuTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n// Incremented each time the service is instantiated.\nlet sequence = 0;\n/**\n * @hidden\n */\nclass IdService {\n constructor() {\n this.prefix = `k-grid${sequence++}`;\n }\n gridId() {\n return this.prefix;\n }\n cellId(rowIndex, colIndex) {\n return `${this.prefix}-r${rowIndex}c${colIndex}`;\n }\n selectionCheckboxId(itemIndex) {\n return `${this.prefix}-checkbox${itemIndex}`;\n }\n selectAllCheckboxId() {\n return `${this.prefix}-select-all`;\n }\n}\nIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nconst isSpanColumn = column => column.isSpanColumn;\n/**\n * @hidden\n */\nconst isCheckboxColumn = column => column.isCheckboxColumn;\nconst isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);\n/**\n * The base class for the column components of the Grid.\n */\nclass ColumnBase {\n /**\n * @hidden\n */\n constructor(parent, idService) {\n this.parent = parent;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n /**\n * The column index after reordering.\n *\n * > `orderIndex` is a read-only property. Setting this field does not affect column order.\n */\n this.orderIndex = 0;\n /**\n * @hidden\n */\n this.isColumnGroup = false;\n /**\n * @hidden\n */\n this.isSpanColumn = false;\n /**\n * Indicates whether the column is resizable.\n * @default true\n */\n this.resizable = true;\n /**\n * Indicates whether the column is reorderable.\n * @default true\n */\n this.reorderable = true;\n /**\n * The width (in pixels) below which the user is not able to resize the column by using the UI.\n */\n this.minResizableWidth = 10;\n this._locked = false;\n /**\n * Determines whether the column will be always visible when scrolling the Grid horizontally.\n *\n * @default false\n */\n this.sticky = false;\n /**\n * Specifies if the column can be locked or unlocked from the column menu or by reordering the columns.\n */\n this.lockable = true;\n /**\n * Specifies if the column can be stuck or unstuck from the column menu.\n */\n this.stickable = true;\n /**\n * Specifies if the column menu will be shown for the column.\n */\n this.columnMenu = true;\n /**\n * Specifies if the column will be included in the column-chooser list.\n */\n this.includeInChooser = true;\n /**\n * @hidden\n */\n this.headerTemplates = new QueryList();\n /**\n * @hidden\n */\n this.columnMenuTemplates = new QueryList();\n this.idService = idService;\n if (parent && idService && parent.idService.gridId() === idService.gridId() && !isColumnContainer(parent)) {\n throw new Error('Columns can be nested only inside ColumnGroupComponent');\n }\n }\n /**\n * @hidden\n */\n set leafIndex(value) {\n this._leafIndex = value;\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this._leafIndex;\n }\n /**\n * The width of the column (in pixels).\n */\n set width(value) {\n if (typeof value === 'string') {\n const parsedValue = this._width = parseInt(value, 10);\n if (isDevMode()) {\n console.warn(`Expected numeric value for column width, but got a string \"${value}\". Treating as ${parsedValue}px.`);\n }\n }\n else {\n this._width = value;\n }\n }\n get width() { return this._width; }\n /**\n * Toggles the locked (frozen) state of the columns ([more information and example]({% slug locked_columns_grid %})).\n *\n * @default false\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked;\n }\n /**\n * @hidden\n */\n get level() {\n if (this.parent && isSpanColumn(this.parent)) {\n return this.parent.level;\n }\n return this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.parent ? this.parent.isLocked : this.locked;\n }\n /**\n * @hidden\n */\n get colspan() {\n return 1;\n }\n /**\n * @hidden\n */\n rowspan(totalColumnLevels) {\n return this.level < totalColumnLevels ? (totalColumnLevels - this.level) + 1 : 1;\n }\n /**\n * @hidden\n */\n get headerTemplateRef() {\n const template = this.headerTemplates.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get footerTemplateRef() {\n return this.footerTemplate ? this.footerTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get columnMenuTemplateRef() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n /**\n * @hidden\n */\n get displayTitle() {\n return this.title;\n }\n /**\n * @hidden\n */\n get isVisible() {\n return !this.hidden && this.matchesMedia;\n }\n}\nColumnBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }, { token: IdService }], target: i0.ɵɵFactoryTarget.Component });\nColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnBase, selector: \"kendo-grid-column-base\", inputs: { resizable: \"resizable\", reorderable: \"reorderable\", minResizableWidth: \"minResizableWidth\", title: \"title\", width: \"width\", autoSize: \"autoSize\", locked: \"locked\", sticky: \"sticky\", hidden: \"hidden\", media: \"media\", lockable: \"lockable\", stickable: \"stickable\", columnMenu: \"columnMenu\", includeInChooser: \"includeInChooser\", style: \"style\", headerStyle: \"headerStyle\", filterStyle: \"filterStyle\", footerStyle: \"footerStyle\", cssClass: [\"class\", \"cssClass\"], headerClass: \"headerClass\", filterClass: \"filterClass\", footerClass: \"footerClass\" }, queries: [{ propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"headerTemplates\", predicate: HeaderTemplateDirective }, { propertyName: \"columnMenuTemplates\", predicate: ColumnMenuTemplateDirective }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase }, { type: IdService }]; }, propDecorators: { resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], minResizableWidth: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], autoSize: [{\n type: Input\n }], locked: [{\n type: Input\n }], sticky: [{\n type: Input\n }], hidden: [{\n type: Input\n }], media: [{\n type: Input\n }], lockable: [{\n type: Input\n }], stickable: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], includeInChooser: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], filterStyle: [{\n type: Input\n }], footerStyle: [{\n type: Input\n }], cssClass: [{\n type: Input,\n args: ['class']\n }], headerClass: [{\n type: Input\n }], filterClass: [{\n type: Input\n }], footerClass: [{\n type: Input\n }], headerTemplates: [{\n type: ContentChildren,\n args: [HeaderTemplateDirective, { descendants: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], columnMenuTemplates: [{\n type: ContentChildren,\n args: [ColumnMenuTemplateDirective]\n }] } });\n\n/**\n * Represents the filter-cell template ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-rows)).\n */\nclass FilterCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFilterCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellTemplateDirective, selector: \"[kendoGridFilterCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the filter-menu template\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-menus)).\n */\nclass FilterMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFilterMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuTemplateDirective, selector: \"[kendoGridFilterMenuTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterMenuTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nfunction isColumnComponent(column) {\n return isPresent(column.field);\n}\n/**\n * Represents the columns of the [Angular Data Grid]({% slug overview_grid %}).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass ColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /**\n * Allows the column headers to be clicked and the `sortChange` event emitted.\n * You have to handle the `sortChange` event yourself and sort the data.\n */\n this.sortable = true;\n /**\n * Determines if the column can be dragged to the group panel. The default value is `true`.\n * If set to `false`, you can group the columns by the column field by using the API of the Grid.\n */\n this.groupable = true;\n /**\n * Defines the editor type ([see example]({% slug editing_reactive_forms_grid %}#toc-setup)).\n * Used when the column enters the edit mode. The default value is `text`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.editor = 'text';\n /**\n * Defines the filter type that is displayed inside the filter row. The default value is `text`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.filter = 'text';\n /**\n * Defines if a filter UI will be displayed for this column. The default value is `true`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.filterable = true;\n /**\n * Defines whether the column is editable. The default value is `true`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.editable = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n get groupHeaderTemplateRef() {\n return this.groupHeaderTemplate ? this.groupHeaderTemplate.templateRef : undefined;\n }\n get groupHeaderColumnTemplateRef() {\n return this.groupHeaderColumnTemplate ? this.groupHeaderColumnTemplate.templateRef : undefined;\n }\n get groupFooterTemplateRef() {\n return this.groupFooterTemplate ? this.groupFooterTemplate.templateRef : undefined;\n }\n get editTemplateRef() {\n return this.editTemplate ? this.editTemplate.templateRef : undefined;\n }\n get filterCellTemplateRef() {\n return this.filterCellTemplate ? this.filterCellTemplate.templateRef : undefined;\n }\n get filterMenuTemplateRef() {\n return this.filterMenuTemplate ? this.filterMenuTemplate.templateRef : undefined;\n }\n get displayTitle() {\n return this.title === undefined ? this.field : this.title;\n }\n}\nColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnComponent, selector: \"kendo-grid-column\", inputs: { field: \"field\", format: \"format\", sortable: \"sortable\", groupable: \"groupable\", editor: \"editor\", filter: \"filter\", filterable: \"filterable\", editable: \"editable\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"groupHeaderTemplate\", first: true, predicate: GroupHeaderTemplateDirective, descendants: true }, { propertyName: \"groupHeaderColumnTemplate\", first: true, predicate: GroupHeaderColumnTemplateDirective, descendants: true }, { propertyName: \"groupFooterTemplate\", first: true, predicate: GroupFooterTemplateDirective, descendants: true }, { propertyName: \"editTemplate\", first: true, predicate: EditTemplateDirective, descendants: true }, { propertyName: \"filterCellTemplate\", first: true, predicate: FilterCellTemplateDirective, descendants: true }, { propertyName: \"filterMenuTemplate\", first: true, predicate: FilterMenuTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ],\n selector: 'kendo-grid-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { field: [{\n type: Input\n }], format: [{\n type: Input\n }], sortable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], editor: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterable: [{\n type: Input\n }], editable: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], groupHeaderTemplate: [{\n type: ContentChild,\n args: [GroupHeaderTemplateDirective, { static: false }]\n }], groupHeaderColumnTemplate: [{\n type: ContentChild,\n args: [GroupHeaderColumnTemplateDirective, { static: false }]\n }], groupFooterTemplate: [{\n type: ContentChild,\n args: [GroupFooterTemplateDirective, { static: false }]\n }], editTemplate: [{\n type: ContentChild,\n args: [EditTemplateDirective, { static: false }]\n }], filterCellTemplate: [{\n type: ContentChild,\n args: [FilterCellTemplateDirective, { static: false }]\n }], filterMenuTemplate: [{\n type: ContentChild,\n args: [FilterMenuTemplateDirective, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nfunction isSpanColumnComponent(column) {\n return column.isSpanColumn;\n}\n/**\n * Represents a column which can be spanned over multiple data cells while the individual\n * header and footer cells are retained ([see example]({% slug spanned_columns_grid %})).\n * Enables you to achieve more flexible layout while keeping the built-in UI element for\n * [sorting]({% slug sorting_grid %}), [filtering]({% slug filtering_grid %}), and\n * [grouping]({% slug groupingbasics_grid %}). Wrap the columns that will be\n * merged inside the `` tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * }\n *\n * ```\n *\n * By default, the data cell displays the data for the specified fields. To further customize\n * the span-column functionality, use a [cell template]({% slug api_grid_celltemplatedirective %}).\n *\n * ```html-no-run\n * \n * \n * \n * \n *
    {{ dataItem.field1 }}
    \n *

    {{ dataItem.field2 }}

    \n *
    \n *
    \n * ```\n */\nclass SpanColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /*\n * @hidden\n */\n this.isSpanColumn = true;\n this.template = new QueryList();\n this.editTemplate = new QueryList();\n /**\n * @hidden\n */\n this.childColumns = new QueryList();\n /**\n * @hidden\n */\n this.includeInChooser = false;\n this._editable = true;\n if (parent && parent.isSpanColumn) {\n throw new Error('SpanColumn cannot be nested inside another SpanColumn');\n }\n }\n /**\n * Defines whether the edit template of the column will be rendered. The default value is `false`.\n *\n * > To enable the editing functionality for a spanned column, set an edit template for it.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * .....\n * \n * \n * \n * ```\n */\n set editable(value) {\n this._editable = value;\n }\n get editable() {\n return isPresent(this.editTemplateRef) && this._editable;\n }\n /**\n * @hidden\n * added for backwards compitability\n */\n set width(_value) {\n }\n get width() {\n return this.childColumns.reduce((total, column) => total + column.width, 0);\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.childColumns.first.leafIndex;\n }\n /**\n * @hidden\n */\n get templateRef() {\n const template = this.template.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get editTemplateRef() {\n const editTemplate = this.editTemplate.first;\n return editTemplate ? editTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get colspan() {\n return this.childColumns.filter(c => c.isVisible).length;\n }\n /**\n * Toggles the locked (frozen) state of the columns. Locked columns are visible\n * at all times during the horizontal scrolling of the Grid.\n *\n * For the option to work properly, make sure that:\n * - Scrolling is enabled.\n * - The `height` option of the Grid is set.\n * - The widths of all Grid columns are explicitly set in pixels. In this way,\n * the Grid adjusts the layout of the locked and unlocked columns.\n *\n * @default false\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked || this.childColumns.some(c => c.locked);\n }\n get childrenArray() {\n return this.childColumns.toArray();\n }\n get hasChildren() {\n return this.childColumns.length > 0;\n }\n}\nSpanColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SpanColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nSpanColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SpanColumnComponent, selector: \"kendo-grid-span-column\", inputs: { editable: \"editable\", locked: \"locked\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => SpanColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", predicate: CellTemplateDirective }, { propertyName: \"editTemplate\", predicate: EditTemplateDirective }, { propertyName: \"childColumns\", predicate: ColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SpanColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => SpanColumnComponent)\n }\n ],\n selector: 'kendo-grid-span-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { template: [{\n type: ContentChildren,\n args: [CellTemplateDirective, { descendants: false }]\n }], editTemplate: [{\n type: ContentChildren,\n args: [EditTemplateDirective, { descendants: false }]\n }], childColumns: [{\n type: ContentChildren,\n args: [ColumnComponent]\n }], editable: [{\n type: Input\n }], locked: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst expandColumns = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ? column.childrenArray : [column]), []));\n/**\n * @hidden\n */\nconst expandColumnsWithSpan = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ?\n [column].concat(column.childrenArray) :\n [column]), []));\n/**\n * @hidden\n */\nconst columnsToRender = (columns) => (expandColumns(columns).filter(x => x.isVisible));\nconst sumProp = (prop) => (array) => (array || []).reduce((prev, curr) => prev + (curr[prop] || 0), 0);\n/**\n * @hidden\n */\nconst sumColumnWidths = sumProp('width');\n/**\n * @hidden\n */\nconst columnsSpan = sumProp('colspan');\nconst validField = new RegExp(`^[$A-Z\\_a-z][$A-Z\\_a-z0-9\\\\.]*$`);\n/**\n * @hidden\n */\nconst isValidFieldName = (fieldName) => !isNullOrEmptyString(fieldName) && validField.test(fieldName) &&\n fieldName[0] !== \".\" && fieldName[fieldName.length - 1] !== \".\";\n/**\n * @hidden\n */\nconst children = column => column.children.filter(child => child !== column);\n/**\n * @hidden\n */\nconst leafColumns = columns => {\n return columns.reduce((acc, column) => {\n if (column.isColumnGroup) {\n acc = acc.concat(leafColumns(children(column)));\n }\n else if (column.isSpanColumn) {\n acc = acc.concat(column.childrenArray);\n }\n else {\n acc.push(column);\n }\n return acc;\n }, []).filter(x => x.isVisible);\n};\n/**\n * @hidden\n */\nconst someLeafColumn = (callback, ...columns) => leafColumns(columns).some(callback);\n/**\n * @hidden\n */\nconst resizableColumns = columns => columns.filter(column => isTruthy(column.resizable) && column.isVisible);\n/**\n * @hidden\n */\nconst sortColumns = (columns) => orderBy(columns, [{ field: 'orderIndex', dir: 'asc' }]);\n/**\n * @hidden\n */\nconst isInSpanColumn$1 = (column) => isTruthy(column.parent) && isSpanColumnComponent(column.parent);\n\n/**\n * @hidden\n */\nfunction isColumnGroupComponent(column) {\n return column.isColumnGroup;\n}\n/**\n * Represents the column group header of the Grid\n * ([more information and examples]({% slug multicolumnheaders_columns_grid %})).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Column index: {{columnIndex}} / column title: {{column.title}}\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass ColumnGroupComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /**\n * @hidden\n */\n this.includeInChooser = false;\n /**\n * @hidden\n */\n this.isColumnGroup = true;\n /**\n * @hidden\n */\n this.minResizableWidth = 10;\n if (parent && parent.isSpanColumn) {\n throw new Error('ColumnGroupComponent cannot be nested inside SpanColumnComponent');\n }\n }\n /**\n * @hidden\n */\n rowspan() {\n return 1;\n }\n /**\n * @hidden\n */\n get colspan() {\n if (!this.children || this.children.length === 1) {\n return 1;\n }\n return columnsSpan(this.children\n .filter(child => child !== this && child.isVisible));\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.children ? (this.firstChild || {}).leafIndex : -1;\n }\n get childrenArray() {\n return this.children.filter(c => c !== this);\n }\n get hasChildren() {\n return Boolean(this.firstChild);\n }\n get firstChild() {\n return this.children.find(column => column !== this);\n }\n}\nColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnGroupComponent, selector: \"kendo-grid-column-group\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ], queries: [{ propertyName: \"children\", predicate: ColumnBase }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ],\n selector: 'kendo-grid-column-group',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [ColumnBase]\n }] } });\n\n/**\n * Represents the detail template of the Grid ([more information and examples]({% slug detailrowtemplate_grid %})).\n * To define the detail template, nest an `` tag with the `kendoGridDetailTemplate` directive inside a `` tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n *
    \n *
    {{dataItem.Category?.CategoryName}}
    \n * {{dataItem.Category?.Description}}\n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * public data = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 3,\n * \"ProductName\": \"Aniseed Syrup\",\n * \"UnitPrice\": 10.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 2,\n * \"CategoryName\": \"Condiments\",\n * \"Description\": \"Sweet and savory sauces, relishes, spreads, and seasonings\"\n * }\n * }];\n *\n * }\n *\n * ```\n *\n */\nclass DetailTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._condition = () => true;\n }\n /**\n * Defines the function that indicates if a given detail row and the associated **Expand** or **Collapse** button will be displayed.\n */\n set showIf(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`showIf must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._condition = fn;\n }\n get showIf() {\n return this._condition;\n }\n}\nDetailTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDetailTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DetailTemplateDirective, selector: \"[kendoGridDetailTemplate]\", inputs: { showIf: [\"kendoGridDetailTemplateShowIf\", \"showIf\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridDetailTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { showIf: [{\n type: Input,\n args: [\"kendoGridDetailTemplateShowIf\"]\n }] } });\n\nconst canCreateElement = () => isDocumentAvailable() && document.createElement;\nlet cachedScrollbarWidth = null;\nlet cachedPixelRatio;\nlet cachedRtlScrollLeft = null;\nfunction scrollbarWidth() {\n if (cachedScrollbarWidth === null && canCreateElement()) {\n cachedPixelRatio = window.devicePixelRatio || 1;\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return cachedScrollbarWidth;\n}\nfunction rtlScrollLeft() {\n if (cachedRtlScrollLeft === null && canCreateElement()) {\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;zoom:1;clear:both;display:block;width:100px;visibility:hidden;position:absolute;left:-10000px;direction:rtl;\";\n div.innerHTML = \"
    \";\n document.body.appendChild(div);\n const initial = div.scrollLeft;\n div.scrollLeft = -1;\n cachedRtlScrollLeft = div.scrollLeft < 0 ? div.scrollLeft : initial;\n document.body.removeChild(div);\n }\n return cachedRtlScrollLeft;\n}\n/**\n * @hidden\n * move to kendo-common\n */\nclass BrowserSupportService {\n constructor(zone, changeDetector) {\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.changes = new EventEmitter();\n if (typeof window === 'undefined') {\n return;\n }\n this.zone.runOutsideAngular(() => {\n this.subscriptions = fromEvent(window, 'resize').pipe(auditTime(100)).subscribe(() => {\n if (cachedPixelRatio !== window.devicePixelRatio) {\n zone.run(() => {\n cachedScrollbarWidth = null;\n this.changes.emit();\n this.changeDetector.markForCheck();\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n this.subscriptions = null;\n }\n }\n get scrollbarWidth() {\n return scrollbarWidth();\n }\n get rtlScrollLeft() {\n return rtlScrollLeft();\n }\n}\nBrowserSupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserSupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });\n\nconst isGroupItem = (source) => {\n return source.items !== undefined &&\n source.field !== undefined;\n};\nconst isVirtualGroupItem = (source) => {\n return source.offset !== undefined &&\n source.skipHeader !== undefined;\n};\nconst flattenGroups = (groups) => (groups.reduce((acc, curr) => {\n if (isGroupItem(curr)) {\n return acc.concat(flattenGroups(curr.items));\n }\n return acc.concat([curr]);\n}, []));\n/**\n * @hidden\n */\nconst itemAt = (data, index) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n return flattenGroups(data)[index];\n }\n return data[index];\n};\n/**\n * @hidden\n */\nconst getIterator = (data, { footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup }) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n if (isVirtualGroupItem(first)) {\n groupIndex = isPresent(first.offset) ? first.offset : groupIndex;\n }\n return new GroupIterator(data, footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup);\n }\n return new ItemIterator(data, dataIndex, parentGroupIndex, parentGroup);\n};\nclass ArrayIterator {\n constructor(arr, idx = 0) {\n this.arr = arr;\n this.idx = idx;\n this.arr = arr || [];\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.idx < this.arr.length ? {\n done: false,\n value: this.arr[this.idx++]\n } : { done: true, value: undefined };\n }\n}\n/**\n * @hidden\n */\nclass Iterator {\n constructor(arr, dataIndex = 0, resultMap = (x) => x) {\n this.dataIndex = dataIndex;\n this.resultMap = resultMap;\n const iter = arr[iterator];\n this._innerIterator = iter ? arr[iterator]() : new ArrayIterator(arr);\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.resultMap(this._innerIterator.next(), this.dataIndex++);\n }\n}\n/**\n * @hidden\n */\nclass ItemIterator extends Iterator {\n constructor(arr, dataIndex, groupIndex, group) {\n super(arr, dataIndex, (x, idx) => ({\n done: x.done,\n value: {\n data: x.value,\n groupIndex: groupIndex,\n index: idx,\n type: 'data',\n group\n }\n }));\n }\n /**\n * The index of the next record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex;\n }\n}\nconst prefix = (s, n) => {\n const p = s ? s + \"_\" : s;\n return `${p}${n}`;\n};\n/**\n * @hidden\n */\nclass GroupIterator {\n constructor(arr, outputFooters = false, level = 0, dataIndex = 0, parentIndex = \"\", groupIndex = 0, parentGroup = undefined) {\n this.arr = arr;\n this.outputFooters = outputFooters;\n this.level = level;\n this.dataIndex = dataIndex;\n this.parentIndex = parentIndex;\n this.groupIndex = groupIndex;\n this.parentGroup = parentGroup;\n this.currentGroupIndex = \"\";\n this.arr = arr || [];\n this._iterator = new Iterator(this.arr, this.dataIndex);\n }\n [iterator]() {\n return this;\n }\n nextGroupItem() {\n this.current = this._iterator.next().value;\n this._innerIterator = null;\n if (this.current) {\n this.currentGroupIndex = prefix(this.parentIndex, this.groupIndex++);\n return {\n done: false,\n value: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n };\n }\n else {\n this.current = null;\n return { done: true, value: undefined };\n }\n }\n footerItem() {\n if (this.current) {\n const group = this.current;\n this.current = null;\n return {\n done: false,\n value: {\n data: group,\n groupIndex: this.currentGroupIndex,\n level: this.level,\n type: 'footer',\n group: {\n data: group,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n }\n };\n }\n else {\n this.current = null;\n return { done: true, value: undefined };\n }\n }\n innerIterator(group) {\n if (!this._innerIterator) {\n this._innerIterator = getIterator(group.items, {\n dataIndex: this.dataIndex,\n footers: this.outputFooters,\n level: this.level + 1,\n parentGroupIndex: this.currentGroupIndex,\n parentGroup: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n });\n }\n return this._innerIterator;\n }\n nextDataItem(group) {\n const iterator = this.innerIterator(group);\n const result = iterator.next();\n if (isPresent(result.value) && !result.done && result.value.type === \"data\") {\n this.dataIndex = result.value.index + 1;\n }\n return !result.done ? result : undefined;\n }\n next() {\n if (!isPresent(this.current)) {\n return this.nextGroupItem();\n }\n const item = this.nextDataItem(this.current);\n return item ? item : (this.outputFooters ? this.footerItem() : this.nextGroupItem());\n }\n /**\n * The index of the last iterated data record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex + 1;\n }\n}\n\n/**\n * @hidden\n */\nclass DataResultIterator {\n constructor(source, skip = 0, groupFooters = false) {\n this.source = source;\n this.skip = skip;\n this.groupFooters = groupFooters;\n this.source = this.source ? this.source : [];\n this.isObject = this.isGridDataResult(this.source);\n }\n isGridDataResult(source) {\n return source.total !== undefined && source.data !== undefined;\n }\n get total() {\n return this.isObject ? this.source.total : this.source.length;\n }\n get data() {\n return this.isObject ? this.source.data : this.source;\n }\n map(fn) {\n return this.data.map(fn);\n }\n filter(fn) {\n return this.data.filter(fn);\n }\n reduce(fn, init) {\n return this.data.reduce(fn, init);\n }\n forEach(fn) {\n this.data.forEach(fn);\n }\n some(fn) {\n return this.data.some(fn);\n }\n [iterator]() {\n return getIterator(this.data, {\n dataIndex: this.skip,\n footers: this.groupFooters,\n groupIndex: this.skip\n });\n }\n toString() { return this.data.toString(); }\n}\n/**\n * @hidden\n */\nclass DataCollection {\n constructor(accessor) {\n this.accessor = accessor;\n }\n get total() { return this.accessor().total; }\n get length() { return this.accessor().data.length; }\n get first() { return this.accessor().data[0]; }\n get last() { return this.accessor().data[this.length - 1]; }\n at(index) {\n return itemAt(this.accessor().data, index);\n }\n map(fn) { return this.accessor().map(fn); }\n filter(fn) {\n return this.accessor().filter(fn);\n }\n reduce(fn, init) {\n return this.accessor().reduce(fn, init);\n }\n forEach(fn) {\n this.accessor().forEach(fn);\n }\n some(fn) {\n return this.accessor().some(fn);\n }\n [iterator]() {\n return this.accessor()[iterator]();\n }\n toString() { return this.accessor().toString(); }\n}\n\n/**\n * @hidden\n *\n * Quick look-up structure for combinations of keys.\n * Similar to the native JS Set, however, working with a couple of keys instead of with a single key.\n * Supports both primitive keys and object keys (compared by reference).\n */\nclass PairSet {\n constructor(items, keyXField, keyYField) {\n /**\n * Holds a set of Y keys for each defined X key.\n * Each X key creates a map which holds a set of Y keys.\n *\n * Map { 1 => Set { 1, 2, 3 } } // pairs: [1, 1], [1, 2], [1, 3]\n */\n this.keysX = new Map();\n /**\n * Count the each added or deleted key manually to avoid iterating over all items when calling `this.size`.\n */\n this.totalKeysCount = 0;\n if (items && keyXField && keyYField) {\n items.forEach(item => this.add(item[keyXField], item[keyYField]));\n }\n }\n /**\n * Gets the total number of X/Y key pairs.\n */\n get size() {\n return this.totalKeysCount;\n }\n /**\n * Adds a couple of items identified as a combination.\n */\n add(keyX, keyY) {\n if (!this.keysX.has(keyX)) {\n this.keysX.set(keyX, new Set());\n }\n if (!this.has(keyX, keyY)) {\n this.keysX.get(keyX).add(keyY);\n this.totalKeysCount += 1;\n }\n }\n /**\n * Adds a combination of a couple of items identified together.\n */\n delete(keyX, keyY) {\n if (this.has(keyX, keyY)) {\n this.keysX.get(keyX).delete(keyY);\n this.totalKeysCount -= 1;\n }\n }\n /**\n * Checks whether the defined combination is stored.\n */\n has(keyX, keyY) {\n return this.keysX.has(keyX) && this.keysX.get(keyX).has(keyY);\n }\n /**\n * Clears all key combinations.\n */\n clear() {\n this.keysX.clear();\n this.totalKeysCount = 0;\n }\n /**\n * Converts the persisted data structure to an array of objects,\n * using the provided field names for the object props.\n */\n toArray(keyXField, keyYField) {\n return Array.from(this.keysX).reduce((pairs, pair) => {\n // Array.from(mapInstance) returns an array of arrays [[itemKey1, columnKeysSet1], [itemKey2, columnKeysSet2]]\n const [keyX, keysY] = pair;\n Array.from(keysY).forEach(keyY => pairs.push({ [keyXField]: keyX, [keyYField]: keyY }));\n return pairs;\n }, []);\n }\n}\n\n/**\n * @hidden\n *\n * The Context service is used to provide common\n * services and DI tokens for a Grid instance.\n *\n * This keeps the constructor parameters stable\n * and a avoids dependency cycles between components.\n */\nclass ContextService {\n}\nContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass Selection {\n constructor(ctx, cd) {\n this.ctx = ctx;\n this.cd = cd;\n /**\n * Defines the collection that will store the selected item keys.\n */\n this.selectedKeys = [];\n /**\n * Fires when the `selectedKeys` collection has been updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.rowSelectionState = new Set();\n this.cellSelectionState = new PairSet();\n this.init();\n }\n get isCellSelectionMode() {\n return isPresent(this.ctx.grid.selectable) && this.ctx.grid.selectable['cell'];\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes.selectedKeys) && this.lastSelectionState !== this.selectedKeys) {\n this.setState(this.selectedKeys);\n }\n }\n init() {\n if (!isPresent(this.ctx.grid.rowSelected)) {\n this.ctx.grid.rowSelected = (row) => this.rowSelectionState.has(this.getItemKey(row));\n }\n if (!isPresent(this.ctx.grid.cellSelected)) {\n this.ctx.grid.cellSelected = (row, column, colIndex) => {\n const contender = this.getSelectionItem(row, column, colIndex);\n return {\n selected: this.cellSelectionState.has(contender.itemKey, contender.columnKey),\n item: contender\n };\n };\n }\n this.selectionChangeSubscription = this.ctx.grid\n .selectionChange\n .subscribe(this.onSelectionChange.bind(this));\n }\n /**\n * @hidden\n */\n destroy() {\n this.selectionChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n reset() {\n this.rowSelectionState.clear();\n this.cellSelectionState.clear();\n }\n getItemKey(row) {\n if (this.selectionKey) {\n if (typeof this.selectionKey === \"string\") {\n return row.dataItem[this.selectionKey];\n }\n if (typeof this.selectionKey === \"function\") {\n return this.selectionKey(row);\n }\n }\n return row.index;\n }\n getSelectionItem(row, col, colIndex) {\n const itemIdentifiers = {};\n itemIdentifiers.itemKey = this.getItemKey(row);\n if (!isPresent(col) && !isPresent(colIndex)) {\n return itemIdentifiers;\n }\n if (this.columnKey) {\n if (typeof this.columnKey === \"string\") {\n itemIdentifiers.columnKey = row.dataItem[this.columnKey];\n }\n if (typeof this.columnKey === \"function\") {\n itemIdentifiers.columnKey = this.columnKey(col, colIndex);\n }\n }\n return {\n itemKey: itemIdentifiers.itemKey,\n columnKey: itemIdentifiers.columnKey ? itemIdentifiers.columnKey : colIndex\n };\n }\n onSelectionChange(selection) {\n if (selection.selectedRows) {\n selection.deselectedRows.forEach((item) => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.delete(itemKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.rowSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedRows.forEach((item) => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.add(itemKey);\n });\n }\n else {\n selection.deselectedCells.forEach(({ itemKey, columnKey }) => {\n this.cellSelectionState.delete(itemKey, columnKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.cellSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedCells.forEach(({ itemKey, columnKey }) => {\n this.cellSelectionState.add(itemKey, columnKey);\n });\n }\n this.cd.markForCheck();\n this.notifyChange();\n }\n notifyChange() {\n this.lastSelectionState = this.stateToArray();\n this.selectedKeysChange.emit(this.lastSelectionState);\n }\n setState(selectedKeys) {\n this.reset();\n if (this.isCellSelectionMode) {\n this.cellSelectionState = new PairSet(selectedKeys, 'itemKey', 'columnKey');\n }\n else {\n this.rowSelectionState = new Set(selectedKeys);\n }\n }\n stateToArray() {\n return this.isCellSelectionMode ?\n this.cellSelectionState.toArray('itemKey', 'columnKey') :\n Array.from(this.rowSelectionState);\n }\n}\nSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Selection, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nSelection.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Selection, selector: \"kendo-grid-selection-base\", inputs: { selectedKeys: \"selectedKeys\", selectionKey: [\"kendoGridSelectBy\", \"selectionKey\"], columnKey: \"columnKey\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Selection, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-grid-selection-base'\n }]\n }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedKeys: [{\n type: Input\n }], selectionKey: [{\n type: Input,\n args: [\"kendoGridSelectBy\"]\n }], columnKey: [{\n type: Input\n }], selectedKeysChange: [{\n type: Output\n }] } });\n\nconst reset = (...lists) => {\n let diff = false;\n for (let idx = 0; idx < lists.length; idx++) {\n const [list, columns] = lists[idx];\n diff = diff || list.length !== columns.length;\n list.reset(columns);\n }\n return diff;\n};\n/**\n * @hidden\n */\nclass ColumnsContainer {\n constructor(columns) {\n this.columns = columns;\n this.allColumns = new QueryList();\n this.leafColumns = new QueryList();\n this.lockedColumns = new QueryList();\n this.nonLockedColumns = new QueryList();\n this.lockedLeafColumns = new QueryList();\n this.nonLockedLeafColumns = new QueryList();\n this.totalLevels = 0;\n this.changes = new EventEmitter();\n this.leafColumnsToRender = [];\n this.lockedColumnsToRender = [];\n this.nonLockedColumnsToRender = [];\n this.hasGroupHeaderColumn = false;\n this.hasGroupFooter = false;\n this.hasFooter = false;\n this.unlockedWidth = 0;\n }\n refresh() {\n const currentLevels = this.totalLevels;\n const leafColumns = new Array();\n const lockedLeafColumns = new Array();\n const nonLockedLeafColumns = new Array();\n const lockedColumns = new Array();\n const nonLockedColumns = new Array();\n const allColumns = new Array();\n const leafColumnsToRender = new Array();\n const lockedColumnsToRender = new Array();\n const nonLockedColumnsToRender = new Array();\n let hasGroupHeaderColumn = false;\n let hasGroupFooter = false;\n let hasFooter = false;\n let unlockedWidth = 0;\n let leafIndex = 0;\n this.totalLevels = 0;\n this.columns().forEach(column => {\n const containerLeafColumns = column.isLocked === true ? lockedLeafColumns : nonLockedLeafColumns;\n const containerColumns = column.isLocked === true ? lockedColumns : nonLockedColumns;\n const toRenderContainer = column.isLocked === true ? lockedColumnsToRender : nonLockedColumnsToRender;\n if (!isColumnGroupComponent(column)) {\n containerLeafColumns.push(column);\n leafColumns.push(column);\n leafColumnsToRender.push.apply(leafColumnsToRender, columnsToRender([column]));\n toRenderContainer.push.apply(toRenderContainer, columnsToRender([column]));\n hasGroupHeaderColumn = hasGroupHeaderColumn || someLeafColumn(leaf => Boolean(leaf.groupHeaderColumnTemplateRef), column);\n hasGroupFooter = hasGroupFooter || someLeafColumn(leaf => Boolean(leaf.groupFooterTemplateRef), column);\n hasFooter = hasFooter || someLeafColumn(leaf => Boolean(leaf.footerTemplateRef), column);\n if (!column.isLocked) {\n unlockedWidth += column.width || 0;\n }\n if (column.isSpanColumn) {\n column.childColumns.forEach(c => {\n c.leafIndex = leafIndex++;\n });\n }\n else {\n column.leafIndex = leafIndex++;\n }\n }\n containerColumns.push(column);\n allColumns.push(column);\n this.totalLevels = column.level > this.totalLevels ? column.level : this.totalLevels;\n });\n this.hasGroupHeaderColumn = hasGroupHeaderColumn;\n this.hasGroupFooter = hasGroupFooter;\n this.hasFooter = hasFooter;\n this.leafColumnsToRender = leafColumnsToRender;\n this.lockedColumnsToRender = lockedColumnsToRender;\n this.nonLockedColumnsToRender = nonLockedColumnsToRender;\n this.unlockedWidth = unlockedWidth;\n const changes = reset([this.leafColumns, leafColumns], [this.lockedLeafColumns, lockedLeafColumns], [this.nonLockedLeafColumns, nonLockedLeafColumns], [this.lockedColumns, lockedColumns], [this.allColumns, allColumns], [this.nonLockedColumns, nonLockedColumns]) || currentLevels !== this.totalLevels;\n if (changes) {\n this.changes.emit();\n }\n return changes;\n }\n}\n\nconst forEachColumn = (list, callback) => {\n list.forEach((column) => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachColumn(column.childrenArray, callback);\n }\n });\n};\nconst forEachLevel = (list, callback) => {\n sortColumns(list)\n .forEach((column) => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachLevel(column.childrenArray, callback);\n }\n });\n};\nconst filterHierarchy = (list, predicate) => {\n const result = [];\n sortColumns(list)\n .forEach((column) => {\n if (predicate(column)) {\n if (column.isColumnGroup) {\n const children = filterHierarchy(column.childrenArray, predicate);\n if (children.length) {\n result.push(column, ...children);\n }\n }\n else if (!column.isSpanColumn || filterHierarchy(column.childrenArray, predicate).length) {\n result.push(column);\n }\n }\n });\n return result;\n};\n/**\n * @hidden\n */\nclass ColumnList {\n constructor(columns) {\n this.columns = columns;\n }\n static empty() {\n return new ColumnList(new QueryList());\n }\n forEach(callback) {\n forEachColumn(this.columns, callback);\n }\n filter(callback) {\n const result = [];\n forEachColumn(this.columns, (column) => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n filterHierarchy(predicate) {\n return filterHierarchy(this.columns.toArray(), predicate);\n }\n filterSort(callback) {\n const result = [];\n forEachLevel(this.columns.toArray(), (column) => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n toArray() {\n const result = [];\n forEachColumn(this.columns, (column) => {\n result.push(column);\n });\n return result;\n }\n rootColumns() {\n return this.columns.toArray();\n }\n totalColumnLevels() {\n let totalLevels = 0;\n this.forEach(column => {\n totalLevels = Math.max(column.level, totalLevels);\n });\n return totalLevels;\n }\n}\n\n/**\n * @hidden\n */\nclass GroupInfoService {\n constructor() {\n this._columnList = ColumnList.empty;\n }\n get columns() {\n return expandColumns(this._columnList().toArray()).filter(isColumnComponent);\n }\n registerColumnsContainer(columns) {\n this._columnList = columns;\n }\n formatForGroup(item) {\n const column = this.columnForGroup(item);\n return column ? column.format : \"\";\n }\n isGroupable(groupField) {\n const [column] = this.columns.filter(x => x.field === groupField);\n return column ? column.groupable : true;\n }\n groupTitle(item) {\n const column = this.columnForGroup(item);\n return column ? (column.title || column.field) : this.groupField(item);\n }\n groupHeaderTemplate(item) {\n const column = this.columnForGroup(item);\n return column ? column.groupHeaderTemplateRef || column.groupHeaderColumnTemplateRef : undefined;\n }\n groupField(group) {\n return group.data ? group.data.field : group.field;\n }\n columnForGroup(group) {\n const field = this.groupField(group);\n const [column] = this.columns.filter(x => x.field === field);\n return column;\n }\n}\n\n/**\n * @hidden\n */\nclass ChangeNotificationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n }\n notify() {\n if (!this.subscription || this.subscription.closed) {\n this.subscription = this.ngZone.onStable\n .asObservable().pipe(take(1))\n .subscribe(() => this.changes.emit());\n }\n }\n}\nChangeNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nChangeNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the no-records template of the Grid. Provides an option to customize the\n * appearance of the item that is displayed when no data is present. To define the no-records template,\n * nest an `` tag with the `kendoGridNoRecordsTemplate` directive inside ``.\n *\n * > When the locked columns of the Grid are in use, the template is displayed in the non-locked part of the content.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * There are not products. Click here to refresh.\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data = [];\n * public refresh() {\n * this.data = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 3,\n * \"ProductName\": \"Aniseed Syrup\",\n * \"UnitPrice\": 10.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 2,\n * \"CategoryName\": \"Condiments\",\n * \"Description\": \"Sweet and savory sauces, relishes, spreads, and seasonings\"\n * }\n * }];\n *\n * }\n * }\n *\n * ```\n */\nclass NoRecordsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNoRecordsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoRecordsTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNoRecordsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NoRecordsTemplateDirective, selector: \"[kendoGridNoRecordsTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoRecordsTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridNoRecordsTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst set = value => pair => pair.forEach(x => x.style.height = value);\nconst clearHeight = pairs => pairs\n .filter(([left, right]) => left.style.height || right.style.height)\n .forEach(set(\"\"));\nconst zip = (arr1, arr2) => {\n const result = [];\n for (let idx = 0, len = arr1.length; idx < len; idx++) {\n if (!arr2[idx]) {\n break;\n }\n result.push([arr1[idx], arr2[idx]]);\n }\n return result;\n};\nconst setHeight$1 = heights => (row, idx) => set(`${heights[idx] + 1}px`)(row);\nconst getHeights = rows => rows.map(([left, right]) => {\n const height = left.offsetHeight;\n const offsetHeight2 = right.offsetHeight;\n if (height < offsetHeight2) {\n return offsetHeight2;\n }\n return height;\n});\n/**\n * @hidden\n */\nconst syncRowsHeight = (table1, table2) => {\n const activeElement = document.activeElement;\n const rows = zip(table1.rows, table2.rows);\n clearHeight(rows);\n const heights = getHeights(rows);\n [table1, table2].forEach(x => x.style.display = 'none');\n rows.forEach(setHeight$1(heights));\n [table1, table2].forEach(x => x.style.display = '');\n if (document.activeElement !== activeElement &&\n (table1.contains(activeElement) || table2.contains(activeElement))) {\n activeElement.focus();\n }\n};\n\n/**\n * @hidden\n */\nclass MenuTabbingService {\n constructor() {\n this.isColumnMenu = false;\n this.isPopupOpen = false;\n }\n}\nMenuTabbingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMenuTabbingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents a service to set the filter descriptor\n * ([see example]({% slug reusablecustomfilters_grid %})).\n */\nclass FilterService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * Fires when the filter descriptors is set.\n */\n this.changes = new Subject();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Sets the filter descriptor.\n *\n * @param {CompositeFilterDescriptor} value - The filter descriptor that will be set.\n */\n filter(value) {\n this.changes.next(value);\n }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService, deps: [{ token: MenuTabbingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: MenuTabbingService, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager\n * template, nest an `` tag with the `kendoPagerTemplate` directive inside ``.\n *\n * The template context provides the following fields:\n * * `currentPage`—The index of the displayed page.\n * * `pageSize`—The value of the current `pageSize`.\n * * `skip`—The current skip value.\n * * `total`—The total number of records.\n * * `totalPages`—The total number of available pages.\n * * Needs to be provided as an input to inner pager components used within the template when the Grid is navigable.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * Current page: {{currentPage}}\n * \n *\n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass PagerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPagerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPagerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerTemplateDirective, selector: \"[kendoPagerTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPagerTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PDFService {\n constructor() {\n this.savePDF = new EventEmitter();\n this.drawPDF = new EventEmitter();\n this.exportClick = new EventEmitter();\n this.dataChanged = new EventEmitter();\n }\n save(component) {\n this.emitEvent(this.savePDF, component);\n }\n draw(component, promise) {\n this.emitEvent(this.drawPDF, { component, promise });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (emitter.observers.length === 0) {\n if (isDevMode()) {\n throw new Error('Creating PDF requires including the PDFModule and adding the component.');\n }\n }\n else {\n emitter.emit(args);\n }\n }\n}\nPDFService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPDFService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Arguments for the `pdfExport` event.\n */\nclass PDFExportEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n super();\n }\n}\n\n/**\n * @hidden\n */\nclass SuspendService {\n constructor() {\n this.scroll = false;\n }\n}\nSuspendService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSuspendService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService, decorators: [{\n type: Injectable\n }] });\n\nconst bootstrapToMedia = (media) => (({\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n})[media] || media);\nconst browserMatchMedia = (media) => window.matchMedia(media).matches;\n/**\n * @hidden\n */\nclass ResponsiveService {\n constructor() {\n /**\n * @hidden\n */\n this.matchMedia = browserMatchMedia;\n }\n /**\n * @hidden\n */\n matchesMedia(media) {\n return !media || this.matchMedia(bootstrapToMedia(media));\n }\n}\nResponsiveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nResponsiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ExcelService {\n constructor() {\n this.saveToExcel = new EventEmitter();\n this.exportClick = new EventEmitter();\n }\n save(component) {\n if (this.saveToExcel.observers.length === 0) {\n if (isDevMode()) {\n throw new Error('Saving excel requires including the ExcelModule and adding the component.');\n }\n }\n else {\n this.saveToExcel.emit(component);\n }\n }\n}\nExcelService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExcelService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents the toolbar template of the Grid.\n *\n * The template context has the following field:\n * - `position`—The position at which the toolbar template is rendered. The possible values are \"top\" and \"bottom\".\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n * \n *
    \n * \n *
    \n *
    \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public position: 'top' | 'bottom' | 'both' = 'top';\n *\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n *\n * public onClick(): void {\n * console.log(\"button was clicked\");\n * }\n *\n * public positionChange({ target }): void {\n * this.position = target.value;\n * }\n * }\n *\n * ```\n */\nclass ToolbarTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._position = \"top\";\n }\n /**\n * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).\n *\n * The possible values are:\n * - `top`—Positions the toolbar above the group panel or header.\n * - `bottom`—Positions the toolbar below the pager.\n * - `both`—Displays two toolbar instances. Positions the first one above\n * the group panel or header and the second one below the pager.\n */\n set position(position) {\n this._position = position;\n }\n get position() {\n return this._position;\n }\n}\nToolbarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarTemplateDirective, selector: \"[kendoGridToolbarTemplate]\", inputs: { position: \"position\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridToolbarTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { position: [{\n type: Input,\n args: [\"position\"]\n }] } });\n\n/**\n * @hidden\n */\nclass ScrollSyncService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new Subject();\n this.elements = [];\n this.subscriptions = new Subscription();\n this.headerSubscription = new Subscription();\n this.bodySubscription = new Subscription();\n this.subscriptions.add(this.changes.subscribe(args => this.scrollLeft(args)));\n }\n registerEmitter(el, sourceType) {\n this.unregister(sourceType);\n this.elements.push({ element: el, sourceType });\n if (sourceType === \"body\" || sourceType === \"header\") {\n this.ngZone.runOutsideAngular(() => {\n const obs = fromEvent(el, \"scroll\").pipe(map(({ target: { scrollLeft } }) => ({\n scrollLeft,\n sourceType\n })));\n const subscription = obs.pipe(distinctUntilChanged((x, y) => (x.scrollLeft === y.scrollLeft)), filter(x => !this.source || this.source === x.sourceType), tap(x => this.source = x.sourceType))\n .subscribe((x) => this.changes.next(x));\n subscription.add(obs.pipe(filter(x => this.source && this.source !== x.sourceType))\n .subscribe(() => this.source = undefined));\n if (sourceType === \"body\") {\n this.bodySubscription.add(subscription);\n }\n else {\n this.headerSubscription.add(subscription);\n }\n });\n }\n }\n /**\n * destroy\n */\n destroy() {\n this.subscriptions.unsubscribe();\n this.headerSubscription.unsubscribe();\n this.bodySubscription.unsubscribe();\n }\n scrollLeft({ scrollLeft, sourceType }) {\n this.ngZone.runOutsideAngular(() => {\n this.elements\n .filter(x => sourceType !== x.sourceType)\n .forEach(({ element }) => element.scrollLeft = scrollLeft);\n });\n }\n unregister(sourceType) {\n const index = this.elements.findIndex(x => x.sourceType === sourceType);\n if (index > -1) {\n if (sourceType === \"header\") {\n this.headerSubscription.unsubscribe();\n this.headerSubscription = new Subscription();\n }\n else if (sourceType === \"body\") {\n this.bodySubscription.unsubscribe();\n this.bodySubscription = new Subscription();\n }\n this.elements.splice(index, 1);\n }\n }\n}\nScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor() {\n this.resizeSubscription = new Subscription(() => { });\n this.dispatcher = new Subject();\n this.changes = this.dispatcher.asObservable().pipe(throttleTime(100));\n }\n connect(resizes) {\n this.resizeSubscription.add(resizes.subscribe(this.dispatcher));\n }\n destroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst isLocked = column => column.parent ? isLocked(column.parent) : !!column.locked;\n/**\n * @hidden\n */\nconst resizeArgs = (column, extra) => Object.assign({\n columns: leafColumns([column]),\n locked: isLocked(column)\n}, extra);\n/**\n * @hidden\n */\nclass ColumnResizingService {\n constructor() {\n this.changes = new EventEmitter();\n this.tables = [];\n this.batch = null;\n }\n start(column) {\n this.trackColumns(column);\n const columns = (this.column.isColumnGroup ? [column] : [])\n .concat(leafColumns([column]));\n this.changes.emit({\n columns: columns,\n locked: isLocked(this.column),\n type: 'start'\n });\n }\n resizeColumns(deltaPercent) {\n const action = resizeArgs(this.column, {\n deltaPercent,\n type: 'resizeColumn'\n });\n this.changes.emit(action);\n }\n resizeTable(column, delta) {\n const action = resizeArgs(column, {\n delta,\n type: 'resizeTable'\n });\n this.changes.emit(action);\n }\n resizedColumn(state) {\n this.resizedColumns.push(state);\n }\n end() {\n this.changes.emit({\n columns: [],\n resizedColumns: this.resizedColumns,\n type: 'end'\n });\n }\n registerTable(tableMetadata) {\n this.tables.push(tableMetadata);\n const unregisterTable = () => {\n this.tables.splice(this.tables.indexOf(tableMetadata), 1);\n };\n return unregisterTable;\n }\n measureColumns(info) {\n if (this.batch !== null) {\n this.batch.push(...info);\n }\n else {\n this.autoFitBatch(info, () => this.end());\n }\n }\n autoFit(...columns) {\n const nonLockedColumns = columns.filter(column => !column.isLocked);\n this.autoFitStart(nonLockedColumns);\n this.autoFitBatch(this.batch, () => {\n if (nonLockedColumns.length < columns.length) {\n const lockedColumns = columns.filter(column => column.isLocked);\n this.autoFitStart(lockedColumns);\n this.autoFitBatch(this.batch, () => this.end());\n }\n else {\n this.end();\n }\n });\n }\n trackColumns(column) {\n this.resizedColumns = [];\n this.column = column;\n }\n autoFitStart(columns) {\n this.batch = [];\n this.resizedColumns = [];\n if (columns.length === 0) {\n return;\n }\n const locked = columns[0].isLocked;\n this.changes.emit({\n type: 'start',\n columns,\n locked\n });\n this.changes.emit({\n type: 'triggerAutoFit',\n columns,\n locked\n });\n }\n autoFitBatch(info, onComplete) {\n const locked = info.length > 0 ? info[0].column.isLocked : false;\n const observables = this.tables\n .filter(table => table.locked === locked)\n .map(table => table.autoFit(info));\n zip$1(...observables)\n .pipe(take(1))\n .subscribe(widths => {\n this.changes.emit({\n columns: info.map(i => i.column),\n type: 'autoFitComplete',\n widths,\n locked\n });\n if (onComplete) {\n onComplete();\n }\n });\n this.batch = null;\n }\n}\nColumnResizingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnResizingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst isFilterable = (settings) => settings !== false;\n/**\n * @hidden\n */\nconst hasFilterMenu = (settings) => typeof settings === 'string' && settings.indexOf('menu') > -1;\n/**\n * @hidden\n */\nconst hasFilterRow = (settings) => settings === true || (typeof settings === 'string' && settings.indexOf('row') > -1);\n\nconst contains$1 = (node, predicate) => {\n while (node) {\n if (predicate(node)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n};\n/**\n * Arguments for the `close` event of the filter and column-menu popup.\n */\nclass PopupCloseEvent extends PreventableEvent {\n constructor(e) {\n super();\n this.originalEvent = e;\n }\n}\nconst DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';\n/**\n * The service that is used for the popups of the filter and column menus\n * ([see example]({% slug reusablecustomfilters_grid %}#toc-filter-menu-with-popup)).\n */\nclass SinglePopupService {\n constructor(popupService, renderer, ngZone, scrollSyncService, localization) {\n this.popupService = popupService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localization = localization;\n /**\n * Fires when the filter or column menus are about to close because the user clicked outside their popups.\n * Used to prevent the popup from closing.\n */\n this.onClose = new Subject();\n this.scrollSubscription = scrollSyncService.changes.subscribe(() => this.destroy());\n }\n /**\n * @hidden\n */\n open(anchor, template, popupRef, popupClass = DEFAULT_POPUP_CLASS) {\n const toggle = isPresent(popupRef) && this.popupRef === popupRef;\n this.destroy();\n if (!toggle) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction },\n anchor: anchor,\n popupClass: popupClass,\n content: template,\n positionMode: \"absolute\"\n });\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.localization.rtl ? 'rtl' : 'ltr');\n this.attachClose(anchor);\n }\n return this.popupRef;\n }\n /**\n * @hidden\n */\n destroy() {\n if (this.popupRef) {\n this.detachClose();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n ngOnDestroy() {\n this.destroy();\n this.scrollSubscription.unsubscribe();\n }\n detachClose() {\n if (this.removeClick) {\n this.removeClick();\n }\n }\n attachClose(skipElement) {\n this.detachClose();\n this.ngZone.runOutsideAngular(() => this.removeClick = this.renderer.listen(\"document\", \"click\", (e) => {\n if (!contains$1(e.target, x => this.popupRef.popupElement === x || x === skipElement)) {\n const args = new PopupCloseEvent(e);\n this.onClose.next(args);\n if (!args.isDefaultPrevented()) {\n this.destroy();\n }\n }\n }));\n }\n}\nSinglePopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService, deps: [{ token: i1$2.PopupService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nSinglePopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$2.PopupService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: i1.LocalizationService }]; } });\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst append = (element) => {\n let appended = false;\n return () => {\n if (!appended) {\n document.body.appendChild(element);\n appended = true;\n }\n return element;\n };\n};\n/**\n * @hidden\n */\nconst getDocument = element => element.ownerDocument.documentElement;\n/**\n * @hidden\n */\nconst getWindow = element => element.ownerDocument.defaultView;\n/**\n * @hidden\n */\nconst offset = element => {\n const { clientTop, clientLeft } = getDocument(element);\n const { pageYOffset, pageXOffset } = getWindow(element);\n const { top, left } = element.getBoundingClientRect();\n return {\n top: top + pageYOffset - clientTop,\n left: left + pageXOffset - clientLeft\n };\n};\n/**\n * @hidden\n * If the target is before the draggable element, returns `true`.\n *\n * DOCUMENT_POSITION_FOLLOWING = 4\n */\nconst isTargetBefore = (draggable, target) => (target.compareDocumentPosition(draggable) & 4) !== 0;\n/**\n * @hidden\n * If the container and the element are the same\n * or if the container holds (contains) the element, returns `true`.\n *\n * DOCUMENT_POSITION_CONTAINED_BY = 16\n */\nconst contains = (element, container) => element === container ||\n (container.compareDocumentPosition(element) & 16) !== 0;\n/**\n * @hidden\n */\nconst position = (target, before) => {\n const targetRect = offset(target);\n const { offsetWidth, offsetHeight } = target;\n const left = targetRect.left + (before ? 0 : offsetWidth);\n const top = targetRect.top;\n const height = offsetHeight;\n return { left, top, height };\n};\n\n/**\n * @hidden\n */\nclass DragAndDropService {\n constructor() {\n this.changes = new EventEmitter();\n this.register = [];\n this.lastTarget = null;\n }\n add(target) {\n this.register.push(target);\n }\n remove(target) {\n this.register = this.register.filter(current => current !== target);\n }\n notifyDrag(draggable, element, mouseEvent) {\n const target = this.targetFor(element);\n if (this.lastTarget === target) {\n return;\n }\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'leave'\n });\n if (target) {\n this.changes.next({\n draggable,\n mouseEvent,\n target,\n type: 'enter'\n });\n }\n this.lastTarget = target;\n }\n notifyDrop(draggable, mouseEvent) {\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'drop'\n });\n this.lastTarget = null;\n }\n targetFor(element) {\n const comparer = contains.bind(null, element);\n return this.register.find(({ element: { nativeElement } }) => comparer(nativeElement));\n }\n}\nDragAndDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragAndDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService, decorators: [{\n type: Injectable\n }] });\n\nconst updateClass = (element, valid) => {\n const icon = element.querySelector('.k-icon');\n icon.className = icon.className\n .replace(/(plus|cancel)/, valid ? 'plus' : 'cancel');\n};\nconst updateLock = (element, locked = null) => {\n const icon = element.querySelectorAll('.k-icon')[1];\n const value = locked === null ? '' : (locked ? 'k-i-lock' : 'k-i-unlock');\n icon.className = icon.className\n .replace(/(k-i-unlock|k-i-lock)/, '') + ` ${value}`;\n};\nconst decorate = (element) => {\n element.className = 'k-header k-drag-clue';\n element.style.position = 'absolute';\n element.style.zIndex = '20000';\n};\n/**\n * @hidden\n */\nclass DragHintService {\n constructor(santizer) {\n this.santizer = santizer;\n }\n create(title) {\n this.dom = document.createElement(\"div\");\n decorate(this.dom);\n const safeTitle = this.santizer.sanitize(SecurityContext.HTML, title);\n this.dom.innerHTML = `\n \n \n \n ${safeTitle}\n `;\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentNode) {\n (function (el) {\n setTimeout(() => document.body.removeChild(el));\n })(this.dom); // hack for IE + pointer events!\n this.dom = null;\n }\n }\n show() {\n this.dom.style.display = \"\";\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n enable() {\n updateClass(this.dom, true);\n }\n disable() {\n updateClass(this.dom, false);\n }\n removeLock() {\n updateLock(this.dom);\n }\n toggleLock(locked) {\n updateLock(this.dom, locked);\n }\n move(move) {\n this.dom.style.top = move.pageY + 'px';\n this.dom.style.left = move.pageX + 'px';\n }\n}\nDragHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });\nDragHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }]; } });\n\n/**\n * @hidden\n */\nclass DropCueService {\n create() {\n this.dom = document.createElement(\"div\");\n this.dom.className = 'k-grouping-dropclue';\n this.hide();\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentElement) {\n document.body.removeChild(this.dom);\n this.dom = null;\n }\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n position({ left, top, height }) {\n this.dom.style.display = 'block';\n this.dom.style.height = height + 'px';\n this.dom.style.top = top + 'px';\n const width = this.dom.offsetWidth / 2;\n this.dom.style.left = left - width + 'px';\n }\n}\nDropCueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropCueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ColumnReorderService {\n constructor() {\n this.changes = new EventEmitter();\n }\n reorder(e) {\n this.changes.emit(e);\n }\n}\nColumnReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Arguments for the `columnReorder` event.\n */\nclass ColumnReorderEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor({ column, newIndex, oldIndex }) {\n super();\n this.column = column;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationMetadata {\n constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns) {\n this.dataRows = dataRows;\n this.headerRows = headerRows;\n this.isVirtual = isVirtual;\n this.hasPager = hasPager;\n this.hasDetailTemplate = hasDetailTemplate;\n this.gridElement = gridElement;\n this.virtualColumns = virtualColumns;\n this.columns = columns;\n }\n get maxLogicalRowIndex() {\n const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;\n return this.headerRows + dataRows - 1;\n }\n}\n\nconst NO_STICKY = { left: '0px', right: '0px' };\n/**\n * @hidden\n */\nclass ColumnInfoService {\n constructor() {\n this.visibilityChange = new EventEmitter();\n this.lockedChange = new EventEmitter();\n this.stickyChange = new EventEmitter();\n this.columnRangeChange = new EventEmitter();\n this.columnsContainer = new ColumnsContainer(() => []);\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n get totalLevels() {\n return this.columnsContainer.totalLevels;\n }\n get hiddenColumns() {\n if (!this.list) {\n return [];\n }\n return this.list().filter(column => !column.isVisible);\n }\n get leafNamedColumns() {\n const columns = expandColumns(this.list().filterSort(column => !column.isColumnGroup))\n .filter(column => column.matchesMedia && column.displayTitle);\n return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);\n }\n get unlockedRootCount() {\n return this.list().rootColumns().filter(column => !column.locked && column.isVisible).length;\n }\n stickyColumnsStyles(column) {\n if (!this.stickyColumns) {\n this.stickyColumns = this.list().rootColumns().filter(column => column.sticky && !column.locked && column.isVisible);\n }\n if (this.stickyColumns.length === 0) {\n return NO_STICKY;\n }\n const result = this.stickyColumns.reduce((acc, curr) => {\n if (curr.leafIndex < column.leafIndex) {\n acc.left += curr.width;\n }\n else if (curr.leafIndex > column.leafIndex) {\n acc.right += curr.width;\n }\n return acc;\n }, { left: 0, right: 0 });\n return {\n left: `${result.left}px`,\n right: `${result.right}px`\n };\n }\n init(columns, list) {\n this.columnsContainer = columns;\n this.list = list;\n this.stickyColumns = null;\n }\n changeVisibility(columns) {\n this.stickyColumns = null;\n this.visibilityChange.emit(columns);\n }\n changeLocked(columns) {\n this.stickyColumns = null;\n this.lockedChange.emit(columns);\n }\n changeStuck(columns) {\n this.stickyColumns = null;\n this.stickyChange.emit(columns);\n }\n}\nColumnInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SortService {\n constructor() {\n this.changes = new Subject();\n }\n sort(value) {\n this.changes.next(value);\n }\n}\n\n/**\n * Arguments for the `columnVisibilityChange` event.\n */\nclass ColumnVisibilityChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Arguments for the `columnLockedChange` event.\n */\nclass ColumnLockedChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * @hidden\n */\nconst GROUP_CELL_WIDTH = 32; // this should be the value of group-cell inside the theme!\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_LARGE = 768;\n\n/**\n * @hidden\n */\nfunction defaultTrackBy(index, item) {\n if (item.type === 'data' && item.isEditing) {\n return item.data;\n }\n return index;\n}\n\n/**\n * Arguments for the `columnStickyChange` event.\n */\nclass ColumnStickyChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the\n * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,\n * nest an `` tag with the `kendoGridCellLoadingTemplate` directive inside `` ([see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton)).\n *\n * The template context is set to the current column, and utilizes the `let-x` syntax—for example, `let-column`.\n *\n * @example\n * ```ts-no-run\n * \n * \n * ...\n * \n * \n * ```\n */\nclass CellLoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellLoadingTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellLoadingTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCellLoadingTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellLoadingTemplateDirective, selector: \"[kendoGridCellLoadingTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellLoadingTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellLoadingTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Creates a loading template that overrides the default loading indicator of the Grid Component.\n * To define a loading template, nest an `` tag with the `kendoGridLoadingTemplate` directive inside the `` tag\n * [see example]({% slug databinding_grid %}#toc-loading-template).\n */\nclass LoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLoadingTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nLoadingTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingTemplateDirective, selector: \"[kendoGridLoadingTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridLoadingTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass ToolbarComponent {\n constructor(ctx) {\n this.ctx = ctx;\n this.context = {};\n }\n set position(value) {\n this.context.position = value;\n }\n get toolbarTemplateRef() {\n return this.ctx.grid.toolbarTemplate ? this.ctx.grid.toolbarTemplate.templateRef : undefined;\n }\n}\nToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, deps: [{ token: ContextService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarComponent, selector: \"kendo-grid-toolbar\", inputs: { position: \"position\" }, ngImport: i0, template: `\n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-toolbar',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ContextService }]; }, propDecorators: { position: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({ buttonCount = 10, info = true, type = 'numeric', pageSizes = false, previousNext = true, responsive = true, position = 'bottom' }) => ({\n buttonCount,\n info,\n pageSizes: pageSizes === true ? [5, 10, 20] : pageSizes,\n previousNext,\n type,\n responsive,\n position\n});\n/**\n * @hidden\n */\nconst normalize$1 = (settings) => normalizeSettings(settings === true ? {} : settings);\n\n/**\n * @hidden\n */\nclass FocusGroup {\n constructor(root) {\n this.root = root;\n this.active = true;\n this.children = [];\n this.root.registerGroup(this);\n }\n get focusableChildren() {\n return this.children.filter(el => el.canFocus());\n }\n get isActive() {\n return this.active;\n }\n ngOnDestroy() {\n this.root.unregisterGroup(this);\n }\n registerElement(element) {\n this.unregisterElement(element);\n this.children.push(element);\n }\n unregisterElement(element) {\n this.children = this.children.filter(f => f !== element);\n }\n /**\n * Returns a Boolean value which indicates if the group will receive focus when the cell is focused.\n * Requires a single \"simple\" focusable element such as a button or a checkbox.\n */\n isNavigable() {\n const focusable = this.focusableChildren;\n return focusable.length === 1 && focusable[0].isNavigable();\n }\n canFocus() {\n return this.focusableChildren.length > 0;\n }\n focus() {\n if (this.canFocus() && !this.hasFocus()) {\n this.focusableChildren[0].focus();\n }\n }\n activate() {\n this.toggleState(true);\n }\n deactivate() {\n this.toggleState(false);\n }\n hasFocus() {\n return this.children.reduce((focused, element) => focused || element.hasFocus(), false);\n }\n toggleState(active) {\n if (this.active !== active) {\n this.active = active;\n this.children.forEach(f => f.toggle(active));\n }\n }\n}\nFocusGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup, deps: [{ token: FocusRoot }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusGroup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: FocusRoot }]; } });\n\n/**\n * @hidden\n */\nclass PagerElementComponent {\n constructor(localization, pagerContext, cd) {\n this.localization = localization;\n this.pagerContext = pagerContext;\n this.cd = cd;\n this.total = this.pagerContext.total;\n this.skip = this.pagerContext.skip;\n this.pageSize = this.pagerContext.pageSize;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n /**\n * @hidden\n *\n * @param {string} key\n * @returns {string}\n *\n * @memberOf PagerElementComponent\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n *\n * @param {number} page\n *\n * @memberOf PagerElementComponent\n */\n changePage(page) {\n this.pagerContext.changePage(page);\n return false;\n }\n /**\n * @hidden\n *\n * @memberOf PagerElementComponent\n */\n ngOnInit() {\n this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n}\nPagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nPagerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerElementComponent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Displays buttons for navigating to the first and to the previous page ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerPrevButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd, navigationService) {\n super(localization, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerPrevButtonsComponent\n */\n get disabled() {\n return this.currentPage === 1 || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPrevButtonsComponent, selector: \"kendo-pager-prev-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-prev-buttons',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });\n\n/**\n * Displays numeric buttons to enable navigation between the pages.\n */\nclass PagerNumericButtonsComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.numbersWrapClass = true;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number[]}\n * @memberOf PagerNumericButtonsComponent\n */\n get buttons() {\n let result = [];\n for (let idx = this.start; idx <= this.end; idx++) {\n result.push(idx);\n }\n return result;\n }\n /**\n * @hidden\n */\n get end() {\n return Math.min((this.start + this.buttonCount) - 1, this.totalPages);\n }\n /**\n * @hidden\n */\n get start() {\n const page = this.currentPage;\n const buttonCount = this.buttonCount;\n if (page > buttonCount) {\n const reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n }\n /**\n * @hidden\n */\n pageLabel(num) {\n const pageText = this.textFor('pagerPage');\n if (pageText) {\n return pageText + ' ' + num;\n }\n return num.toString();\n }\n /**\n * @hidden\n */\n onSelectChange(e) {\n const target = e.target;\n const valueAsNumber = Number(target.value);\n if (!Number.isNaN(valueAsNumber)) {\n this.changePage(valueAsNumber - 1);\n }\n else {\n if (target.value === 'previousButtons') {\n this.changePage(this.start - 2);\n }\n else {\n this.changePage(this.end);\n }\n }\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNumericButtonsComponent, selector: \"kendo-pager-numeric-buttons\", inputs: { buttonCount: \"buttonCount\" }, host: { properties: { \"class.k-pager-numbers-wrap\": \"this.numbersWrapClass\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n
      \n
    • 1\">\n ...\n
    • \n
    • \n \n {{num}}\n \n
    • \n
    • \n ...\n
    • \n
    \n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-numeric-buttons',\n template: `\n \n \n \n \n \n
      \n
    • 1\">\n ...\n
    • \n
    • \n \n {{num}}\n \n
    • \n
    • \n ...\n
    • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { numbersWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-numbers-wrap']\n }], buttonCount: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PagerInputDirective {\n constructor(host, renderer) {\n this.host = host;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n const inputElement = this.host.numericInput.nativeElement;\n this.renderer.addClass(inputElement, 'k-pager-nav');\n }\n}\nPagerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputDirective, deps: [{ token: i4$1.NumericTextBoxComponent }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nPagerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInputDirective, selector: \"[kendoGridPagerInput]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerInput]' }]\n }], ctorParameters: function () { return [{ type: i4$1.NumericTextBoxComponent }, { type: i0.Renderer2 }]; } });\n\n/**\n * Displays an input element which allows the typing and rendering of page numbers.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n *\n *
    \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass PagerInputComponent extends PagerElementComponent {\n constructor(localization, pagerContext, zone, navigationService, cd) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.zone = zone;\n this.navigationService = navigationService;\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleKeyDown = (event) => {\n let incomingValue = this.numericInput.value || this.current;\n if (event.keyCode === Keys.Enter) {\n event.preventDefault();\n if (incomingValue !== this.current) {\n this.zone.run(() => {\n this.changePage(incomingValue - 1);\n });\n }\n }\n };\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleBlur = () => {\n const inputValue = this.numericInput.value;\n if (!inputValue) {\n this.numericInput.writeValue(this.current);\n return;\n }\n if (inputValue !== this.current) {\n this.zone.run(() => {\n this.changePage(inputValue - 1);\n });\n }\n };\n }\n /**\n * @hidden\n */\n get current() {\n return this.hasPages ? this.currentPage : 0;\n }\n get hasPages() {\n return this.totalPages !== 0;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: NavigationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInputComponent, selector: \"kendo-pager-input\", viewQueries: [{ propertyName: \"numericInput\", first: true, predicate: NumericTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{textFor('pagerPage')}}\n \n \n {{textFor('pagerOf')}} {{totalPages}}\n \n `, isInline: true, components: [{ type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: PagerInputDirective, selector: \"[kendoGridPagerInput]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i1$1.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager-input',\n template: `\n \n {{textFor('pagerPage')}}\n \n \n {{textFor('pagerOf')}} {{totalPages}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: NavigationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { numericInput: [{\n type: ViewChild,\n args: [NumericTextBoxComponent, { static: false }]\n }] } });\n\n/**\n * Displays buttons for navigating to the next and to the last page ([see example]({% slug paging_grid %}#toc-pager-template)).\n */\nclass PagerNextButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd, navigationService) {\n super(localization, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerNextButtonsComponent\n */\n get disabled() {\n return this.currentPage === this.totalPages || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerNextButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNextButtonsComponent, selector: \"kendo-pager-next-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-next-buttons',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });\n\n// eslint-disable no-access-missing-member\n/**\n * Displays information about the current page and the total number of records ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerInfoComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get maxItems() {\n return Math.min(this.currentPage * this.pageSize, this.total);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get currentPageText() {\n return this.total ?\n (this.currentPage - 1) * this.pageSize + 1 :\n 0;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerInfoComponent\n */\n get classes() {\n return true;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInfoComponent, selector: \"kendo-pager-info\", host: { properties: { \"class.k-pager-info\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-info',\n template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{\n type: HostBinding,\n args: [\"class.k-pager-info\"]\n }, {\n type: HostBinding,\n args: [\"class.k-label\"]\n }] } });\n\n/**\n * @hidden\n */\nclass PagerDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = (e) => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n}\nPagerDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });\nPagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerDropDownListDirective, selector: \"[kendoGridPagerDropDown]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerDropDownListDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerDropDown]' }]\n }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });\n\n/**\n * Displays a drop-down list for the page size selection ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerPageSizesComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext, navigationService) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this._pageSizes = [];\n }\n /**\n * The page sizes collection. Can be an Array of numbers and/or PageSizeItem objects.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * public pageSize = 2;\n * public pagesizes = [{text: 'One', value: 1}, {text: 'Two', value: 2}, {text: 'All', value : 'all'}];\n * }\n *\n * const products = [{\n * 'ProductID' : 1,\n * 'ProductName' : \"Chai\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"10 boxes x 20 bags\",\n * 'UnitPrice' : 18.0000,\n * 'UnitsInStock' : 39,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 10,\n * 'Discontinued' : false\n *\n * }, {\n * 'ProductID' : 2,\n * 'ProductName' : \"Chang\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"24 - 12 oz bottles\",\n * 'UnitPrice' : 19.0000,\n * 'UnitsInStock' : 17,\n * 'UnitsOnOrder' : 40,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 3,\n * 'ProductName' : \"Aniseed Syrup\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 550 ml bottles\",\n * 'UnitPrice' : 10.0000,\n * 'UnitsInStock' : 13,\n * 'UnitsOnOrder' : 70,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 4,\n * 'ProductName' : \"Chef Anton\\'s Cajun Seasoning\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"48 - 6 oz jars\",\n * 'UnitPrice' : 22.0000,\n * 'UnitsInStock' : 53,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 5,\n * 'ProductName' : \"Chef Anton\\'s Gumbo Mix\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"36 boxes\",\n * 'UnitPrice' : 21.3500,\n * 'UnitsInStock' : 0,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : true\n * }, {\n * 'ProductID' : 6,\n * 'ProductName' : \"Grandma\\'s Boysenberry Spread\",\n * 'SupplierID' : 3,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 8 oz jars\",\n * 'UnitPrice' : 25.0000,\n * 'UnitsInStock' : 120,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }];\n * ```\n */\n set pageSizes(pageSizes) {\n let normalizedItems = [];\n pageSizes.forEach(item => {\n if (typeof item === 'number') {\n normalizedItems.push({\n text: item.toString(),\n value: item\n });\n }\n else {\n normalizedItems.push(item);\n }\n });\n if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {\n normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];\n }\n this._pageSizes = normalizedItems;\n }\n get pageSizes() {\n return this._pageSizes;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get classes() {\n return true;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get showInitialPageSize() {\n return this.pageSizes\n .filter(item => {\n if (typeof item.value === 'number') {\n return item.value === Number(this.pageSize);\n }\n return this.total === Number(this.pageSize);\n })\n .length === 0;\n }\n /**\n * @hidden\n */\n pageSizeChange(value) {\n this.pageSize = typeof value === 'number' ? value : this.total;\n this.pagerContext.changePageSize(this.pageSize);\n }\n /**\n * @hidden\n */\n getValue(page) {\n return typeof page.value === 'number' ? page.value : this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;\n this.cd.markForCheck();\n }\n}\nPagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPageSizesComponent, selector: \"kendo-pager-page-sizes\", inputs: { pageSizes: \"pageSizes\" }, host: { properties: { \"class.k-pager-sizes\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }, { type: i5.LabelComponent, selector: \"kendo-label\", inputs: [\"text\", \"for\", \"optional\"], exportAs: [\"kendoLabel\"] }], directives: [{ type: PagerDropDownListDirective, selector: \"[kendoGridPagerDropDown]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-page-sizes',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{\n type: Input\n }], classes: [{\n type: HostBinding,\n args: ['class.k-pager-sizes']\n }, {\n type: HostBinding,\n args: ['class.k-label']\n }] } });\n\n/**\n * @hidden\n */\nclass PagerComponent {\n constructor(pagerContext, navigationService, element, renderer, zone, localizationService, cellContext, focusRoot, focusGroup) {\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.localizationService = localizationService;\n this.cellContext = cellContext;\n this.focusRoot = focusRoot;\n this.focusGroup = focusGroup;\n this.total = 0;\n this.skip = 1;\n this.pageChange = new EventEmitter();\n this.pagerWrapClass = true;\n this.gridPagerClass = true;\n this.settings = normalize$1({});\n this.subscriptions = new Subscription();\n this._templateContext = {};\n this._isFocused = false;\n this.resizeHandler = () => {\n const element = this.element.nativeElement;\n if (this.template || !element) {\n return;\n }\n const width = element.offsetWidth;\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n this.renderer.removeClass(element, 'k-pager-md');\n this.renderer.addClass(element, 'k-pager-sm');\n }\n else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n this.renderer.addClass(element, 'k-pager-md');\n this.renderer.removeClass(element, 'k-pager-sm');\n }\n else {\n this.clearResponsiveClasses();\n }\n };\n }\n set options(value) {\n this.settings = normalize$1(value);\n }\n get isFocused() {\n return this._isFocused;\n }\n get pagerAriaLabel() {\n return this.navigationService.pagerEnabled ? this.pagerLabel : undefined;\n }\n /**\n * @hidden\n */\n get pagerLabel() {\n const localizationMsg = this.localizationService.get('pagerLabel') || '';\n return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());\n }\n get focusTrapTabIndex() {\n return this.focusGroup.isActive ? '0' : '-1';\n }\n onFocusIn(event) {\n if (this.navigationService.pagerEnabled) {\n const shouldFocusPager = event.target === this.element.nativeElement;\n if (shouldFocusPager) {\n this._isFocused = true;\n this.focusRoot.deactivate();\n }\n else {\n this.focusRoot.activate();\n }\n }\n }\n onFocusOut() {\n if (this.navigationService.pagerEnabled) {\n this._isFocused = false;\n }\n }\n onEscape() {\n if (this.navigationService.pagerEnabled) {\n this.focusRoot.deactivate();\n this.element.nativeElement.focus();\n }\n }\n onEnter(event) {\n if (this.navigationService.pagerEnabled && event.target === this.element.nativeElement) {\n this.focusRoot.activate();\n this.focusFirstElement();\n }\n }\n navigateToPreviousPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.prevPage();\n }\n }\n navigateToNextPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.nextPage();\n }\n }\n navigateToFirstPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.changePage(0);\n }\n }\n navigateToLastPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.changePage(this.totalPages - 1);\n }\n }\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n get templateContext() {\n const context = this._templateContext;\n context.totalPages = this.totalPages;\n context.total = this.total;\n context.skip = this.skip;\n context.pageSize = this.pageSize;\n context.currentPage = this.currentPage;\n return context;\n }\n ngOnInit() {\n this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));\n if (this.navigationService.pagerEnabled) {\n this.focusRoot.deactivate();\n }\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(changes) {\n if (anyChanged(['pageSize', 'skip', 'total'], changes, false)) {\n this.pagerContext.notifyChanges({\n pageSize: this.pageSize,\n skip: this.skip,\n total: this.total\n });\n }\n if (changes.template) {\n // eslint-disable-next-line no-unused-expressions\n changes.template.currentValue ? this.clearResponsiveClasses() : this.resizeHandler();\n }\n if (changes.options) {\n // eslint-disable-next-line no-unused-expressions\n this.settings.responsive ? this.resizeHandler() : this.clearResponsiveClasses();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n changePage(event) {\n this.pageChange.emit(event);\n }\n onInnerFocusIn(event, position) {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (position === 'start') {\n if (event.relatedTarget === this.element.nativeElement) {\n this.focusFirstElement();\n }\n else {\n this.focusLastElement();\n }\n }\n else {\n this.focusFirstElement();\n }\n });\n }\n clearResponsiveClasses() {\n const element = this.element.nativeElement;\n this.renderer.removeClass(element, 'k-pager-sm');\n this.renderer.removeClass(element, 'k-pager-md');\n }\n shouldTriggerPageChange(target, condition) {\n return this.navigationService.pagerEnabled &&\n target === this.element.nativeElement &&\n condition;\n }\n focusFirstElement() {\n const first = findFocusableChild(this.element.nativeElement, true);\n if (first) {\n first.focus();\n }\n }\n focusLastElement() {\n const last = findLastFocusableChild(this.element.nativeElement, true);\n if (last) {\n last.focus();\n }\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n }\n}\nPagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }, { token: FocusRoot }, { token: FocusGroup }], target: i0.ɵɵFactoryTarget.Component });\nPagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerComponent, selector: \"kendo-pager\", inputs: { total: \"total\", skip: \"skip\", pageSize: \"pageSize\", options: \"options\", template: \"template\" }, outputs: { pageChange: \"pageChange\" }, host: { listeners: { \"focusin\": \"onFocusIn($event)\", \"focusout\": \"onFocusOut()\", \"keydown.escape\": \"onEscape()\", \"keydown.enter\": \"onEnter($event)\", \"keydown.arrowleft\": \"navigateToPreviousPage($event)\", \"keydown.pageup\": \"navigateToPreviousPage($event)\", \"keydown.arrowright\": \"navigateToNextPage($event)\", \"keydown.pagedown\": \"navigateToNextPage($event)\", \"keydown.home\": \"navigateToFirstPage($event)\", \"keydown.end\": \"navigateToLastPage($event)\" }, properties: { \"class.k-pager-wrap\": \"this.pagerWrapClass\", \"class.k-grid-pager\": \"this.gridPagerClass\", \"class.k-state-focused\": \"this.isFocused\", \"attr.aria-label\": \"this.pagerAriaLabel\" } }, providers: [{\n provide: FOCUS_ROOT_ACTIVE,\n useValue: true\n }, {\n provide: FocusRoot,\n deps: [FOCUS_ROOT_ACTIVE],\n useClass: FocusRoot\n }, {\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: PagerPrevButtonsComponent, selector: \"kendo-pager-prev-buttons\" }, { type: PagerNumericButtonsComponent, selector: \"kendo-pager-numeric-buttons\", inputs: [\"buttonCount\"] }, { type: PagerInputComponent, selector: \"kendo-pager-input\" }, { type: PagerNextButtonsComponent, selector: \"kendo-pager-next-buttons\" }, { type: PagerInfoComponent, selector: \"kendo-pager-info\" }, { type: PagerPageSizesComponent, selector: \"kendo-pager-page-sizes\", inputs: [\"pageSizes\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager',\n providers: [{\n provide: FOCUS_ROOT_ACTIVE,\n useValue: true\n }, {\n provide: FocusRoot,\n deps: [FOCUS_ROOT_ACTIVE],\n useClass: FocusRoot\n }, {\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: PagerContextService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: FocusRoot }, { type: FocusGroup }]; }, propDecorators: { total: [{\n type: Input\n }], skip: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], options: [{\n type: Input\n }], template: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], pagerWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-wrap']\n }], gridPagerClass: [{\n type: HostBinding,\n args: ['class.k-grid-pager']\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], pagerAriaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], onFocusIn: [{\n type: HostListener,\n args: ['focusin', ['$event']]\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout']\n }], onEscape: [{\n type: HostListener,\n args: ['keydown.escape']\n }], onEnter: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }], navigateToPreviousPage: [{\n type: HostListener,\n args: ['keydown.arrowleft', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.pageup', ['$event']]\n }], navigateToNextPage: [{\n type: HostListener,\n args: ['keydown.arrowright', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.pagedown', ['$event']]\n }], navigateToFirstPage: [{\n type: HostListener,\n args: ['keydown.home', ['$event']]\n }], navigateToLastPage: [{\n type: HostListener,\n args: ['keydown.end', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass DropTargetDirective {\n constructor(element, service) {\n this.element = element;\n this.service = service;\n this.context = {};\n this.enter = new EventEmitter();\n this.leave = new EventEmitter();\n this.drop = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.service.add(this);\n const changes = this.service.changes.pipe(filter(({ target }) => target === this));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'leave'))\n .subscribe(e => {\n this.leave.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'enter'))\n .subscribe(e => {\n this.enter.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'drop'))\n .subscribe(e => {\n this.drop.next(this.eventArgs(e));\n }));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n eventArgs(e) {\n return {\n target: this,\n mouseEvent: e.mouseEvent,\n draggable: e.draggable\n };\n }\n}\nDropTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropTargetDirective, deps: [{ token: i0.ElementRef }, { token: DragAndDropService }], target: i0.ɵɵFactoryTarget.Directive });\nDropTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: { context: \"context\" }, outputs: { enter: \"enter\", leave: \"leave\", drop: \"drop\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropTargetDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropTarget]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragAndDropService }]; }, propDecorators: { context: [{\n type: Input\n }], enter: [{\n type: Output\n }], leave: [{\n type: Output\n }], drop: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass GroupIndicatorComponent {\n constructor() {\n this.directionChange = new EventEmitter();\n this.remove = new EventEmitter();\n }\n get groupIndicatorClass() {\n return true;\n }\n get dir() {\n return this.group.dir ? this.group.dir : \"asc\";\n }\n toggleDirection() {\n this.directionChange.emit({\n dir: this.dir === \"asc\" ? \"desc\" : \"asc\",\n field: this.group.field\n });\n return false;\n }\n removeDescriptor() {\n this.remove.emit({\n dir: this.group.dir,\n field: this.group.field\n });\n return false;\n }\n}\nGroupIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGroupIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupIndicatorComponent, selector: \"[kendoGroupIndicator]\", inputs: { group: \"group\", groupTitle: \"groupTitle\" }, outputs: { directionChange: \"directionChange\", remove: \"remove\" }, host: { properties: { \"class.k-group-indicator\": \"this.groupIndicatorClass\" } }, ngImport: i0, template: `\n \n \n {{groupTitle}}\n \n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupIndicatorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[kendoGroupIndicator]',\n template: `\n \n \n {{groupTitle}}\n \n \n \n `\n }]\n }], propDecorators: { directionChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], group: [{\n type: Input\n }], groupTitle: [{\n type: Input\n }], groupIndicatorClass: [{\n type: HostBinding,\n args: [\"class.k-group-indicator\"]\n }] } });\n\n/**\n * @hidden\n */\nconst preventOnDblClick$1 = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst hasClass = className => el => new RegExp(`(^| )${className}( |$)`).test(el.className);\nconst isDeleteButton = or(hasClass('k-i-group-delete'), hasClass('k-icon-button'));\nconst isSortIcon = or(hasClass('k-i-sort-asc-sm'), hasClass('k-i-sort-desc-sm'));\nconst skipButtons = and(not(isDeleteButton), not(isSortIcon), not(isFocusableWithTabKey), not(matchesNodeName('label')));\nconst elementUnderCursor = ({ clientX, clientY }) => document.elementFromPoint(clientX, clientY);\nconst hideThenShow = (element, cont) => {\n element.style.display = 'none';\n const result = cont();\n element.style.display = 'block';\n return result;\n};\n/**\n * @hidden\n */\nclass DraggableColumnDirective {\n constructor(draggable, element, zone, service, hint, cue, nav, renderer) {\n this.draggable = draggable;\n this.element = element;\n this.zone = zone;\n this.service = service;\n this.hint = hint;\n this.cue = cue;\n this.nav = nav;\n this.renderer = renderer;\n this.context = {};\n this.drag = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n set enableDrag(enabled) {\n this.enabled = enabled;\n this.updateTouchAction();\n }\n get hostClass() {\n return this.enabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(filter(_ => this.enabled), filter(({ originalEvent: { target } }) => target === this.element.nativeElement || skipButtons(target)), tap((e) => {\n const originalEvent = e.originalEvent;\n if (!e.isTouch) {\n originalEvent.preventDefault();\n }\n this.nav.navigateTo(originalEvent.target);\n }), switchMap(preventOnDblClick$1(this.draggable.kendoRelease)), tap((_) => {\n this.hint.create(this.context.hint);\n this.cue.create();\n }), switchMap(down => this.draggable.kendoDrag.pipe(tap((e) => {\n if (e.isTouch) {\n e.originalEvent.preventDefault();\n }\n }), tap(this.hint.attach()), tap(this.cue.attach()), \n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(this.draggable.kendoRelease), map(move => ({ move, down })))), tap(this.performDrag.bind(this)), switchMapTo(this.draggable.kendoRelease)).subscribe(this.drop.bind(this))));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n drop(upEvent) {\n this.hint.remove();\n this.cue.remove();\n this.service.notifyDrop(this, upEvent);\n }\n performDrag({ move }) {\n this.hint.move(move);\n const cursorElement = this.elementUnderCursor(move);\n if (cursorElement) {\n this.service.notifyDrag(this, cursorElement, move);\n }\n this.drag.emit({\n draggable: this,\n mouseEvent: move\n });\n }\n elementUnderCursor(mouseEvent) {\n this.hint.hide();\n let target = elementUnderCursor(mouseEvent);\n if (target && /k-grouping-dropclue/.test(target.className)) {\n target = hideThenShow(target, elementUnderCursor.bind(this, mouseEvent));\n }\n this.hint.show();\n return target;\n }\n updateTouchAction() {\n if (!this.element) {\n return;\n }\n // eslint-disable-next-line no-unused-expressions\n this.enabled ? this.renderer.addClass(this.element.nativeElement, 'k-touch-action-none') :\n this.renderer.removeClass(this.element.nativeElement, 'k-touch-action-none');\n }\n}\nDraggableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableColumnDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: DragAndDropService }, { token: DragHintService }, { token: DropCueService }, { token: NavigationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: { context: \"context\", enableDrag: \"enableDrag\" }, outputs: { drag: \"drag\" }, host: { properties: { \"class.k-grid-draggable-header\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableColumnDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDraggableColumn]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: DragAndDropService }, { type: DragHintService }, { type: DropCueService }, { type: NavigationService }, { type: i0.Renderer2 }]; }, propDecorators: { context: [{\n type: Input\n }], enableDrag: [{\n type: Input\n }], drag: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-grid-draggable-header']\n }] } });\n\nconst withoutField = ({ field }) => isNullOrEmptyString(field);\nconst alreadyGrouped = ({ groups, field }) => groups.some(group => group.field === field);\nconst overSameTarget = ({ target, field }) => target.field === field;\nconst overLastTarget = ({ target }) => target.lastTarget;\nconst isLastGroup = ({ groups, field }) => groups.map(group => group.field).indexOf(field) === groups.length - 1;\nconst isNotGroupable = (groupsService) => ({ field }) => !groupsService.isGroupable(field);\nconst columnRules = (groupService) => or(withoutField, alreadyGrouped, isNotGroupable(groupService));\nconst indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));\n/**\n * @hidden\n */\nclass GroupPanelComponent {\n constructor(hint, cue, groupInfoService, localization, cd) {\n this.hint = hint;\n this.cue = cue;\n this.groupInfoService = groupInfoService;\n this.localization = localization;\n this.cd = cd;\n this.change = new EventEmitter();\n this.groups = [];\n this.dropTargets = new QueryList();\n this.groupTitles = [];\n this.subscription = new Subscription();\n }\n get groupHeaderClass() {\n return true;\n }\n set text(value) {\n this.emptyText = value;\n }\n get text() {\n return this.emptyText ? this.emptyText : this.localization.get('groupPanelEmpty');\n }\n ngAfterViewInit() {\n this.subscription.add(observe(this.dropTargets)\n .subscribe(this.attachTargets.bind(this)));\n }\n ngOnInit() {\n this.subscription.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngDoCheck() {\n const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));\n if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {\n this.groupTitles = currentTitles;\n this.cd.markForCheck();\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n }\n directionChange(group) {\n const index = this.groups.findIndex(x => x.field === group.field);\n const groups = [...this.groups.slice(0, index), group, ...this.groups.slice(index + 1)];\n this.change.emit(groups);\n }\n insert(field, index) {\n const groups = this.groups.filter(x => x.field !== field);\n if (groups.length || this.groups.length === 0) {\n this.change.emit([...groups.slice(0, index), { field: field }, ...groups.slice(index)]);\n }\n }\n remove(group) {\n this.change.emit(this.groups.filter(x => x.field !== group.field));\n }\n canDrop(draggable, target) {\n const isIndicator = draggable.type === 'groupIndicator';\n const rules = isIndicator\n ? indicatorRules\n : columnRules(this.groupInfoService);\n return !rules({\n field: draggable.field,\n groups: this.groups,\n target\n });\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.enter), from([]));\n const leaveStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.leave), from([]));\n const dropStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.drop), from([]));\n this.targetSubscription.add(enterStream.pipe(tap(_ => this.hint.removeLock()), filter(({ draggable, target }) => this.canDrop(draggable.context, target.context)), tap(this.enter.bind(this)), switchMapTo(dropStream.pipe(takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));\n }\n enter({ draggable, target }) {\n this.hint.enable();\n let before = target.context.lastTarget || isTargetBefore(draggable.element.nativeElement, target.element.nativeElement);\n if (this.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({ target, draggable }) {\n const field = draggable.context.field;\n const index = this.dropTargets.toArray().indexOf(target);\n this.insert(field, index);\n }\n}\nGroupPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupPanelComponent, deps: [{ token: DragHintService }, { token: DropCueService }, { token: GroupInfoService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupPanelComponent, selector: \"kendo-grid-group-panel\", inputs: { text: \"text\", groups: \"groups\" }, outputs: { change: \"change\" }, host: { properties: { \"class.k-grouping-header\": \"this.groupHeaderClass\", \"class.k-grouping-header-flex\": \"this.groupHeaderClass\" } }, viewQueries: [{ propertyName: \"dropTargets\", predicate: DropTargetDirective, descendants: true }], ngImport: i0, template: `\n \n \n {{ text }}\n \n \n
    \n \n
    \n \n
     
    \n `, isInline: true, components: [{ type: GroupIndicatorComponent, selector: \"[kendoGroupIndicator]\", inputs: [\"group\", \"groupTitle\"], outputs: [\"directionChange\", \"remove\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: [\"context\"], outputs: [\"enter\", \"leave\", \"drop\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: [\"context\", \"enableDrag\"], outputs: [\"drag\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupPanelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-grid-group-panel',\n template: `\n \n \n {{ text }}\n \n \n
    \n \n
    \n \n
     
    \n `\n }]\n }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{\n type: Output\n }], groupHeaderClass: [{\n type: HostBinding,\n args: [\"class.k-grouping-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-grouping-header-flex\"]\n }], text: [{\n type: Input\n }], groups: [{\n type: Input\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass ColGroupComponent {\n constructor() {\n this.columns = [];\n this.groups = [];\n }\n get columnsToRender() {\n return columnsToRender(this.columns);\n }\n trackBy(index, _item) {\n return index;\n }\n}\nColGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: { columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\" }, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColGroupComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridColGroup]',\n template: `\n \n \n \n \n \n `\n }]\n }], propDecorators: { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n allowUnsort: true,\n mode: 'single',\n showIndexes: true,\n initialDirection: 'asc',\n multiSortKey: 'none'\n};\n/**\n * @hidden\n */\nconst normalize = (...settings) => Object.assign({}, DEFAULTS, ...settings);\n\n/**\n * @hidden\n */\nconst hasFilter = (settings, column) => settings.filter !== false && column.field && column.filterable;\n/**\n * @hidden\n */\nconst hasSort = (settings, column) => settings.sort !== false && column.field && column.sortable;\n/**\n * @hidden\n */\nconst hasLock = (settings, column) => settings.lock && column.lockable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasStick = (settings, column) => settings.stick && column.stickable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasPosition = (settings, column) => settings.setColumnPosition && (column.stickable || column.lockable) && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasColumnChooser = (settings) => settings.columnChooser !== false;\n/**\n * @hidden\n */\nconst hasItems = (settings, column) => hasColumnChooser(settings) || hasLock(settings, column) || hasSort(settings, column) || hasFilter(settings, column);\n\nconst localizeOperators$1 = operators => localization => Object.keys(operators).reduce((acc, key) => {\n acc[operators[key]] = localization.get(key);\n return acc;\n}, {});\nconst operatorTexts = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterAfterOrEqualOperator\": \"after-eq\",\n \"filterAfterOperator\": \"after\",\n \"filterBeforeOrEqualOperator\": \"before-eq\",\n \"filterBeforeOperator\": \"before\"\n});\n/**\n * @hidden\n */\nconst toJSON = (xs) => xs.map(x => x.toJSON());\n/**\n * @hidden\n */\nclass FilterOperatorBase {\n constructor(operator, localization) {\n this.operator = operator;\n this.localization = localization;\n this.messages = operatorTexts(this.localization);\n this._text = this.messages[this.operator];\n this.localization.changes.subscribe(this.refreshText.bind(this));\n }\n /**\n * The text that will be displayed in the drop-down list.\n * @readonly\n * @type {string}\n * @memberOf FilterOperatorBase\n */\n get text() {\n return this._text;\n }\n set text(value) {\n this._text = isNullOrEmptyString(value) ? this.messages[this.operator] : value;\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: this.operator\n };\n }\n refreshText() {\n const update = this._text === this.messages[this.operator];\n this.messages = operatorTexts(this.localization);\n if (update) {\n this._text = this.messages[this.operator];\n }\n }\n}\nFilterOperatorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterOperatorBase, deps: [{ token: 'filterOperator' }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterOperatorBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterOperatorBase, selector: \"kendo-grid-filter-operator-base\", inputs: { text: \"text\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterOperatorBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-operator-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: ['filterOperator']\n }] }, { type: i1.LocalizationService }]; }, propDecorators: { text: [{\n type: Input\n }] } });\n\nconst insertDefaultFilter = (index, rootFilter, filter) => {\n rootFilter = (rootFilter || { filters: [], logic: \"and\" });\n rootFilter.filters[index] = filter;\n return filter;\n};\n/**\n * @hidden\n */\nconst setFilter = (index, filter, field, defaultOperator) => {\n if (isPresent(filter) && isPresent(filter.filters) && filter.filters.length > index) {\n return filter.filters[index];\n }\n else {\n return insertDefaultFilter(index, filter, {\n field,\n operator: defaultOperator\n });\n }\n};\n/**\n * @hidden\n */\nconst logicOperators = (localization) => [\n { text: localization.get(\"filterAndLogic\"), value: \"and\" },\n { text: localization.get(\"filterOrLogic\"), value: \"or\" }\n];\n/**\n * @hidden\n */\nconst flatten = (filter) => {\n if (isPresent(filter.filters)) {\n return filter.filters.reduce((acc, curr) => acc.concat(isCompositeFilterDescriptor(curr) ? flatten(curr) : [curr]), []);\n }\n return [];\n};\nconst trimFilterByField = (filter, field) => {\n if (isPresent(filter) && isPresent(filter.filters)) {\n filter.filters = filter.filters.filter(x => {\n if (isCompositeFilterDescriptor(x)) {\n trimFilterByField(x, field);\n return x.filters.length;\n }\n else {\n return x.field !== field;\n }\n });\n }\n};\n/**\n * @hidden\n */\nconst filtersByField = (filter, field) => flatten(filter || {}).filter(x => x.field === field);\n/**\n * @hidden\n */\nconst filterByField = (filter, field) => {\n let [currentFilter] = filtersByField(filter, field);\n return currentFilter;\n};\n/**\n * @hidden\n */\nconst removeFilter = (filter, field) => {\n trimFilterByField(filter, field);\n return filter;\n};\n/**\n * @hidden\n */\nconst localizeOperators = operators => localization => Object.keys(operators).map(key => ({\n text: localization.get(key),\n value: operators[key]\n}));\n/**\n * An abstract base class for the filter-cell component ([see example]({% slug reusablecustomfilters_grid %}#toc-filter-row)).\n */\nclass BaseFilterCellComponent {\n constructor(filterService) {\n this.filterService = filterService;\n this.operatorList = new QueryList();\n }\n get hostClasses() {\n return true;\n }\n get operators() {\n var _a;\n return ((_a = this._operators) === null || _a === void 0 ? void 0 : _a.length) ? this._operators : this.defaultOperators;\n }\n set operators(values) {\n this._operators = values;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n this.operationListSubscription = observe(this.operatorList)\n .pipe(map(q => q.toArray()), map(toJSON))\n .subscribe(x => {\n this.operators = x;\n });\n }\n ngOnDestroy() {\n if (this.operationListSubscription) {\n this.operationListSubscription.unsubscribe();\n }\n }\n filterByField(field) {\n return filterByField(this.filter, field);\n }\n filtersByField(field) {\n return filtersByField(this.filter, field);\n }\n removeFilter(field) {\n return removeFilter(this.filter, field);\n }\n updateFilter(filter) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n let [currentFilter] = flatten(root).filter(x => x.field === filter.field);\n if (!isPresent(currentFilter)) {\n root.filters.push(filter);\n }\n else {\n Object.assign(currentFilter, filter);\n }\n return root;\n }\n applyFilter(filter) {\n this.filterService.filter(filter);\n }\n}\nBaseFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseFilterCellComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Directive });\nBaseFilterCellComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseFilterCellComponent, inputs: { operators: \"operators\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, queries: [{ propertyName: \"operatorList\", predicate: FilterOperatorBase }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseFilterCellComponent, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], operatorList: [{\n type: ContentChildren,\n args: [FilterOperatorBase]\n }], operators: [{\n type: Input\n }] } });\n\nconst areDifferent = (a, b) => a.field !== b.field || a.operator !== b.operator || a.value !== b.value;\nconst isChanged = (a, b) => {\n if (a.length !== b.length) {\n return true;\n }\n for (let idx = 0, len = a.length; idx < len; idx++) {\n const prev = a[idx];\n const curr = b[idx];\n if (isCompositeFilterDescriptor(prev)) {\n if (diffFilters(prev, curr[idx])) {\n return true;\n }\n }\n else if (areDifferent(prev, curr)) {\n return true;\n }\n }\n return false;\n};\nconst copyObject = (obj) => {\n const result = {};\n Object.assign(result, obj);\n if (obj.constructor !== Object) {\n const proto = obj.constructor.prototype;\n Object.getOwnPropertyNames(proto).forEach((property) => {\n if (property !== 'constructor' && proto.hasOwnProperty(property)) {\n result[property] = obj[property];\n }\n });\n }\n return result;\n};\nconst cloneFilter = (filter) => copyObject(filter);\n/**\n * @hidden\n */\nconst cloneFilters = (filter) => {\n if (!filter) {\n return;\n }\n if (isCompositeFilterDescriptor(filter)) {\n return {\n filters: cloneFilters(filter.filters),\n logic: filter.logic\n };\n }\n else if (Array.isArray(filter)) {\n return filter.map(cloneFilters);\n }\n return cloneFilter(filter);\n};\n/**\n * @hidden\n */\nconst diffFilters = (a, b) => {\n if (isPresent(a) && !isPresent(b)) {\n return true;\n }\n if (!isPresent(a) && isPresent(b)) {\n return true;\n }\n return isPresent(a) && isPresent(b) && isChanged(a.filters, b.filters);\n};\n\n/**\n * @hidden\n */\nclass FilterHostDirective {\n constructor(host, resolver) {\n this.host = host;\n this.resolver = resolver;\n }\n ngOnInit() {\n this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n ngOnDestroy() {\n if (this.component) {\n this.component.destroy();\n this.component = null;\n }\n }\n ngOnChanges(changes) {\n if (anyChanged([\"column\", \"filter\"], changes)) {\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n }\n initComponent({ column, filter }) {\n const instance = this.component.instance;\n instance.column = column;\n instance.filter = filter;\n }\n}\nFilterHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterHostDirective, selector: \"[kendoGridFilterHostBase]\", inputs: { column: \"column\", filter: \"filter\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterHostBase]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst stringOperators$1 = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * Represents a base string filter component.\n */\nclass StringFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `contains`.\n * @type {string}\n */\n this.operator = \"contains\";\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField((this.column || {}).field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = stringOperators$1(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nStringFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nStringFilterComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterComponent, inputs: { column: \"column\", filter: \"filter\", operator: \"operator\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterComponent, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterInputDirective {\n constructor(valueAccessors, ngZone, element, renderer) {\n this.element = element;\n this.renderer = renderer;\n this.change = new EventEmitter();\n this.composing = false;\n this.filterDelay = 500;\n this.changeRequests = new Subject();\n this.accessor = valueAccessors[0];\n ngZone.runOutsideAngular(() => {\n const unsubscribeStart = renderer.listen(element.nativeElement, 'compositionstart', () => this.composing = true);\n const unsubscribeEnd = renderer.listen(element.nativeElement, 'compositionend', () => this.composing = false);\n this.unsubscribeEvents = () => {\n unsubscribeStart();\n unsubscribeEnd();\n };\n });\n }\n set value(value) {\n this.accessor.writeValue(value);\n }\n set disabled(value) {\n this.accessor.setDisabledState(value);\n }\n ngAfterViewInit() {\n this.addAriaAttributes();\n this.accessor.registerOnChange(x => this.filterDelay > 0 ?\n this.changeRequests.next(x) :\n this.change.emit(x));\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged$1('filterDelay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.unsubscribeChanges();\n this.unsubscribeEvents();\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.changeRequests\n .pipe(debounceTime(this.filterDelay), filter(() => !this.composing))\n .subscribe(x => this.change.emit(x));\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n addAriaAttributes() {\n const ariaValue = this.columnLabel;\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n const focusableElement = this.element.nativeElement.querySelector(`#${this.kendoInput.focusableId}`) ||\n this.element.nativeElement;\n this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);\n }\n else {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-label', ariaValue);\n }\n }\n}\nFilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, deps: [{ token: NG_VALUE_ACCESSOR, self: true }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: { filterDelay: \"filterDelay\", columnLabel: \"columnLabel\", value: \"value\" }, queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterInput]'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], filterDelay: [{\n type: Input\n }], columnLabel: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nconst EMPTY_VALUE_OPERATORS = new Set(['isnull', 'isnotnull', 'isempty', 'isnotempty']);\nconst isEmptyValueOperator = (operator) => EMPTY_VALUE_OPERATORS.has(operator);\n/**\n * @hidden\n */\nclass FilterInputWrapperComponent extends BaseFilterCellComponent {\n constructor(filterService) {\n super(filterService);\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n const filter = this.currentFilter;\n if (!this._operator) {\n this._operator = filter ? filter.operator : this.defaultOperator;\n }\n return this._operator;\n }\n set currentOperator(value) {\n this._operator = value;\n const emptyValueOperator = isEmptyValueOperator(value);\n this.filterInputDisabled = emptyValueOperator;\n if (emptyValueOperator) {\n this.applyNoValueFilter(value);\n }\n else if (!isBlank(value) && isPresent(this.currentFilter)) {\n this.onChange(this.currentFilter.value);\n }\n }\n get defaultOperator() {\n if (!isNullOrEmptyString(this._defaultOperator)) {\n return this._defaultOperator;\n }\n else if (this.operators && this.operators.length) {\n return this.operators[0].value;\n }\n return \"eq\";\n }\n set defaultOperator(value) {\n this._defaultOperator = value;\n }\n set filterInputDisabled(disabled) {\n if (!this.input) {\n return;\n }\n this.input.disabled = disabled;\n }\n ngAfterContentInit() {\n if (isPresent(this.input)) {\n this.changeSubscription = this.input.change.subscribe(this.onChange.bind(this));\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.changeSubscription) {\n this.changeSubscription.unsubscribe();\n }\n }\n onChange(value) {\n if (!isNullOrEmptyString(value) || this.filterByField(this.column.field)) {\n this.filterChange(isNullOrEmptyString(value) ?\n this.removeFilter(this.column.field) :\n this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n }\n onClear() {\n this.onChange(null);\n this.filterInputDisabled = isEmptyValueOperator(this.defaultOperator);\n }\n applyNoValueFilter(operator) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: operator,\n value: null\n }));\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"filter\", changes, false)) {\n this._operator = null;\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n}\nFilterInputWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputWrapperComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputWrapperComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputWrapperComponent, inputs: { column: \"column\", filter: \"filter\", defaultOperator: \"defaultOperator\" }, queries: [{ propertyName: \"input\", first: true, predicate: FilterInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputWrapperComponent, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], input: [{\n type: ContentChild,\n args: [FilterInputDirective, { static: false }]\n }], defaultOperator: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = (e) => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.setAttribute('aria-label', this.filterMenuDropDownLabel);\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n}\nFilterMenuDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: { filterMenuDropDownLabel: \"filterMenuDropDownLabel\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuDropDownListDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuDropDown]' }]\n }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; }, propDecorators: { filterMenuDropDownLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuInputWrapperComponent extends FilterInputWrapperComponent {\n constructor(localizationService) {\n super(null);\n this.localizationService = localizationService;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n if (this.isFirstDropDown && this.filterService && this.filterService.menuTabbingService) {\n this.filterService.menuTabbingService.firstFocusable = this.firstOperatorDropDown;\n this.firstOperatorDropDown.focus();\n }\n }\n operatorChange(dataItem) {\n this.currentOperator = dataItem;\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this._currentFilter;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n set currentFilter(value) {\n this._currentFilter = value;\n }\n updateFilter(filter) {\n Object.assign(this.currentFilter, filter);\n return this.filter;\n }\n onChange(value) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n onShiftTab(e) {\n e.stopImmediatePropagation();\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.isFirstDropDown && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localizationService.get('filterMenuOperatorsDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nFilterMenuInputWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuInputWrapperComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuInputWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: { filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\", currentFilter: \"currentFilter\" }, viewQueries: [{ propertyName: \"firstOperatorDropDown\", first: true, predicate: DropDownListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuInputWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu-input-wrapper',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], firstOperatorDropDown: [{\n type: ViewChild,\n args: [DropDownListComponent, { static: false }]\n }], currentFilter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass StringFilterMenuInputComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.operators = [];\n }\n get columnLabel() {\n const localizationMsg = this.localizationService.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nStringFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuInputComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterMenuInputComponent, selector: \"kendo-grid-string-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }], directives: [{ type: i4$1.TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: [\"value\"] }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu-input',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n/**\n * Represents a string-filter menu component.\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-configuration-components-for-filter-templates)).\n */\nclass StringFilterMenuComponent extends StringFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nStringFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterMenuComponent, selector: \"kendo-grid-string-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: StringFilterMenuInputComponent, selector: \"kendo-grid-string-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst numericOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * Represents a base numeric filter component.\n */\nclass NumericFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `eq`.\n * @type {string}\n */\n this.operator = \"eq\";\n /**\n * Specifies the value that is used to increment or decrement the component value.\n * @type {numeric}\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n */\n this.spinners = true;\n this.defaultOperators = numericOperators(this.localization);\n }\n /**\n * Specifies the number format used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n set format(value) {\n this._format = value;\n }\n /**\n * @readonly\n * @type {string}\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ?\n extractFormat(this.column.format) : \"n2\";\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = numericOperators(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nNumericFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nNumericFilterComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterComponent, inputs: { column: \"column\", filter: \"filter\", operator: \"operator\", step: \"step\", min: \"min\", max: \"max\", spinners: \"spinners\", decimals: \"decimals\", format: \"format\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterComponent, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], step: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], spinners: [{\n type: Input\n }], decimals: [{\n type: Input\n }], format: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass NumericFilterMenuInputComponent {\n constructor(localization) {\n this.localization = localization;\n this.operators = [];\n /**\n * Specifies the value which is used to increment or decrement the component value.\n * @type {numeric}\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n */\n this.spinners = true;\n }\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nNumericFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuInputComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterMenuInputComponent, selector: \"kendo-grid-numeric-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\", step: \"step\", min: \"min\", max: \"max\", spinners: \"spinners\", decimals: \"decimals\", format: \"format\" }, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }, { type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$1.NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], step: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], spinners: [{\n type: Input\n }], decimals: [{\n type: Input\n }], format: [{\n type: Input\n }] } });\n\n/**\n * Represents a numeric-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NumericFilterMenuComponent extends NumericFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nNumericFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterMenuComponent, selector: \"kendo-grid-numeric-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: NumericFilterMenuInputComponent, selector: \"kendo-grid-numeric-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"step\", \"min\", \"max\", \"spinners\", \"decimals\", \"format\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst dateOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterAfterOrEqualOperator\": \"gte\",\n \"filterAfterOperator\": \"gt\",\n \"filterBeforeOrEqualOperator\": \"lte\",\n \"filterBeforeOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * @hidden\n */\nclass DateFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `contains`.\n * @type {string}\n */\n this.operator = \"gte\";\n /**\n * Defines the active view that the calendar initially renders.\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = \"month\";\n /**\n * Defines the bottommost calendar view, to which the user can navigate.\n */\n this.bottomView = \"month\";\n /**\n * Defines the topmost calendar view, to which the user can navigate.\n */\n this.topView = \"century\";\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar.\n */\n this.weekNumber = false;\n this.defaultOperators = dateOperators(this.localization);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n set format(value) {\n this._format = value;\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n *\n * @readonly\n * @type {string}\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ?\n extractFormat(this.column.format) : \"d\";\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = dateOperators(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nDateFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterComponent, selector: \"kendo-grid-date-filter-base\", inputs: { column: \"column\", filter: \"filter\", operator: \"operator\", format: \"format\", min: \"min\", max: \"max\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", weekNumber: \"weekNumber\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], format: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DateFilterMenuInputComponent {\n constructor(popupService, localizationService) {\n this.popupService = popupService;\n this.localizationService = localizationService;\n this.operators = [];\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n open(picker) {\n this.subscription = this.popupService.onClose\n .pipe(filter(() => picker.isActive))\n .subscribe(e => e.preventDefault());\n }\n messageFor(key) {\n return this.localizationService.get(key);\n }\n get columnLabel() {\n const localizationMsg = this.localizationService.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nDateFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuInputComponent, deps: [{ token: SinglePopupService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterMenuInputComponent, selector: \"kendo-grid-date-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", min: \"min\", max: \"max\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", weekNumber: \"weekNumber\", isFirstDropDown: \"isFirstDropDown\" }, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }] } });\n\n/**\n * Represents a date-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass DateFilterMenuComponent extends DateFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will be displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nDateFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterMenuComponent, selector: \"kendo-grid-date-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateFilterMenuInputComponent, selector: \"kendo-grid-date-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"menuTabbingService\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\", \"isFirstDropDown\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\n/**\n * @hidden\n */\nclass BooleanFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * @hidden\n */\n this.operator = \"eq\";\n /**\n * @hidden\n */\n this.items = [\n { text: this.localization.get(\"filterIsTrue\"), value: true },\n { text: this.localization.get(\"filterIsFalse\"), value: false }\n ];\n /**\n * @hidden\n */\n this.defaultItem = { text: this.localization.get(\"filterBooleanAll\"), value: null };\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.items = [\n { text: this.localization.get(\"filterIsTrue\"), value: true },\n { text: this.localization.get(\"filterIsFalse\"), value: false }\n ];\n this.defaultItem = { text: this.localization.get(\"filterBooleanAll\"), value: null };\n }\n}\nBooleanFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterComponent, selector: \"kendo-grid-boolean-filter-base\", inputs: { column: \"column\", filter: \"filter\" }, host: { properties: { \"class.k-filtercell-boolean\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-boolean']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass BooleanFilterRadioButtonDirective {\n constructor(hostElement, renderer) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n this.radioButtonEl = this.hostElement.nativeElement;\n this.renderer.setAttribute(this.hostElement.nativeElement, 'aria-label', this.columnLabel);\n }\n}\nBooleanFilterRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterRadioButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nBooleanFilterRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterRadioButtonDirective, selector: \"[kendoFilterMenuRadioButton]\", inputs: { columnLabel: \"columnLabel\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterRadioButtonDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuRadioButton]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { columnLabel: [{\n type: Input\n }] } });\n\n/**\n * Represents a Boolean-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass BooleanFilterMenuComponent extends BooleanFilterComponent {\n constructor(localization) {\n super(null, localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n this.idPrefix = guid();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n this.filterService.menuTabbingService.firstFocusable = this.radioButtons.first.radioButtonEl;\n this.radioButtons.first.radioButtonEl.focus();\n }\n /**\n * @hidden\n */\n radioId(value) {\n return `${this.idPrefix}_${value}`;\n }\n /**\n * @hidden\n */\n onChange(value, input) {\n this.applyFilter(this.updateFilter({\n field: this.column.field,\n operator: \"eq\",\n value: value\n }));\n this.filterService.menuTabbingService.firstFocusable = input;\n }\n /**\n * @hidden\n */\n isSelected(radioValue) {\n return this.filtersByField(this.column.field).some(({ value }) => value === radioValue);\n }\n /**\n * @hidden\n */\n onShiftTab(e) {\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nBooleanFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterMenuComponent, selector: \"kendo-grid-boolean-filter-menu\", inputs: { filter: \"filter\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"radioButtons\", predicate: BooleanFilterRadioButtonDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
      \n
    • \n \n \n
    • \n
    \n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4$1.RadioButtonDirective, selector: \"input[kendoRadioButton]\", inputs: [\"size\"] }, { type: BooleanFilterRadioButtonDirective, selector: \"[kendoFilterMenuRadioButton]\", inputs: [\"columnLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-menu',\n template: `\n
      \n
    • \n \n \n
    • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], filter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], radioButtons: [{\n type: ViewChildren,\n args: [BooleanFilterRadioButtonDirective]\n }] } });\n\n/**\n * @hidden\n *\n * > List the following components as `entryComponents` in the GridModule.\n */\nconst filterMenuComponentFactory = (type) => ({\n \"boolean\": BooleanFilterMenuComponent,\n \"date\": DateFilterMenuComponent,\n \"numeric\": NumericFilterMenuComponent,\n \"text\": StringFilterMenuComponent\n}[type]);\n\n/**\n * @hidden\n */\nclass FilterMenuHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {\n return filterMenuComponentFactory(this.column.filter);\n }\n return StringFilterMenuComponent;\n }\n initComponent(ctx) {\n super.initComponent(ctx);\n this.component.instance.filterService = this.filterService;\n this.component.instance.menuTabbingService = this.menuTabbingService;\n }\n}\nFilterMenuHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuHostDirective, selector: \"[kendoFilterMenuHost]\", inputs: { filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterMenuHost]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\nconst isNoValueOperator = operator => (operator === \"isnull\"\n || operator === \"isnotnull\"\n || operator === \"isempty\"\n || operator === \"isnotempty\");\nconst validFilters = ({ value, operator }) => !isNullOrEmptyString(value) || isNoValueOperator(operator);\nconst trimFilters = filter => {\n filter.filters = filter.filters.filter(validFilters);\n return filter;\n};\nconst findParent = (filters, field, parent) => {\n return filters.reduce((acc, filter) => {\n if (acc) {\n return acc;\n }\n if (filter.filters) {\n return findParent(filter.filters, field, filter);\n }\n else if (filter.field === field) {\n return parent;\n }\n return acc;\n }, undefined);\n};\nconst parentLogicOfDefault = (filter, field, def = \"and\") => {\n const parent = findParent(((filter || {}).filters || []), field);\n return isPresent(parent) ? parent.logic : def;\n};\n/**\n * @hidden\n */\nclass FilterMenuContainerComponent {\n constructor(parentService, childService, localization, cd, menuTabbingService) {\n this.parentService = parentService;\n this.childService = childService;\n this.localization = localization;\n this.cd = cd;\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.actionsClass = 'k-action-buttons k-button-group';\n this._templateContext = {};\n this.menuTabbingService = menuTabbingService;\n }\n get filter() {\n return this._filter;\n }\n /**\n * The current root filter.\n * @type {CompositeFilterDescriptor}\n */\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get childFilter() {\n if (!isPresent(this._childFilter)) {\n this._childFilter = {\n filters: filtersByField(this.filter, (this.column || {}).field),\n logic: parentLogicOfDefault(this.filter, (this.column || {}).field)\n };\n }\n return this._childFilter;\n }\n ngOnInit() {\n this.subscription = this.childService.changes.subscribe(filter => this._childFilter = filter);\n this.subscription.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngAfterViewChecked() {\n if (!this.menuTabbingService.isColumnMenu || (this.isLast && this.isExpanded)) {\n this.menuTabbingService.lastFocusable = this.disabled ?\n this.resetButton.nativeElement : this.filterButton.nativeElement;\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.menuTabbingService.lastFocusable = undefined;\n }\n get disabled() {\n return !this.childFilter.filters.some(validFilters);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.childFilter;\n this._templateContext.filterService = this.childService;\n this._templateContext[\"$implicit\"] = this.childFilter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column) && isPresent(this.column.filterMenuTemplateRef);\n }\n submit() {\n const filter = trimFilters(this.childFilter);\n if (filter.filters.length) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n root.filters.push(filter);\n this.parentService.filter(root);\n }\n this.close.emit();\n return false;\n }\n reset() {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n this.parentService.filter(root);\n this.close.emit();\n }\n onTab(e, buttonType) {\n if (this.menuTabbingService.firstFocusable && (!this.menuTabbingService.isColumnMenu || this.isLast)) {\n e.preventDefault();\n if (buttonType === 'reset') {\n // eslint-disable-next-line no-unused-expressions\n this.disabled ? this.menuTabbingService.firstFocusable.focus() : this.filterButton.nativeElement.focus();\n }\n else {\n this.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n get clearText() {\n return this.localization.get(\"filterClearButton\");\n }\n get filterText() {\n return this.localization.get(\"filterFilterButton\");\n }\n}\nFilterMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: FilterService, skipSelf: true }, { token: FilterService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: MenuTabbingService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: { column: \"column\", isLast: \"isLast\", isExpanded: \"isExpanded\", menuTabbingService: \"menuTabbingService\", filter: \"filter\", actionsClass: \"actionsClass\" }, outputs: { close: \"close\" }, providers: [\n FilterService,\n MenuTabbingService\n ], viewQueries: [{ propertyName: \"resetButton\", first: true, predicate: [\"resetButton\"], descendants: true }, { propertyName: \"filterButton\", first: true, predicate: [\"filterButton\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n {{clearText}}\n \n
    \n
    \n
    \n `, isInline: true, directives: [{ type: i4$2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i4$2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i4$2.NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: [\"ngFormOptions\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: FilterMenuHostDirective, selector: \"[kendoFilterMenuHost]\", inputs: [\"filterService\", \"menuTabbingService\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n FilterService,\n MenuTabbingService\n ],\n selector: 'kendo-grid-filter-menu-container',\n template: `\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n {{clearText}}\n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService, decorators: [{\n type: SkipSelf\n }] }, { type: FilterService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: MenuTabbingService }]; }, propDecorators: { close: [{\n type: Output\n }], column: [{\n type: Input\n }], isLast: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], filter: [{\n type: Input\n }], actionsClass: [{\n type: Input\n }], resetButton: [{\n type: ViewChild,\n args: ['resetButton', { static: false }]\n }], filterButton: [{\n type: ViewChild,\n args: ['filterButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuComponent {\n constructor(filterService, popupService, localization, navigationService) {\n this.filterService = filterService;\n this.popupService = popupService;\n this.localization = localization;\n this.navigationService = navigationService;\n this.tabIndex = '-1';\n }\n get hasFilters() {\n return filtersByField(this.filter, (this.column || {}).field).length > 0;\n }\n /**\n * @hidden\n */\n get filterLabel() {\n const localizationMsg = this.localization.get('filterMenuTitle') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n toggle(anchor, template) {\n this.popupRef = this.popupService.open(anchor, template, this.popupRef);\n if (!this.popupRef) {\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n return false;\n }\n close() {\n this.popupService.destroy();\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n}\nFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuComponent, deps: [{ token: FilterService }, { token: SinglePopupService }, { token: i1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuComponent, selector: \"kendo-grid-filter-menu\", inputs: { column: \"column\", filter: \"filter\", tabIndex: \"tabIndex\" }, viewQueries: [{ propertyName: \"anchor\", first: true, predicate: [\"anchor\"], descendants: true, static: true }, { propertyName: \"template\", first: true, predicate: [\"template\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: [\"column\", \"isLast\", \"isExpanded\", \"menuTabbingService\", \"filter\", \"actionsClass\"], outputs: [\"close\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu',\n template: `\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: SinglePopupService }, { type: i1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], anchor: [{\n type: ViewChild,\n args: ['anchor', { static: true }]\n }], template: [{\n type: ViewChild,\n args: ['template', { static: true, read: TemplateRef }]\n }], tabIndex: [{\n type: Input\n }] } });\n\n/**\n * Represents the service that is passed to the\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * @hidden\n */\n this.closeMenu = new EventEmitter();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Closes the column menu.\n */\n close() {\n this.closeMenu.emit();\n }\n}\nColumnMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService, deps: [{ token: MenuTabbingService }], target: i0.ɵɵFactoryTarget.Injectable });\nColumnMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: MenuTabbingService }]; } });\n\n/**\n * @hidden\n */\nclass ColumnMenuItemBase {\n constructor() {\n this.hostClass = true;\n }\n ngOnInit() {\n if (isDevMode() && !this.service) {\n throw new Error('The service input of the predefined column menu components is mandatory.');\n }\n }\n /**\n * @hidden\n */\n close() {\n this.service.close();\n }\n}\nColumnMenuItemBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemBase, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuItemBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemBase, selector: \"kendo-grid-column-menu-item-base\", inputs: { service: \"service\" }, host: { properties: { \"class.k-columnmenu-item-wrapper\": \"this.hostClass\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-menu-item-base',\n template: ``\n }]\n }], propDecorators: { service: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-columnmenu-item-wrapper']\n }] } });\n\n/**\n * Represents the content template of the\n * [kendo-grid-columnmenu-item]({% slug api_grid_columnmenuitemcomponent %}) component.\n * Provides an option for specifying the content of a column item.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuItemContentTemplate` directive inside a ``.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * Item Content\n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnMenuItemContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuItemContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemContentTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuItemContentTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents an item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuItemComponent {\n constructor() {\n /**\n * Fires when the item is clicked.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n this.contentState = 'collapsed';\n }\n get iconClass() {\n return `k-i-${this.icon}`;\n }\n ngOnChanges(changes) {\n if (changes.expanded) {\n this.updateContentState();\n }\n }\n /**\n * @hidden\n */\n onClick(e) {\n this.itemClick.emit(e);\n if (this.contentTemplate) {\n this.expanded = !this.expanded;\n this.updateContentState();\n if (this.expanded) {\n this.expand.emit();\n }\n else {\n this.collapse.emit();\n }\n }\n }\n updateContentState() {\n this.contentState = this.expanded ? 'expanded' : 'collapsed';\n }\n}\nColumnMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: { icon: \"icon\", text: \"text\", selected: \"selected\", disabled: \"disabled\", expanded: \"expanded\" }, outputs: { itemClick: \"itemClick\", expand: \"expand\", collapse: \"collapse\" }, queries: [{ propertyName: \"contentTemplate\", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ text }}\n \n
    \n \n \n
    \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('state', [\n state('collapsed', style({ display: 'none' })),\n state('expanded', style({ display: 'block' })),\n transition('collapsed => expanded', [\n style({\n height: '0px',\n display: 'block'\n }),\n animate('100ms ease-in', style({\n height: '*'\n }))\n ]),\n transition('expanded => collapsed', [\n style({\n height: '*'\n }),\n animate('100ms ease-in', style({\n height: '0px'\n }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('state', [\n state('collapsed', style({ display: 'none' })),\n state('expanded', style({ display: 'block' })),\n transition('collapsed => expanded', [\n style({\n height: '0px',\n display: 'block'\n }),\n animate('100ms ease-in', style({\n height: '*'\n }))\n ]),\n transition('expanded => collapsed', [\n style({\n height: '*'\n }),\n animate('100ms ease-in', style({\n height: '0px'\n }))\n ])\n ])\n ],\n selector: 'kendo-grid-columnmenu-item',\n template: `\n \n \n \n {{ text }}\n
    \n
    \n \n \n
    \n `\n }]\n }], propDecorators: { itemClick: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], icon: [{\n type: Input\n }], text: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], contentTemplate: [{\n type: ContentChild,\n args: [ColumnMenuItemContentTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents a column-menu item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to lock or unlock the columns.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-lock` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuLockComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n }\n get text() {\n return this.localization.get(this.locked ? 'unlock' : 'lock');\n }\n get icon() {\n return this.locked ? 'unlock' : 'lock';\n }\n get disabled() {\n return !this.locked && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.locked);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(locked) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.locked = locked;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeLocked(allChanged);\n }\n get locked() {\n return this.service.column.locked;\n }\n}\nColumnMenuLockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuLockComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\", usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-lock',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents a column-menu item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to stick or unstick the columns.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-stick` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuStickComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n }\n get text() {\n return this.localization.get(this.sticky ? 'unstick' : 'stick');\n }\n get icon() {\n return this.sticky ? 'unstick' : 'stick';\n }\n get disabled() {\n return !this.sticky && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.sticky);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(sticky) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.sticky = sticky;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeStuck(allChanged);\n }\n get sticky() {\n return this.service.column.sticky;\n }\n}\nColumnMenuStickComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuStickComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\", usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-stick',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents the component for editing column filters in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-filter` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuPositionComponent extends ColumnMenuItemBase {\n constructor(localization, hostElement) {\n super();\n this.localization = localization;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n this._isLast = false;\n }\n /**\n * @hidden\n */\n set isLast(value) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n this._isLast = value;\n }\n /**\n * @hidden\n */\n get isLast() {\n return this._isLast;\n }\n /**\n * @hidden\n */\n onTab(e, isLastItem) {\n if (this.isLast && isLastItem) {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.expand.emit();\n }\n getLastFocusableItem() {\n const menuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n const lastFocusableIndex = this.expanded ? menuItems.length - 1 : 0;\n return menuItems[lastFocusableIndex];\n }\n}\nColumnMenuPositionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuPositionComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuPositionComponent, selector: \"kendo-grid-columnmenu-position\", inputs: { expanded: \"expanded\", showLock: \"showLock\", showStick: \"showStick\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\" }, { type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\" }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-position',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], showLock: [{\n type: Input\n }], showStick: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnListComponent {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.reset = new EventEmitter();\n this.apply = new EventEmitter();\n this.columnChange = new EventEmitter();\n this.autoSync = true;\n this.allowHideAll = false;\n this.actionsClass = 'k-action-buttons';\n this.unlockedCount = 0;\n }\n get className() {\n return true;\n }\n set columns(value) {\n this._columns = value.filter(column => column.includeInChooser !== false);\n this.allColumns = value;\n this.updateColumnState();\n }\n get columns() {\n return this._columns;\n }\n isDisabled(column) {\n return !(this.allowHideAll || this.hasFiltered || column.hidden || this.columns.find(current => current !== column && !current.hidden)) ||\n (this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden);\n }\n ngOnInit() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubscriptions = this.renderer.listen(this.element.nativeElement, 'click', (e) => {\n if (hasClasses(e.target, 'k-checkbox')) {\n if (this.autoSync) {\n const index = parseInt(e.target.getAttribute('data-index'), 10);\n const column = this.columns[index];\n const hidden = !e.target.checked;\n if (Boolean(column.hidden) !== hidden) {\n this.ngZone.run(() => {\n column.hidden = hidden;\n this.columnChange.emit([column]);\n });\n }\n }\n else {\n this.updateDisabled();\n }\n }\n });\n });\n }\n ngOnChanges(changes) {\n if (!this.service) {\n return;\n }\n if (changes.isLast && this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n if (changes.isExpanded && this.isExpanded && this.isLast && this.applyButton) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n }\n ngOnDestroy() {\n if (this.domSubscriptions) {\n this.domSubscriptions();\n }\n }\n cancelChanges() {\n this.forEachCheckBox((element, index) => {\n element.checked = !this.columns[index].hidden;\n });\n this.updateDisabled();\n this.reset.emit();\n }\n applyChanges() {\n const changed = [];\n this.forEachCheckBox((element, index) => {\n const column = this.columns[index];\n const hidden = !element.checked;\n if (Boolean(column.hidden) !== hidden) {\n column.hidden = hidden;\n changed.push(column);\n }\n });\n this.updateDisabled();\n this.apply.emit(changed);\n }\n onTab(e) {\n if (this.isLast) {\n e.preventDefault();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n forEachCheckBox(callback) {\n const checkboxes = this.element.nativeElement.getElementsByClassName('k-checkbox');\n const length = checkboxes.length;\n for (let idx = 0; idx < length; idx++) {\n callback(checkboxes[idx], idx);\n }\n }\n updateDisabled() {\n if (this.allowHideAll && !this.hasLocked) {\n return;\n }\n const checkedItems = [];\n this.forEachCheckBox((checkbox, index) => {\n if (checkbox.checked) {\n checkedItems.push({ checkbox, index });\n }\n checkbox.disabled = false;\n });\n if (!this.allowHideAll && checkedItems.length === 1 && !this.hasFiltered) {\n checkedItems[0].checkbox.disabled = true;\n }\n else if (this.hasLocked && !this.hasUnlockedFiltered) {\n const columns = this.columns;\n const checkedUnlocked = checkedItems.filter(item => !columns[item.index].locked);\n if (checkedUnlocked.length === 1) {\n checkedUnlocked[0].checkbox.disabled = true;\n }\n }\n }\n updateColumnState() {\n this.hasLocked = this.allColumns.filter(column => column.locked && (!column.hidden || column.includeInChooser !== false)).length > 0;\n this.hasVisibleLocked = this.allColumns.filter(column => column.locked && !column.hidden).length > 0;\n this.unlockedCount = this.columns.filter(column => !column.locked && !column.hidden).length;\n const filteredColumns = this.allColumns.filter(column => column.includeInChooser === false && !column.hidden);\n if (filteredColumns.length) {\n this.hasFiltered = filteredColumns.length > 0;\n this.hasUnlockedFiltered = filteredColumns.filter(column => !column.locked).length > 0;\n }\n else {\n this.hasFiltered = false;\n this.hasUnlockedFiltered = false;\n }\n }\n}\nColumnListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColumnListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: { columns: \"columns\", autoSync: \"autoSync\", allowHideAll: \"allowHideAll\", applyText: \"applyText\", resetText: \"resetText\", actionsClass: \"actionsClass\", isLast: \"isLast\", isExpanded: \"isExpanded\", service: \"service\" }, outputs: { reset: \"reset\", apply: \"apply\", columnChange: \"columnChange\" }, host: { properties: { \"class.k-column-list-wrapper\": \"this.className\" } }, viewQueries: [{ propertyName: \"applyButton\", first: true, predicate: [\"applyButton\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n
    \n
    \n \n \n
    \n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnlist',\n template: `\n
    \n \n
    \n
    \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { className: [{\n type: HostBinding,\n args: [\"class.k-column-list-wrapper\"]\n }], reset: [{\n type: Output\n }], apply: [{\n type: Output\n }], columnChange: [{\n type: Output\n }], columns: [{\n type: Input\n }], autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }], applyText: [{\n type: Input\n }], resetText: [{\n type: Input\n }], actionsClass: [{\n type: Input\n }], isLast: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], service: [{\n type: Input\n }], applyButton: [{\n type: ViewChild,\n args: ['applyButton', { static: false }]\n }] } });\n\n/**\n * Represents the component for selecting columns in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-chooser` component.\n *\n * @example\n * {% meta height:300 %}\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n * {% endmeta %}\n */\nclass ColumnMenuChooserComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector, hostElement) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close();\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n}\nColumnMenuChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuChooserComponent, selector: \"kendo-grid-columnmenu-chooser\", inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: [\"columns\", \"autoSync\", \"allowHideAll\", \"applyText\", \"resetText\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\"], outputs: [\"reset\", \"apply\", \"columnChange\"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-chooser',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * Represents the component for editing column filters in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-filter` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuFilterComponent extends ColumnMenuItemBase {\n constructor(localization, hostElement) {\n super();\n this.localization = localization;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n}\nColumnMenuFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuFilterComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuFilterComponent, selector: \"kendo-grid-columnmenu-filter\", inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: [\"column\", \"isLast\", \"isExpanded\", \"menuTabbingService\", \"filter\", \"actionsClass\"], outputs: [\"close\"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-filter',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnMenuItemDirective {\n constructor(hostElement, renderer, ngZone) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this._isFirst = false;\n this._isLast = false;\n this.subs = new Subscription();\n this.onTab = (e) => {\n if (e.keyCode !== Keys.Tab) {\n return;\n }\n if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.lastFocusable.focus();\n }\n if (this.isLast && !e.shiftKey) {\n const lastColumnMenuItem = this.getLastColumnMenuItem();\n const isExpanded = this.menuItemComponent.expanded;\n if (lastColumnMenuItem === e.target && !isExpanded) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.firstFocusable.focus();\n }\n }\n };\n }\n set isFirst(value) {\n if (value) {\n const focusableElement = this.columnMenuItems[0];\n this.menuItemComponent.service.menuTabbingService.firstFocusable = focusableElement;\n this.ngZone.runOutsideAngular(() => {\n const firstItemKeydownSub = this.renderer.listen(focusableElement, 'keydown', this.onTab);\n this.subs.add(firstItemKeydownSub);\n });\n }\n this._isFirst = value;\n }\n get isFirst() {\n return this._isFirst;\n }\n set isLast(value) {\n if (!this.columnMenuItems) {\n return;\n }\n if (value) {\n const lastFocusableElement = this.getLastColumnMenuItem();\n this.menuItemComponent.service.menuTabbingService.lastFocusable = lastFocusableElement;\n this.ngZone.runOutsideAngular(() => {\n const lastItemKeydownSub = this.renderer.listen(lastFocusableElement, 'keydown', this.onTab);\n this.subs.add(lastItemKeydownSub);\n });\n if (this.isExpandableItem()) {\n this.menuItemComponent.isLast = true;\n }\n }\n this._isLast = value;\n }\n get isLast() {\n return this._isLast;\n }\n ngAfterViewInit() {\n this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n [].slice.apply(this.columnMenuItems).forEach(el => this.renderer.setAttribute(el, 'tabindex', '0'));\n if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {\n this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n getLastColumnMenuItem() {\n return (this.columnMenuItems.length === 1 ? this.columnMenuItems[0] : this.columnMenuItems[1]);\n }\n isExpandableItem() {\n return this.menuItemComponent instanceof ColumnMenuFilterComponent ||\n this.menuItemComponent instanceof ColumnMenuChooserComponent ||\n this.menuItemComponent instanceof ColumnMenuPositionComponent;\n }\n}\nColumnMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemDirective, selector: \"[kendoGridColumnMenuItem]\", inputs: { menuItemComponent: [\"kendoGridColumnMenuItem\", \"menuItemComponent\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridColumnMenuItem]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { menuItemComponent: [{\n type: Input,\n args: ['kendoGridColumnMenuItem']\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnMenuContainerComponent {\n constructor(service, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n if (!this.columnMenuItems.length) {\n return;\n }\n this.columnMenuItems.first.isFirst = true;\n this.columnMenuItems.last.isLast = true;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());\n }\n}\nColumnMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: ColumnMenuService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuContainerComponent, selector: \"kendo-grid-columnmenu-container\", queries: [{ propertyName: \"columnMenuItems\", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-container',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone }]; }, propDecorators: { columnMenuItems: [{\n type: ContentChildren,\n args: [ColumnMenuItemDirective, { descendants: true }]\n }] } });\n\n/**\n * Represents a column-menu item for sorting Grid columns that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to sort the column.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-sort` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];\n * }\n *\n * ```\n */\nclass ColumnMenuSortComponent extends ColumnMenuItemBase {\n constructor(localization, sortService, renderer) {\n super();\n this.localization = localization;\n this.sortService = sortService;\n this.renderer = renderer;\n }\n get sortedAsc() {\n const descriptor = this.descriptor;\n return descriptor && (!descriptor.dir || descriptor.dir === 'asc');\n }\n get sortedDesc() {\n const descriptor = this.descriptor;\n return descriptor && descriptor.dir === 'desc';\n }\n /**\n * @hidden\n */\n toggleSort(dir) {\n const field = this.service.column.field;\n const { mode, allowUnsort } = normalize(this.service.sortable);\n const descriptor = this.descriptor;\n const sort = mode === 'multiple' ? this.service.sort.filter(s => s.field !== field) : [];\n if (descriptor && descriptor.dir === dir) {\n if (!allowUnsort) {\n return;\n }\n }\n else {\n sort.push({ field, dir });\n }\n this.sortService.sort(sort);\n this.close();\n }\n get descriptor() {\n return [].concat(this.service.sort || []).find(s => s.field === this.service.column.field);\n }\n}\nColumnMenuSortComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuSortComponent, deps: [{ token: i1.LocalizationService }, { token: SortService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuSortComponent, selector: \"kendo-grid-columnmenu-sort\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-sort',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: SortService }, { type: i0.Renderer2 }]; } });\n\nconst POPUP_CLASS = 'k-grid-columnmenu-popup';\n/**\n * Represents the [column menu]({% slug columnmenu_grid %}) component.\n */\nclass ColumnMenuComponent {\n constructor(popupService, localization, service, navigationService) {\n this.popupService = popupService;\n this.localization = localization;\n this.service = service;\n this.navigationService = navigationService;\n /**\n * @hidden\n */\n this.standalone = true;\n /**\n * The settings for the Column Menu.\n */\n this.settings = {};\n /**\n * @hidden\n */\n this.sortable = true;\n /**\n * @hidden\n */\n this.tabIndex = '-1';\n /**\n * @hidden\n */\n this.expandedFilter = false;\n /**\n * @hidden\n */\n this.expandedColumns = false;\n /**\n * @hidden\n */\n this.expandedPosition = false;\n this.closeSubscription = service.closeMenu.subscribe(this.close.bind(this));\n }\n /**\n * @hidden\n */\n get isActive() {\n return (this.hasFilter && filtersByField(this.filter, this.column.field).length > 0) ||\n (!this.sortable && this.hasSort && this.sort.find(descriptor => descriptor.field === this.column.field));\n }\n /**\n * @hidden\n */\n get hasFilter() {\n return hasFilter(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasSort() {\n return hasSort(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasColumnChooser() {\n return hasColumnChooser(this.settings);\n }\n /**\n * @hidden\n */\n get hasLock() {\n return hasLock(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasStick() {\n return hasStick(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasPosition() {\n return hasPosition(this.settings, this.column);\n }\n ngOnChanges() {\n this.service.column = this.column;\n this.service.sort = this.sort;\n this.service.filter = this.filter;\n this.service.sortable = this.sortable;\n }\n ngOnDestroy() {\n this.close();\n this.closeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n toggle(e, anchor, template) {\n if (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n this.expandedFilter = this.getExpandedState(this.settings.filter);\n this.expandedColumns = this.getExpandedState(this.settings.columnChooser);\n this.expandedPosition = this.getExpandedState(this.settings.setColumnPosition);\n this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASS);\n if (!this.popupRef) {\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n }\n /**\n * @hidden\n */\n close() {\n this.popupService.destroy();\n this.popupRef = null;\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n get columnMenuTitle() {\n const localizationMsg = this.localization.get('columnMenu') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n getExpandedState(menuItemSettings) {\n return typeof (menuItemSettings) === 'object' ? menuItemSettings.expanded : false;\n }\n}\nColumnMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: SinglePopupService }, { token: i1.LocalizationService }, { token: ColumnMenuService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuComponent, selector: \"kendo-grid-column-menu\", inputs: { standalone: \"standalone\", column: \"column\", settings: \"settings\", sort: \"sort\", filter: \"filter\", sortable: \"sortable\", columnMenuTemplate: \"columnMenuTemplate\", tabIndex: \"tabIndex\" }, host: { properties: { \"class.k-grid-column-menu-standalone\": \"this.standalone\" } }, providers: [\n ColumnMenuService,\n MenuTabbingService\n ], viewQueries: [{ propertyName: \"anchor\", first: true, predicate: [\"anchor\"], descendants: true, static: true }, { propertyName: \"template\", first: true, predicate: [\"template\"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuContainerComponent, selector: \"kendo-grid-columnmenu-container\" }, { type: ColumnMenuSortComponent, selector: \"kendo-grid-columnmenu-sort\" }, { type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\" }, { type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\" }, { type: ColumnMenuPositionComponent, selector: \"kendo-grid-columnmenu-position\", inputs: [\"expanded\", \"showLock\", \"showStick\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }, { type: ColumnMenuChooserComponent, selector: \"kendo-grid-columnmenu-chooser\", inputs: [\"expanded\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }, { type: ColumnMenuFilterComponent, selector: \"kendo-grid-columnmenu-filter\", inputs: [\"expanded\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: ColumnMenuItemDirective, selector: \"[kendoGridColumnMenuItem]\", inputs: [\"kendoGridColumnMenuItem\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n ColumnMenuService,\n MenuTabbingService\n ],\n selector: 'kendo-grid-column-menu',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: i1.LocalizationService }, { type: ColumnMenuService }, { type: NavigationService }]; }, propDecorators: { standalone: [{\n type: HostBinding,\n args: ['class.k-grid-column-menu-standalone']\n }, {\n type: Input\n }], column: [{\n type: Input\n }], settings: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], sortable: [{\n type: Input\n }], columnMenuTemplate: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], anchor: [{\n type: ViewChild,\n args: ['anchor', { static: true }]\n }], template: [{\n type: ViewChild,\n args: ['template', { static: true, read: TemplateRef }]\n }] } });\n\n/**\n * Represents a component which accommodates the filter operators.\n */\nclass FilterCellOperatorsComponent {\n constructor(localization) {\n this.localization = localization;\n this.clearText = 'Clear';\n /**\n * The filter operators that will be displayed.\n */\n this.operators = [];\n /**\n * Determines if the list of operators will be displayed.\n * @type {boolean}\n */\n this.showOperators = true;\n /**\n * Fires when the operator is selected.\n * @type {EventEmitter}\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the **Clear** button is clicked.\n * @type {EventEmitter<{}>}\n */\n this.clear = new EventEmitter();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * @hidden\n */\n onChange(dataItem) {\n this.valueChange.emit(dataItem);\n }\n /**\n * @hidden\n */\n clearClick() {\n this.clear.emit();\n return false;\n }\n /**\n * @hidden\n */\n clearKeydown(args) {\n if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {\n this.clear.emit();\n }\n }\n /**\n * @hidden\n */\n dropdownKeydown(args) {\n if (args.defaultPrevented) {\n return;\n }\n if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {\n this.dropdown.toggle(true);\n args.preventDefault();\n }\n }\n ngOnInit() {\n this.localization.changes.subscribe(() => this.clearText = this.localization.get(\"filterClearButton\"));\n }\n}\nFilterCellOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellOperatorsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellOperatorsComponent, selector: \"kendo-grid-filter-cell-operators\", inputs: { operators: \"operators\", showButton: \"showButton\", showOperators: \"showOperators\", value: \"value\" }, outputs: { valueChange: \"valueChange\", clear: \"clear\" }, host: { properties: { \"class.k-filtercell-operator\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"dropdown\", first: true, predicate: [\"dropdown\"], descendants: true }], ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellOperatorsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-cell-operators',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-operator']\n }], dropdown: [{\n type: ViewChild,\n args: ['dropdown', { static: false }]\n }], operators: [{\n type: Input\n }], showButton: [{\n type: Input\n }], showOperators: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], clear: [{\n type: Output\n }] } });\n\nconst EMPTY_FILTER_OPERATORS = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n/**\n * @hidden\n */\nclass FilterCellWrapperComponent extends FilterInputWrapperComponent {\n constructor(filterService) {\n super(filterService);\n this.showOperators = true;\n }\n get hostClasses() {\n return true;\n }\n get overrideBaseClasses() {\n return false;\n }\n get showButton() {\n const filter = this.currentFilter;\n return isPresent(filter) && (!isNullOrEmptyString(filter.value) ||\n EMPTY_FILTER_OPERATORS.indexOf(String(filter.operator)) >= 0);\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n}\nFilterCellWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellWrapperComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Component });\nFilterCellWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: { showOperators: \"showOperators\" }, host: { properties: { \"class.k-filtercell-wrapper\": \"this.hostClasses\", \"class.k-filtercell\": \"this.overrideBaseClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: \"kendo-grid-filter-cell-operators\", inputs: [\"operators\", \"showButton\", \"showOperators\", \"value\"], outputs: [\"valueChange\", \"clear\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-wrapper-cell',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-wrapper']\n }], overrideBaseClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a string-filter cell component\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-configuration-components-for-filter-templates)).\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass StringFilterCellComponent extends StringFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay. The default value is `500`.\n * @type {boolean}\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nStringFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterCellComponent, selector: \"kendo-grid-string-filter-cell\", inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }], directives: [{ type: i4$1.TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: [\"value\"] }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-cell',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a numeric filter cell.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NumericFilterCellComponent extends NumericFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n this.localization = localization;\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay. The default value is `500`.\n * @type {boolean}\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nNumericFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterCellComponent, selector: \"kendo-grid-numeric-filter-cell\", inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$1.NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\" }], directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a Boolean filter-cell component.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass BooleanFilterCellComponent extends BooleanFilterComponent {\n constructor(filterService, localization, cd) {\n super(filterService, localization);\n this.cd = cd;\n }\n localizationChange() {\n super.localizationChange();\n this.cd.markForCheck();\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nBooleanFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterCellComponent, selector: \"kendo-grid-boolean-filter-cell\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents a date-filter cell component.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass DateFilterCellComponent extends DateFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n this.localization = localization;\n /**\n * Determines if the drop-down filter operators will be displayed. The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nDateFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterCellComponent, selector: \"kendo-grid-date-filter-cell\", inputs: { showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { showOperators: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * > List the following components in the GridModule as `entryComponents`.\n */\nconst filterComponentFactory = (type) => ({\n \"boolean\": BooleanFilterCellComponent,\n \"date\": DateFilterCellComponent,\n \"numeric\": NumericFilterCellComponent,\n \"text\": StringFilterCellComponent\n}[type]);\n\n/**\n * @hidden\n */\nclass FilterCellHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (!isNullOrEmptyString(this.column.filter)) {\n return filterComponentFactory(this.column.filter);\n }\n return StringFilterCellComponent;\n }\n}\nFilterCellHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterCellHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellHostDirective, selector: \"[kendoFilterCellHost]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterCellHost]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * @hidden\n */\nclass FilterCellComponent {\n constructor() {\n this._templateContext = {};\n }\n get filter() {\n return this._filter;\n }\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.filter;\n this._templateContext['$implicit'] = this.filter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column.filterCellTemplateRef);\n }\n get isFilterable() {\n return isPresent(this.column) && !isNullOrEmptyString(this.column.field) && this.column.filterable;\n }\n}\nFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellComponent, selector: \"[kendoGridFilterCell]\", inputs: { column: \"column\", filter: \"filter\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: FilterCellHostDirective, selector: \"[kendoFilterCellHost]\" }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterCell]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\nlet id$1 = 0;\nfunction nextId$1() {\n return id$1++;\n}\n/**\n * @hidden\n */\nclass LogicalCellDirective {\n constructor(focusGroup, element, columnInfoService, idService, navigationService, renderer, zone, cellContext) {\n this.focusGroup = focusGroup;\n this.element = element;\n this.columnInfoService = columnInfoService;\n this.idService = idService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.zone = zone;\n this.cellContext = cellContext;\n this.logicalSlaveCell = false;\n this.colSpan = 1;\n this.rowSpan = 1;\n this.dataRowIndex = -1;\n this.detailExpandCell = false;\n this.uid = nextId$1();\n }\n get id() {\n if (!this.logicalSlaveCell && this.columnInfoService.isLocked) {\n return this.idService.cellId(this.logicalRowIndex, this.logicalColIndex);\n }\n }\n get ariaColIndex() {\n if (this.logicalSlaveCell || this.logicalColIndex === -1) {\n return undefined;\n }\n return this.logicalColIndex + 1;\n }\n ngOnInit() {\n if (!this.navigationService.tableEnabled) {\n return;\n }\n this.navigationChange = this.navigationService.changes.subscribe((e) => this.onNavigationChange(e));\n }\n ngDoCheck() {\n if (!this.navigationService.tableEnabled || this.logicalColIndex === -1) {\n return;\n }\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n this.registerNoChanges();\n }\n ngOnChanges(changes) {\n if (!this.navigationService.tableEnabled) {\n return;\n }\n const keys = Object.keys(changes);\n if ((keys.length === 1 && keys[0] === 'groupItem') || this.logicalColIndex === -1) {\n // Ignore groupItem changes as the reference is not stable\n return;\n }\n const indexChange = changes.logicalColIndex;\n const rowIndexChange = changes.logicalRowIndex;\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalColIndex;\n const rowIndex = rowIndexChange && !rowIndexChange.isFirstChange() ? rowIndexChange.previousValue : this.logicalRowIndex;\n this.navigationService.unregisterCell(index, rowIndex, this);\n this.registerChanges();\n this.updateElement();\n }\n ngOnDestroy() {\n if (this.navigationChange) {\n this.navigationChange.unsubscribe();\n }\n this.navigationService.unregisterCell(this.logicalColIndex, this.logicalRowIndex, this);\n }\n onNavigationChange(e) {\n const active = this.logicalColIndex === e.colIndex && this.logicalRowIndex === e.rowIndex;\n const wasActive = this.logicalColIndex === e.prevColIndex && this.logicalRowIndex === e.prevRowIndex;\n if (active || wasActive) {\n this.updateElement();\n }\n }\n updateElement() {\n const el = this.element.nativeElement;\n this.renderer.setAttribute(el, 'tabIndex', this.isFocusable() && !this.logicalSlaveCell ? '0' : '-1');\n if (this.isFocused()) {\n if (this.focusGroup.isNavigable()) {\n this.focusGroup.focus();\n }\n else {\n if (!this.logicalSlaveCell && this.navigationService.autoFocusCell(this.logicalColIndex, this.logicalColIndex + this.colSpan - 1)) {\n this.microtask(() => this.isFocused() && el.focus());\n }\n this.renderer.addClass(el, 'k-state-focused');\n }\n if (this.headerLabelText) {\n el.setAttribute('aria-label', '');\n }\n }\n else {\n this.renderer.removeClass(el, 'k-state-focused');\n if (this.headerLabelText) {\n el.setAttribute('aria-label', this.headerLabelText);\n }\n }\n }\n microtask(callback) {\n this.zone.runOutsideAngular(() => Promise.resolve(null).then(callback));\n }\n registerChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCell(this);\n }\n }\n registerNoChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCellOnCurrentRow(this);\n }\n }\n isFocusable() {\n return this.navigationService.isCellFocusable(this);\n }\n isFocused() {\n return this.navigationService.isCellFocused(this);\n }\n}\nLogicalCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalCellDirective, deps: [{ token: FocusGroup }, { token: i0.ElementRef }, { token: ColumnInfoService }, { token: IdService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLogicalCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: { logicalColIndex: \"logicalColIndex\", logicalRowIndex: \"logicalRowIndex\", logicalSlaveCell: \"logicalSlaveCell\", colIndex: \"colIndex\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", groupItem: \"groupItem\", dataRowIndex: \"dataRowIndex\", dataItem: \"dataItem\", detailExpandCell: \"detailExpandCell\", headerLabelText: \"headerLabelText\" }, host: { properties: { \"attr.id\": \"this.id\", \"attr.aria-colindex\": \"this.ariaColIndex\" } }, providers: [{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalCellDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }],\n selector: '[kendoGridLogicalCell]'\n }]\n }], ctorParameters: function () { return [{ type: FocusGroup }, { type: i0.ElementRef }, { type: ColumnInfoService }, { type: IdService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, propDecorators: { logicalColIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], logicalSlaveCell: [{\n type: Input\n }], colIndex: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], groupItem: [{\n type: Input\n }], dataRowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], detailExpandCell: [{\n type: Input\n }], headerLabelText: [{\n type: Input\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], ariaColIndex: [{\n type: HostBinding,\n args: ['attr.aria-colindex']\n }] } });\n\n/**\n * @hidden\n */\nclass FilterRowComponent {\n constructor(localization, columnInfoService) {\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.filterRowClass = true;\n }\n addStickyStyles(column) {\n const sticky = column.sticky ? this.columnInfoService.stickyColumnsStyles(column) : null;\n return Object.assign(Object.assign({}, sticky), column.filterStyle);\n }\n filterLabel(column) {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = column.title || column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nFilterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterRowComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nFilterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterRowComponent, selector: \"[kendoGridFilterRow]\", inputs: { columns: \"columns\", filter: \"filter\", groups: \"groups\", detailTemplate: \"detailTemplate\", logicalRowIndex: \"logicalRowIndex\", lockedColumnsCount: \"lockedColumnsCount\" }, host: { properties: { \"class.k-filter-row\": \"this.filterRowClass\" } }, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellComponent, selector: \"[kendoGridFilterCell]\", inputs: [\"column\", \"filter\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterRowComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterRow]',\n template: `\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], filter: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], filterRowClass: [{\n type: HostBinding,\n args: ['class.k-filter-row']\n }] } });\n\nlet id = 0;\nfunction nextId() {\n return id++;\n}\n/**\n * @hidden\n */\nclass LogicalRowDirective {\n constructor(idService, navigation) {\n this.idService = idService;\n this.navigation = navigation;\n this.logicalSlaveRow = false;\n this.logicalSlaveCellsCount = 0;\n this.dataRowIndex = -1;\n this.uid = nextId();\n }\n get hostRole() {\n return this.logicalSlaveRow ? 'presentation' : 'row';\n }\n get ariaRowIndex() {\n return this.logicalRowIndex + 1;\n }\n get ariaOwns() {\n if (!this.navigation.enabled || this.logicalSlaveRow || this.logicalSlaveCellsCount === 0) {\n return undefined;\n }\n const ids = [];\n const total = this.logicalCellsCount + this.logicalSlaveCellsCount;\n for (let cellIndex = this.logicalCellsCount; cellIndex < total; cellIndex++) {\n ids.push(this.idService.cellId(this.logicalRowIndex, cellIndex));\n }\n return ids.join(' ');\n }\n ngOnChanges(changes) {\n if (!this.navigation.enabled || this.logicalSlaveRow) {\n return;\n }\n const indexChange = changes.logicalRowIndex;\n const logicalSlaveRowChange = changes.logicalSlaveRow;\n if (indexChange || logicalSlaveRowChange) {\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalRowIndex;\n this.navigation.unregisterRow(index, this);\n this.navigation.registerRow(this);\n }\n else if (anyChanged(['dataRowIndex', 'dataItem'], changes)) {\n this.navigation.updateRow(this);\n }\n }\n ngOnDestroy() {\n this.navigation.unregisterRow(this.logicalRowIndex, this);\n }\n}\nLogicalRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalRowDirective, deps: [{ token: IdService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Directive });\nLogicalRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: { logicalRowIndex: \"logicalRowIndex\", logicalSlaveRow: \"logicalSlaveRow\", logicalCellsCount: \"logicalCellsCount\", logicalSlaveCellsCount: \"logicalSlaveCellsCount\", dataRowIndex: \"dataRowIndex\", dataItem: \"dataItem\" }, host: { properties: { \"attr.role\": \"this.hostRole\", \"attr.aria-rowindex\": \"this.ariaRowIndex\", \"attr.aria-owns\": \"this.ariaOwns\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalRowDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridLogicalRow]'\n }]\n }], ctorParameters: function () { return [{ type: IdService }, { type: NavigationService }]; }, propDecorators: { logicalRowIndex: [{\n type: Input\n }], logicalSlaveRow: [{\n type: Input\n }], logicalCellsCount: [{\n type: Input\n }], logicalSlaveCellsCount: [{\n type: Input\n }], dataRowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], hostRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaRowIndex: [{\n type: HostBinding,\n args: ['attr.aria-rowindex']\n }], ariaOwns: [{\n type: HostBinding,\n args: ['attr.aria-owns']\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n this.removeView();\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n ngOnDestroy() {\n this.removeView();\n }\n removeView() {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).\n */\nclass SelectAllCheckboxDirective {\n constructor(selectionService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n /**\n * Fires when the user clicks the `kendoGridSelectAllCheckbox` select-all checkbox\n * ([see example]({% slug selection_grid %}#toc-select-all-feature)).\n */\n this.selectAllChange = new EventEmitter();\n this.type = 'checkbox';\n this.stateSet = false;\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setState();\n }\n ngOnChanges() {\n this.stateSet = true;\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n }\n /**\n * @hidden\n */\n onClick() {\n // yields consistent cross-browser behavior when clicking an indeterminate checkbox\n const undefinedCheckedStateInIE = detectIE() && this.selectionService.selectAllState === undefined;\n const isChecked = undefinedCheckedStateInIE ? true : this.el.nativeElement.checked;\n const options = this.selectionService.options;\n const enabledAndMultiple = options.enabled && options.mode === 'multiple';\n const shouldEmitSelectAll = hasObservers(this.selectAllChange);\n if (enabledAndMultiple || shouldEmitSelectAll) {\n this.ngZone.run(() => {\n if (enabledAndMultiple) {\n this.selectionService.updateAll(isChecked);\n }\n if (shouldEmitSelectAll) {\n this.selectAllChange.emit(isChecked ? 'checked' : 'unchecked');\n }\n });\n }\n }\n /**\n * @hidden\n */\n setState() {\n const state = this.stateSet ? this.stateToBool() : this.selectionService.selectAllState;\n const elem = this.el.nativeElement;\n this.renderer.setProperty(elem, 'indeterminate', !isPresent(state));\n this.renderer.setProperty(elem, 'checked', isPresent(state) ? state : false);\n }\n /**\n * @hidden\n */\n stateToBool() {\n switch (this.state) {\n case 'checked':\n return true;\n case 'unchecked':\n return false;\n default:\n return undefined;\n }\n }\n}\nSelectAllCheckboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectAllCheckboxDirective, deps: [{ token: SelectionService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSelectAllCheckboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectAllCheckboxDirective, selector: \"[kendoGridSelectAllCheckbox]\", inputs: { state: \"state\" }, outputs: { selectAllChange: \"selectAllChange\" }, host: { properties: { \"attr.type\": \"this.type\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectAllCheckboxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectAllCheckbox]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { state: [{\n type: Input\n }], selectAllChange: [{\n type: Output\n }], type: [{\n type: HostBinding,\n args: ['attr.type']\n }] } });\n\n/**\n * @hidden\n */\nconst fromPercentage = (value, percent) => {\n const sign = percent < 0 ? -1 : 1;\n return Math.ceil((Math.abs(percent) / 100) * value) * sign;\n};\n/**\n * @hidden\n */\nconst toPercentage = (value, whole) => (value / whole) * 100;\n/**\n * @hidden\n */\nconst headerWidth = (handle) => handle.nativeElement.parentElement.offsetWidth;\n/**\n * @hidden\n */\nconst allLeafColumns = columns => expandColumns(columns)\n .filter(c => !c.isColumnGroup);\n/**\n * @hidden\n */\nconst stopPropagation = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst createMoveStream = (service, draggable) => mouseDown => draggable.kendoDrag.pipe(\n// eslint-disable-next-line rxjs/no-unsafe-takeuntil\ntakeUntil(draggable.kendoRelease.pipe(tap(() => service.end()))), map(({ pageX }) => ({\n originalX: mouseDown.pageX,\n pageX\n})));\n/**\n * @hidden\n */\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst isInSpanColumn = column => !!(column.parent && column.parent.isSpanColumn);\n/**\n * @hidden\n *\n * Calculates the column index. If the column is stated in `SpanColumn`,\n * the index for all child columns equals the index of the first child.\n */\nconst indexOf = (target, list) => {\n let index = 0;\n let ignore = 0;\n let skip = 0;\n while (index < list.length) {\n const current = list[index];\n const isParentSpanColumn = isInSpanColumn(current);\n if (current === target) {\n break;\n }\n if ((ignore-- <= 0) && isParentSpanColumn) {\n ignore = current.parent.childColumns.length - 1;\n skip += ignore;\n }\n index++;\n }\n return index - skip;\n};\n/**\n * @hidden\n */\nclass ColumnHandleDirective {\n constructor(draggable, element, service, zone, cdr, localization, columnInfoService) {\n this.draggable = draggable;\n this.element = element;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.subscriptions = new Subscription();\n this.rtl = false;\n }\n get visible() {\n return this.column.resizable ? 'block' : 'none';\n }\n get leftStyle() {\n return isTruthy(this.rtl) ? 0 : null;\n }\n get rightStyle() {\n return isTruthy(this.rtl) ? null : 0;\n }\n autoFit() {\n const allLeafs = allLeafColumns(this.columns);\n const currentLeafs = leafColumns([this.column]).filter(column => isTruthy(column.resizable));\n const columnInfo = currentLeafs.map(column => {\n const isParentSpan = isInSpanColumn(column);\n const isLastInSpan = isParentSpan ? column.parent.childColumns.last === column : false;\n const index = indexOf(column, allLeafs);\n return {\n column,\n headerIndex: this.columnsForLevel(column.level).indexOf(column),\n index,\n isLastInSpan,\n isParentSpan,\n level: column.level\n };\n });\n currentLeafs.forEach(column => column.width = 0);\n this.service.measureColumns(columnInfo);\n }\n ngOnInit() {\n if (isBlank(this.column.width)) {\n this.column.implicitWidth = headerWidth(this.element);\n }\n const service = this.service.changes.pipe(filter(() => this.column.resizable), filter(e => isPresent(e.columns.find(column => column === this.column))));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'start'))\n .subscribe(this.initState.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'resizeColumn'))\n .subscribe(this.resize.bind(this)));\n this.subscriptions.add(this.service.changes.pipe(filter(e => e.type === 'start'), filter(this.shouldUpdate.bind(this)), take(1) //on first resize only\n ).subscribe(this.initColumnWidth.bind(this)));\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(tap(stopPropagation), tap(() => this.service.start(this.column)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.service, this.draggable)))\n .subscribe(({ pageX, originalX }) => {\n const delta = pageX - originalX;\n const percent = toPercentage(delta, this.column.resizeStartWidth || this.column.width);\n this.service.resizeColumns(percent);\n })));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'autoFitComplete'))\n .subscribe(this.sizeToFit.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'triggerAutoFit'))\n .subscribe(this.autoFit.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n shouldUpdate() {\n return !allLeafColumns(this.columns)\n .map(column => column.width)\n .some(isBlank);\n }\n initColumnWidth() {\n this.column.width = headerWidth(this.element);\n }\n initState() {\n this.column.resizeStartWidth = headerWidth(this.element);\n this.service.resizedColumn({\n column: this.column,\n oldWidth: this.column.resizeStartWidth\n });\n }\n resize({ deltaPercent }) {\n let delta = fromPercentage(this.column.resizeStartWidth, deltaPercent);\n if (isTruthy(this.rtl)) {\n delta *= -1;\n }\n const newWidth = Math.max(this.column.resizeStartWidth + delta, this.column.minResizableWidth);\n const tableDelta = newWidth > this.column.minResizableWidth ?\n delta : this.column.minResizableWidth - this.column.resizeStartWidth;\n this.updateWidth(this.column, newWidth);\n this.service.resizeTable(this.column, tableDelta);\n }\n sizeToFit({ columns, widths }) {\n const index = columns.indexOf(this.column);\n const width = Math.max(...widths.map(w => w[index])) + 1; //add 1px for IE\n const tableDelta = width - this.column.resizeStartWidth;\n this.updateWidth(this.column, width);\n this.service.resizeTable(this.column, tableDelta);\n }\n updateWidth(column, width) {\n column.width = width;\n this.columnInfoService.hiddenColumns.forEach((col) => {\n if (isBlank(col.width) && isPresent(col.implicitWidth)) {\n // Resize hidden columns to their implicit width so they\n // can be displayed with the same width if made visible.\n col.width = col.implicitWidth;\n }\n });\n this.cdr.markForCheck(); //force CD cycle\n }\n columnsForLevel(level) {\n return columnsToRender(this.columns ? this.columns.filter(column => column.level === level) : []);\n }\n}\nColumnHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHandleDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: ColumnResizingService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Directive });\nColumnHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnHandleDirective, selector: \"[kendoGridColumnHandle]\", inputs: { columns: \"columns\", column: \"column\" }, host: { listeners: { \"dblclick\": \"autoFit()\" }, properties: { \"style.display\": \"this.visible\", \"style.left\": \"this.leftStyle\", \"style.right\": \"this.rightStyle\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: ColumnResizingService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], column: [{\n type: Input\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], leftStyle: [{\n type: HostBinding,\n args: ['style.left']\n }], rightStyle: [{\n type: HostBinding,\n args: ['style.right']\n }], autoFit: [{\n type: HostListener,\n args: ['dblclick']\n }] } });\n\nconst mergeObjects = (...args) => Object.assign.apply(null, [{}].concat(args));\nconst directions = initialDirection => initialDirection === \"asc\" ? [\"asc\", \"desc\"] : [\"desc\", \"asc\"];\n/**\n * @hidden\n */\nconst isRootLevel = ({ parent }) => !isTruthy(parent);\nconst ofColumnType = ({ draggable }) => ['column', 'columnGroup']\n .indexOf(draggable.context.type) >= 0;\nconst notSameElement = ({ draggable, target }) => draggable.element.nativeElement !== target.element.nativeElement;\nconst inSameParent = (x, y) => x.parent === y.parent ||\n (isInSpanColumn$1(y) && inSameParent(x, y.parent));\nconst sameParent = ({ draggable, target }) => inSameParent(draggable.context.column, target.context.column);\nconst lastNonLocked = ({ draggable }) => !isTruthy(draggable.context.column.locked) &&\n isRootLevel(draggable.context.column) &&\n draggable.context.lastColumn;\nconst notInSpanColumn = ({ draggable }) => !isInSpanColumn$1(draggable.context.column);\nconst reorderable = ({ draggable }) => draggable.context.column.reorderable;\nconst lockable = ({ draggable, target }) => draggable.context.column.lockable !== false ||\n draggable.context.column.isLocked === target.context.column.isLocked;\nconst rules = and(ofColumnType, reorderable, notInSpanColumn, notSameElement, sameParent, not(lastNonLocked), lockable);\nconst modifierKeys = ['alt', 'ctrl', 'shift', 'meta'];\n/**\n * @hidden\n */\nclass HeaderComponent {\n constructor(popupService, hint, cue, reorderService, idService, sortService, localization, columnInfoService, cd) {\n this.popupService = popupService;\n this.hint = hint;\n this.cue = cue;\n this.reorderService = reorderService;\n this.idService = idService;\n this.sortService = sortService;\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.cd = cd;\n this.columns = [];\n this.groups = [];\n this.sort = new Array();\n this.sortable = false;\n this.groupable = false;\n this.lockedColumnsCount = 0;\n this.resizable = false;\n this.reorderable = false;\n this.columnMenu = false;\n this.totalColumnsCount = 0;\n this.sortedFields = {};\n this.dropTargets = new QueryList();\n this.subscription = new Subscription();\n }\n get headerClass() {\n return !this.scrollable;\n }\n get sortableLabel() {\n return this.localization.get('sortable');\n }\n get columnMenuSettings() {\n return this.columnMenu;\n }\n // Number of unlocked columns in the next table, if any\n get unlockedColumnsCount() {\n return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;\n }\n sortColumn(descriptor) {\n this.sortService.sort(descriptor);\n }\n getColumnComponent(column) {\n return column;\n }\n onSortClick(column, event, link) {\n const target = event.target;\n if (column.headerTemplateRef && target !== link) {\n const hasFocusableParent = Boolean(closestInScope(target, isFocusable, link));\n if (hasFocusableParent) {\n // Do not sort when clicking focusable template elements.\n return;\n }\n }\n const modifier = this.matchModifier(event);\n const toggledColumn = this.toggleSort(column, modifier);\n this.sortColumn(toggledColumn);\n }\n onHeaderKeydown(column, args) {\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const filterMenu = this.filterMenus.find(fm => fm.column === column);\n filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);\n }\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const columnMenu = this.columnMenus.find(cm => cm.column === column);\n columnMenu.toggle(null, columnMenu.anchor.nativeElement, columnMenu.template);\n }\n if (!this.sortable || args.defaultPrevented || column.sortable === false) {\n return;\n }\n if (args.keyCode === Keys.Enter && isPresent(column.field)) {\n const modifier = this.matchModifier(args);\n this.sortService.sort(this.toggleSort(column, modifier));\n }\n }\n showSortNumbering(column) {\n const { showIndexes } = normalize(this.sortable);\n return showIndexes\n && this.sort\n && this.sort.filter(({ dir }) => isPresent(dir)).length > 1\n && this.sortOrder(column.field) > 0;\n }\n sortOrder(field) {\n return this.sort\n .filter(({ dir }) => isPresent(dir))\n .findIndex(x => x.field === field)\n + 1;\n }\n sortIcon(field) {\n const state = this.sortDescriptor(field);\n return {\n 'k-icon': isPresent(state.dir),\n 'k-i-sort-desc-sm': state.dir === \"desc\",\n 'k-i-sort-asc-sm': state.dir === \"asc\"\n };\n }\n sortState(column) {\n if (!this.isSortable(column)) {\n return;\n }\n const state = this.sortDescriptor(column.field);\n if (state.dir === 'asc') {\n return 'ascending';\n }\n if (state.dir === 'desc') {\n return 'descending';\n }\n }\n sortStatus(column) {\n if (!this.sortedFields[column.field] || !this.isSortable(column)) {\n return;\n }\n let msg = 'sortedDefault';\n const state = this.sortDescriptor(column.field);\n if (state.dir === 'asc') {\n msg = 'sortedAscending';\n }\n else if (state.dir === 'desc') {\n msg = 'sortedDescending';\n }\n return this.localization.get(msg);\n }\n /**\n *\n * @param column\n * @param modifier - Indicates whether the client-defined `multiSortKey` modifier is met. Defaults to `true`.\n * @returns - SortDescriptor[]\n */\n toggleSort(column, modifier = true) {\n const { allowUnsort, mode, initialDirection } = normalize(this.sortable, column.sortable);\n const descriptor = this.toggleDirection(column.field, allowUnsort, initialDirection);\n if (mode === 'single' || !modifier) {\n return [descriptor];\n }\n return [...this.sort.filter(desc => desc.field !== column.field), descriptor];\n }\n /**\n *\n * Determines whether the modifier key (if any) passed\n * with a click/keyboard event matches the user-defined multiSortKey.\n */\n matchModifier(event) {\n const { multiSortKey } = normalize(this.sortable);\n if (multiSortKey === 'none') {\n return modifierKeys.every(key => !event[`${key}Key`]);\n }\n return multiSortKey === 'ctrl'\n ? event.ctrlKey || event.metaKey\n : event[`${multiSortKey}Key`];\n }\n ngAfterViewInit() {\n this.subscription.add(observe(this.dropTargets)\n .subscribe(this.attachTargets.bind(this)));\n }\n ngDoCheck() {\n this._leafColumns = columnsToRender(this.columns || []).filter(x => !isColumnGroupComponent(x));\n }\n ngOnChanges(changes) {\n const sortChange = changes.sort;\n if (sortChange && !sortChange.isFirstChange()) {\n sortChange.currentValue.forEach(change => {\n this.sortedFields[change.field] = true;\n });\n }\n }\n ngOnInit() {\n this.subscription.add(this.localization.changes\n .subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n if (this.popupService) {\n this.popupService.destroy();\n }\n this.subscription.unsubscribe();\n }\n selectAllCheckboxId() {\n return this.idService.selectAllCheckboxId();\n }\n get selectAllCheckboxLabel() {\n return this.localization.get('selectAllCheckboxLabel');\n }\n isFirstOnRow(column, index) {\n const isTailing = (c) => c &&\n (this.columnsForLevel(c.level).indexOf(c) > 0 || isTailing(c.parent));\n return index === 0 && !this.groups.length && !this.detailTemplate && isTailing(column.parent);\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n get showFilterMenu() {\n return !this.columnMenu && hasFilterMenu(this.filterable);\n }\n get showFilterRow() {\n return hasFilterRow(this.filterable);\n }\n showColumnMenu(column) {\n return this.columnMenu && column.columnMenu &&\n (this.columnMenuTemplate || column.columnMenuTemplates.length || hasItems(this.columnMenu, column));\n }\n isFilterable(column) {\n return !isNullOrEmptyString(column.field) && column.filterable === true;\n }\n canDrop(draggable, target) {\n return this.reorderable && rules({ draggable, target });\n }\n shouldActivate(column) {\n const canReorder = this.reorderable && column.reorderable;\n if (!canReorder && !isColumnComponent(column)) {\n return false;\n }\n const groupable = this.groupable && isColumnComponent(column) && column.groupable !== false;\n return groupable || canReorder;\n }\n isSortable(column) {\n return !isNullOrEmptyString(column.field)\n && isTruthy(this.sortable) && isTruthy(column.sortable);\n }\n isCheckboxColumn(column) {\n return isCheckboxColumn(column) && !column.templateRef;\n }\n trackByIndex(index, _item) {\n return index;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n toggleDirection(field, allowUnsort, initialDirection) {\n const descriptor = this.sortDescriptor(field);\n const [first, second] = directions(initialDirection);\n let dir = first;\n if (descriptor.dir === first) {\n dir = second;\n }\n else if (descriptor.dir === second && allowUnsort) {\n dir = undefined;\n }\n return { dir, field };\n }\n columnsForLevel(level) {\n const columns = this.columns ? this.columns.filter(column => column.level === level) : [];\n return sortColumns(columnsToRender(columns));\n }\n isColumnGroupComponent(column) {\n return isColumnGroupComponent(column);\n }\n get columnLevels() {\n return new Array((this.totalColumnLevels || 0) + 1);\n }\n sortDescriptor(field) {\n return this.sort.find(item => item.field === field) || { field };\n }\n get leafColumns() {\n return this._leafColumns;\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = merge(...this.dropTargets.map(target => target.enter));\n const leaveStream = merge(...this.dropTargets.map(target => target.leave));\n const dropStream = merge(...this.dropTargets.map(target => target.drop));\n this.targetSubscription.add(enterStream.pipe(tap(({ target, draggable }) => {\n if (draggable.context.type === 'groupIndicator') {\n return;\n }\n const targetLocked = isTruthy(target.context.column.isLocked);\n const draggableLocked = isTruthy(draggable.context.column.isLocked);\n if (this.lockedColumnsCount > 0 || targetLocked || draggableLocked) {\n this.hint.toggleLock(targetLocked);\n }\n }), filter(({ draggable, target }) => this.canDrop(draggable, target)), switchMap(this.trackMove.bind(this, leaveStream, dropStream)), map((e) => mergeObjects(e, { before: this.calculateBefore(e), changeContainer: e.changeContainer })), map(this.normalizeTarget.bind(this)), tap(this.enter.bind(this)), switchMap((args) => dropStream.pipe(map(() => args), takeUntil(leaveStream.pipe(tap(this.leave.bind(this)))))))\n .subscribe(this.drop.bind(this)));\n }\n normalizeTarget(e) {\n let target = e.target;\n const parent = target.context.column.parent;\n if (parent && parent.isSpanColumn) {\n const arr = this.dropTargets.toArray();\n const firstSpan = arr.find(t => t.context.column.parent === parent);\n const index = arr.indexOf(firstSpan);\n const adjust = e.before ? 0 : parent.childColumns.length - 1;\n target = arr[index + adjust];\n }\n return mergeObjects(e, { target });\n }\n trackMove(leaveStream, dropStream, e) {\n const column = e.target.context.column;\n const levelColumns = this.columnsForLevel(column.level);\n const index = levelColumns.indexOf(column);\n const isFirst = (column.locked ? index === levelColumns.length - 1 : index === 0);\n const changed = e.draggable.context.column.isLocked !== column.isLocked;\n if (changed && isFirst) {\n return e.draggable.drag\n .pipe(takeUntil(leaveStream), takeUntil(dropStream), map(({ mouseEvent }) => mergeObjects({ changeContainer: true }, e, { mouseEvent })));\n }\n return of(mergeObjects({ changeContainer: changed }, e));\n }\n calculateBefore({ draggable, target, mouseEvent, changeContainer = false }) {\n const targetElement = target.element.nativeElement;\n let before = false;\n if (changeContainer) {\n const { left } = offset(targetElement);\n const halfWidth = targetElement.offsetWidth / 2;\n const middle = left + halfWidth;\n before = middle > mouseEvent.pageX;\n if (this.localization.rtl) {\n before = !before;\n }\n }\n else {\n before = isTargetBefore(draggable.element.nativeElement, targetElement);\n }\n return before;\n }\n enter({ target, before }) {\n this.hint.enable();\n if (this.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({ draggable, target, before, changeContainer }) {\n this.reorderService.reorder({\n before,\n changeContainer,\n source: draggable.context.column,\n target: target.context.column\n });\n }\n}\nHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, deps: [{ token: SinglePopupService }, { token: DragHintService }, { token: DropCueService }, { token: ColumnReorderService }, { token: IdService }, { token: SortService }, { token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderComponent, selector: \"[kendoGridHeader]\", inputs: { totalColumnLevels: \"totalColumnLevels\", columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\", filterable: \"filterable\", sort: \"sort\", filter: \"filter\", sortable: \"sortable\", groupable: \"groupable\", lockedColumnsCount: \"lockedColumnsCount\", resizable: \"resizable\", reorderable: \"reorderable\", columnMenu: \"columnMenu\", columnMenuTemplate: \"columnMenuTemplate\", totalColumnsCount: \"totalColumnsCount\", tabIndex: \"tabIndex\" }, host: { properties: { \"class.k-grid-header\": \"this.headerClass\" } }, viewQueries: [{ propertyName: \"dropTargets\", predicate: DropTargetDirective, descendants: true }, { propertyName: \"filterMenus\", predicate: FilterMenuComponent, descendants: true }, { propertyName: \"columnMenus\", predicate: ColumnMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n\n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n {{sortOrder(getColumnComponent(column).field)}}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n >\n \n `, isInline: true, components: [{ type: FilterMenuComponent, selector: \"kendo-grid-filter-menu\", inputs: [\"column\", \"filter\", \"tabIndex\"] }, { type: ColumnMenuComponent, selector: \"kendo-grid-column-menu\", inputs: [\"standalone\", \"column\", \"settings\", \"sort\", \"filter\", \"sortable\", \"columnMenuTemplate\", \"tabIndex\"] }, { type: FilterRowComponent, selector: \"[kendoGridFilterRow]\", inputs: [\"columns\", \"filter\", \"groups\", \"detailTemplate\", \"logicalRowIndex\", \"lockedColumnsCount\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: [\"context\"], outputs: [\"enter\", \"leave\", \"drop\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: [\"context\", \"enableDrag\"], outputs: [\"drag\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: SelectAllCheckboxDirective, selector: \"[kendoGridSelectAllCheckbox]\", inputs: [\"state\"], outputs: [\"selectAllChange\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: ColumnHandleDirective, selector: \"[kendoGridColumnHandle]\", inputs: [\"columns\", \"column\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridHeader]',\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n\n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n {{sortOrder(getColumnComponent(column).field)}}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n >\n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: IdService }, { type: SortService }, { type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { totalColumnLevels: [{\n type: Input\n }], columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], sortable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], columnMenuTemplate: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-grid-header']\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\n }], filterMenus: [{\n type: ViewChildren,\n args: [FilterMenuComponent]\n }], columnMenus: [{\n type: ViewChildren,\n args: [ColumnMenuComponent]\n }] } });\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => ([\n ...arr.slice(0, idx + 1),\n ...(arr.slice(idx + 1).map(x => x + value))\n]);\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n isExpanded(rowIndex) {\n return this.height(rowIndex) > this.rowHeight;\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex) {\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n if (this.total > 0) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip, take) {\n this.skip = skip;\n this.take = take;\n }\n}\n/**\n * @hidden\n */\nclass ScrollBottomAction {\n}\nconst SCROLL_BOTTOM_THRESHOLD = 2;\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n }\n create(rowHeightService, skip, take, total) {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n const subject = new BehaviorSubject(new ScrollAction(this.rowHeightService.offset(skip)));\n this.subscription = Observable.create(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe(x => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({ scrollTop, offsetHeight, scrollHeight, clientHeight }, observer) {\n if (this.lastScrollTop === scrollTop) {\n return;\n }\n const up = this.lastScrollTop >= scrollTop;\n this.lastScrollTop = scrollTop;\n let firstItemIndex = this.rowHeightService.index(scrollTop);\n let firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n const lastItemIndex = this.rowHeightService.index(scrollTop + offsetHeight);\n if (!up) {\n if (lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n const overflow = (firstItemIndex + this.take) - this.total;\n if (overflow > 0) {\n firstItemIndex = firstItemIndex - overflow;\n firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n }\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(firstItemOffset));\n let nextTake = this.firstLoaded + this.take;\n this.lastLoaded = Math.min(nextTake, this.total);\n nextTake = nextTake > this.total ? this.total - this.firstLoaded : this.take;\n observer.next(new PageAction(this.firstLoaded, this.take));\n }\n else {\n const atBottom = scrollHeight - clientHeight - scrollTop < SCROLL_BOTTOM_THRESHOLD;\n if (atBottom) {\n observer.next(new ScrollBottomAction());\n }\n }\n }\n if (up && firstItemIndex < this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = Math.max(firstItemIndex - nonVisibleBuffer, 0);\n observer.next(new ScrollAction(this.rowHeightService.offset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded, this.take));\n }\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = undefined;\n }\n }\n}\n\n/**\n * @hidden\n */\nconst NON_DATA_CELL_CLASSES = 'k-hierarchy-cell k-detail-cell k-group-cell';\n/**\n * @hidden\n */\nconst NON_DATA_ROW_CLASSES = 'k-grouping-row k-group-footer k-detail-row k-grid-norecords';\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSSES = 'k-icon';\n/**\n * @hidden\n */\nconst IGNORE_CONTAINER_CLASSES = 'k-grid k-grid-ignore-click';\n\n/**\n * Represents the command columns of the Grid. You have to define the content of the\n * column inside an `` tag. The template context is set to the current\n * data item. For more information and examples on using the passed fields\n * and the command directives, refer to the article on\n * [editing the Grid in Angular Reactive Forms]({% slug editing_reactive_forms_grid %}).\n *\n * The following additional fields are passed:\n * - `columnIndex`—The current column index.\n * - `rowIndex`—The current data row index. If inside a new item row, `rowIndex`is `-1`.\n * - `dataItem`—The current data item.\n * - `column`—The current column instance.\n * - `isNew`—The state of the current item.\n *\n * Usually, the template contains CRUD command directives such as:\n * - [EditCommandDirective]({% slug api_grid_editcommanddirective %})\n * - [RemoveCommandDirective]({% slug api_grid_removecommanddirective %})\n * - [CancelCommandDirective]({% slug api_grid_cancelcommanddirective %})\n * - [SaveCommandDirective]({% slug api_grid_savecommanddirective %})\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass CommandColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n}\nCommandColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CommandColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCommandColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CommandColumnComponent, selector: \"kendo-grid-command-column\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CommandColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CommandColumnComponent)\n }\n ],\n selector: 'kendo-grid-command-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the row-selection checkbox of the Grid. The directive expects the\n * index of the current row as an input parameter. Inside the\n * [CheckboxColumnComponent]({% slug api_grid_checkboxcolumncomponent %}), apply the\n * directive to an `input` element. When the user clicks the checkbox that is associated\n * with the directive, a [selectionChange]({% slug api_grid_gridcomponent %}#toc-selectionChange)\n * event is triggered.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Select row \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass SelectionCheckboxDirective {\n constructor(selectionService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.type = 'checkbox';\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n this.destroyKeyDown = this.renderer.listen(this.el.nativeElement, 'keydown', this.onKeyDown.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setCheckedState();\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n if (this.destroyKeyDown) {\n this.destroyKeyDown();\n }\n }\n onClick() {\n if (this.selectionService.options.enabled) {\n this.ngZone.run(() => {\n const ev = this.selectionService.toggleByIndex(this.itemIndex);\n ev.ctrlKey = true;\n ev.shiftKey = false;\n this.selectionService.changes.emit(ev);\n });\n }\n }\n onKeyDown(e) {\n if (e.keyCode === Keys.Enter) {\n this.onClick();\n }\n }\n /*\n * @hidden\n */\n setCheckedState() {\n this.renderer.setProperty(this.el.nativeElement, 'checked', this.selectionService.isSelected(this.itemIndex));\n }\n}\nSelectionCheckboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionCheckboxDirective, deps: [{ token: SelectionService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSelectionCheckboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectionCheckboxDirective, selector: \"[kendoGridSelectionCheckbox]\", inputs: { itemIndex: [\"kendoGridSelectionCheckbox\", \"itemIndex\"] }, host: { properties: { \"attr.type\": \"this.type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionCheckboxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionCheckbox]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { itemIndex: [{\n type: Input,\n args: ['kendoGridSelectionCheckbox']\n }], type: [{\n type: HostBinding,\n args: ['attr.type']\n }] } });\n\nconst FORMAT_REGEX = /\\{\\d+:?/;\n/**\n * @hidden\n */\nclass FieldAccessorPipe {\n constructor(intlService) {\n this.intlService = intlService;\n }\n transform(dataItem, fieldName, format) {\n if (!isNullOrEmptyString(fieldName)) {\n const value = getter(fieldName)(dataItem);\n if (!isNullOrEmptyString(format)) {\n return this.formatValue(format, value);\n }\n return value;\n }\n return dataItem;\n }\n formatValue(format, value) {\n const intl = this.intlService;\n if (isString(format) && format.match(FORMAT_REGEX)) {\n return intl.format(format, value);\n }\n return intl.toString(value, format);\n }\n}\nFieldAccessorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, deps: [{ token: i1$5.IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nFieldAccessorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, name: \"valueOf\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, decorators: [{\n type: Pipe,\n args: [{\n // eslint-disable-next-line @angular-eslint/pipe-prefix\n name: 'valueOf',\n pure: false\n }]\n }], ctorParameters: function () { return [{ type: i1$5.IntlService }]; } });\n\n/**\n * @hidden\n */\nclass CellComponent {\n constructor(editService, idService, localizationService, cellContext) {\n this.editService = editService;\n this.idService = idService;\n this.localizationService = localizationService;\n this.cellContext = cellContext;\n this.isNew = false;\n this.isLoading = false;\n this.isVirtual = false;\n this._templateContext = {};\n this._editTemplateContext = {};\n }\n get commandCellClass() {\n return this.isCommand(this.column);\n }\n set rowIndex(index) {\n this._rowIndex = index;\n this.updateCellContext();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n get isEdited() {\n if (!(this.editService.isEditing() || this.isNew) || !this.isColumnEditable) {\n return false;\n }\n const editContext = this.editService.columnContext(this.rowIndex, this.column);\n return this.isFieldEditable(editContext, this.column);\n }\n get showLoading() {\n return this.isVirtual && this.isLoading;\n }\n get formGroup() {\n return this.editService.context(this.rowIndex).group;\n }\n get templateContext() {\n return this._templateContext;\n }\n get editTemplateContext() {\n this._editTemplateContext.$implicit = this.formGroup;\n this._editTemplateContext.isNew = this.isNew;\n this._editTemplateContext.column = this.column;\n this._editTemplateContext.dataItem = this.dataItem;\n this._editTemplateContext.formGroup = this.formGroup;\n this._editTemplateContext.rowIndex = this.rowIndex;\n return this._editTemplateContext;\n }\n get format() {\n if (isColumnComponent(this.column) && !isNullOrEmptyString(this.column.format)) {\n return extractFormat(this.column.format);\n }\n return undefined;\n }\n get isBoundColumn() {\n return this.column.field && !this.column.templateRef;\n }\n get isCheckboxColumn() {\n return isCheckboxColumn(this.column) && !this.column.templateRef;\n }\n get selectionCheckboxId() {\n return this.idService.selectionCheckboxId(this.rowIndex);\n }\n get selectionCheckboxLabel() {\n return this.localizationService.get('selectionCheckboxLabel');\n }\n get isSpanColumn() {\n return isSpanColumn(this.column) && !this.column.templateRef;\n }\n get childColumns() {\n return columnsToRender([this.column]);\n }\n get isColumnEditable() {\n if (!this.column || this.isCommand(this.column)) {\n return false;\n }\n return this.column.editable !== false;\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(_changes) {\n this.updateTemplateContext();\n }\n ngAfterContentChecked() {\n this.updateTemplateContext();\n }\n isCommand(column) {\n return column instanceof CommandColumnComponent;\n }\n isFieldEditable(editContext, column) {\n if (!isPresent(editContext)) {\n return false;\n }\n if (isPresent(column.editTemplate)) {\n return true;\n }\n return isPresent(editContext.group) && isPresent(editContext.group.get(column.field));\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.rowIndex = this._rowIndex;\n }\n }\n updateTemplateContext() {\n if (!this.column.templateRef) {\n return;\n }\n const context = this._templateContext;\n context.isNew = this.isNew;\n context.column = this.column;\n context.dataItem = this.dataItem;\n context.rowIndex = this.rowIndex;\n context.columnIndex = this.columnIndex;\n context.$implicit = this.dataItem;\n }\n}\nCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellComponent, selector: \"[kendoGridCell]\", inputs: { column: \"column\", columnIndex: \"columnIndex\", isNew: \"isNew\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", loadingTemplate: \"loadingTemplate\", rowIndex: \"rowIndex\", dataItem: \"dataItem\" }, host: { properties: { \"class.k-command-cell\": \"this.commandCellClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n \n \n {{ dataItem | valueOf: column.field: column.format}}\n \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n\n \n\n \n\n \n \n \n \n `, isInline: true, components: [{ type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }], directives: [{ type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: SelectionCheckboxDirective, selector: \"[kendoGridSelectionCheckbox]\", inputs: [\"kendoGridSelectionCheckbox\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.FormControlDirective, selector: \"[formControl]\", inputs: [\"disabled\", \"formControl\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i4$2.CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\" }, { type: i4.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }], pipes: { \"valueOf\": FieldAccessorPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridCell]',\n template: `\n \n \n \n \n \n \n \n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n \n \n {{ dataItem | valueOf: column.field: column.format}}\n \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n\n \n\n \n\n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: IdService }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, propDecorators: { commandCellClass: [{\n type: HostBinding,\n args: ['class.k-command-cell']\n }], column: [{\n type: Input\n }], columnIndex: [{\n type: Input\n }], isNew: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], rowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass GroupHeaderComponent {\n constructor(groupsService, groupInfoService, localization) {\n this.groupsService = groupsService;\n this.groupInfoService = groupInfoService;\n this.localization = localization;\n this.skipGroupDecoration = false;\n this.hasDetails = false;\n this.totalColumnsCount = 0;\n this.groups = [];\n this.isExpanded = false;\n }\n get groupItemClass() {\n return true;\n }\n ngDoCheck() {\n const groupArgs = {\n group: this.item.data,\n groupIndex: this.item.index,\n parentGroup: getGroupRowArgs(this.item.parentGroup)\n };\n this.isExpanded = this.groupsService.isExpanded(groupArgs);\n }\n prefixGroupCell(item) {\n return new Array(item.level);\n }\n toggleGroup(item) {\n this.groupsService.toggleRow(item);\n return false;\n }\n groupSpan(item) {\n const groupCount = (this.groups || []).length;\n const detailOffset = this.hasDetails ? 1 : 0;\n if (this.hasGroupHeaderColumn) {\n return groupCount + 1 + detailOffset - item.level;\n }\n let columnCount = columnsSpan(this.columns);\n if (this.skipGroupDecoration) {\n return columnCount;\n }\n return groupCount + columnCount + detailOffset - item.level;\n }\n logicalColSpan() {\n return this.skipGroupDecoration ? 1 : this.totalColumnsCount;\n }\n ariaRole() {\n if (this.skipGroupDecoration) {\n return 'presentation';\n }\n return 'gridcell';\n }\n formatForGroup(item) {\n return this.groupInfoService.formatForGroup(item);\n }\n groupTitle(item) {\n return this.groupInfoService.groupTitle(item);\n }\n groupHeaderTemplate(item) {\n return this.groupInfoService.groupHeaderTemplate(item);\n }\n get groupButtonTitle() {\n const messageKey = this.isExpanded ? 'groupCollapse' : 'groupExpand';\n return this.localization.get(messageKey);\n }\n}\nGroupHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderComponent, deps: [{ token: GroupsService }, { token: GroupInfoService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGroupHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderComponent, selector: \"[kendoGridGroupHeader]\", inputs: { rowIndex: \"rowIndex\", logicalRowIndex: \"logicalRowIndex\", item: \"item\", skipGroupDecoration: \"skipGroupDecoration\", hasDetails: \"hasDetails\", totalColumnsCount: \"totalColumnsCount\", hasGroupHeaderColumn: \"hasGroupHeaderColumn\", groupHeaderColumns: \"groupHeaderColumns\", columns: \"columns\", groups: \"groups\" }, host: { properties: { \"class.k-grouping-row\": \"this.groupItemClass\" } }, ngImport: i0, template: `\n \n \n \n \n

    \n \n \n \n \n {{groupTitle(item)}}: {{item.data | valueOf:\"value\": formatForGroup(item)}}\n \n \n \n \n

    \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], pipes: { \"valueOf\": FieldAccessorPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridGroupHeader]',\n template: `\n \n \n \n \n

    \n \n \n \n \n {{groupTitle(item)}}: {{item.data | valueOf:\"value\": formatForGroup(item)}}\n \n \n \n \n

    \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: GroupsService }, { type: GroupInfoService }, { type: i1.LocalizationService }]; }, propDecorators: { rowIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], item: [{\n type: Input\n }], skipGroupDecoration: [{\n type: Input\n }], hasDetails: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], hasGroupHeaderColumn: [{\n type: Input\n }], groupHeaderColumns: [{\n type: Input\n }], columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], groupItemClass: [{\n type: HostBinding,\n args: ['class.k-grouping-row']\n }] } });\n\nconst columnCellIndex = (cell, cells) => {\n let cellIndex = 0;\n for (let idx = 0; idx < cells.length; idx++) {\n if (cells[idx] === cell) {\n return cellIndex;\n }\n if (!hasClasses(cells[idx], 'k-hierarchy-cell k-group-cell')) {\n cellIndex++;\n }\n }\n};\n/**\n * @hidden\n */\nclass TableBodyComponent {\n constructor(detailsService, groupsService, changeNotification, editService, localization, ngZone, renderer, element, domEvents, selectionService, cellSelectionService, columnInfoService, navigationService) {\n this.detailsService = detailsService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.editService = editService;\n this.localization = localization;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.element = element;\n this.domEvents = domEvents;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.columns = [];\n this.groups = [];\n this.skip = 0;\n this.noRecordsText = this.localization.get('noRecords');\n this.isLocked = false;\n this.skipGroupDecoration = false;\n this.showGroupFooters = false;\n this.lockedColumnsCount = 0;\n this.totalColumnsCount = 0;\n this.trackBy = defaultTrackBy;\n this.rowClass = () => null;\n this.cellKeydownSubscription = this.navigationService.cellKeydown.subscribe((args) => this.cellKeydownHandler(args));\n this.trackByWrapper = this.trackByWrapper.bind(this);\n this.trackByColumns = this.trackByColumns.bind(this);\n }\n get newDataItem() {\n return this.editService.newDataItem;\n }\n // Number of unlocked columns in the next table, if any\n get unlockedColumnsCount() {\n return this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;\n }\n isAriaSelected(item, column) {\n return this.cellSelectionService.isCellSelected(item, column) ||\n this.isRowSelected(item) ? 'true' : 'false';\n }\n toggleRow(index, dataItem) {\n this.detailsService.toggleRow(index, dataItem);\n return false;\n }\n isExpanded(viewItem) {\n return this.detailsService.isExpanded(viewItem.index, viewItem.data);\n }\n detailButtonStyles(viewItem) {\n const expanded = this.isExpanded(viewItem);\n return expanded ? 'k-i-minus' : 'k-i-plus';\n }\n detailButtonTitle(viewItem) {\n const messageKey = this.isExpanded(viewItem) ? 'detailCollapse' : 'detailExpand';\n return this.localization.get(messageKey);\n }\n isGroup(item) {\n return item.type === 'group';\n }\n isDataItem(item) {\n return !this.isGroup(item) && !this.isFooter(item);\n }\n isFooter(item) {\n return item.type === 'footer';\n }\n isFooterItemInExpandedGroup(item) {\n const footerItem = { data: item.data, index: item.groupIndex, parentGroup: item.group.parentGroup };\n return this.isInExpandedGroup(footerItem);\n }\n isDataItemInExpandedGroup(item) {\n const dataItem = { data: item.group.data, index: item.groupIndex, parentGroup: item.group.parentGroup };\n return this.isInExpandedGroup(dataItem);\n }\n isInExpandedGroup(item) {\n return this.groupsService.isInExpandedGroup(item);\n }\n isParentGroupExpanded(item) {\n return this.groupsService.isInExpandedGroup(item.parentGroup);\n }\n isOdd(item) {\n return item.index % 2 !== 0;\n }\n isSelectable() {\n return this.selectable && this.selectable.enabled !== false;\n }\n isRowSelected(item) {\n return this.selectionService.isSelected(item.index);\n }\n trackByWrapper(index, item) {\n if (item.type === 'data') {\n item.isEditing = this.editService.hasEdited(item.index);\n }\n return this.trackBy(index, item);\n }\n trackByColumns(index, item) {\n return this.virtualColumns ? index : item;\n }\n ngDoCheck() {\n if (this.hasGroupHeaderColumn) {\n this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));\n }\n else {\n this.groupHeaderColumns = [];\n }\n if (this.isLocked) {\n this.groupHeaderSlaveCellsCount =\n this.hasGroupHeaderColumn ? this.columnsContainer.nonLockedColumnsToRender.length : 1;\n }\n else {\n this.groupHeaderSlaveCellsCount = 0;\n }\n }\n ngAfterViewChecked() {\n if (this.rowSticky) {\n this.applyStickyRowsStyling();\n }\n }\n ngOnChanges(changes) {\n if (isChanged$1('columns', changes, false)) {\n this.changeNotification.notify();\n }\n }\n logicalRowIndex(rowIndex) {\n let pos = this.skip + rowIndex;\n if (this.hasDetailTemplate) {\n pos *= 2;\n }\n const absoluteRowIndex = 1 + pos;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;\n return absoluteRowIndex + headerRowCount;\n }\n addRowLogicalIndex() {\n return this.columnInfoService.totalLevels + 1 +\n (hasFilterRow(this.filterable) ? 1 : 0);\n }\n logicalColIndex(column) {\n if (!isPresent(column.leafIndex)) {\n return -1;\n }\n return column.leafIndex + (this.hasDetailTemplate ? 1 : 0);\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n const clickHandler = this.clickHandler.bind(this);\n const mousedownSubscription = this.renderer.listen(this.element.nativeElement, 'mousedown', clickHandler);\n const mouseupSubscription = this.renderer.listen(this.element.nativeElement, 'mouseup', clickHandler);\n const clickSubscription = this.renderer.listen(this.element.nativeElement, 'click', clickHandler);\n const contextmenuSubscription = this.renderer.listen(this.element.nativeElement, 'contextmenu', clickHandler);\n const touchstartSubscription = this.renderer.listen(this.element.nativeElement, 'touchstart', clickHandler);\n const touchendSubscription = this.renderer.listen(this.element.nativeElement, 'touchend', clickHandler);\n this.clickSubscription = () => {\n mousedownSubscription();\n mouseupSubscription();\n clickSubscription();\n contextmenuSubscription();\n };\n this.touchSubscription = () => {\n touchstartSubscription();\n touchendSubscription();\n };\n });\n let originalNoRecordText = this.localization.get('noRecords');\n this.localization.changes.subscribe(() => {\n if (this.noRecordsText === originalNoRecordText) {\n this.noRecordsText = this.localization.get('noRecords');\n originalNoRecordText = this.noRecordsText;\n }\n });\n }\n ngOnDestroy() {\n if (this.clickSubscription) {\n this.clickSubscription();\n }\n if (this.touchSubscription) {\n this.touchSubscription();\n }\n this.cellKeydownSubscription.unsubscribe();\n clearTimeout(this.clickTimeout);\n }\n isEditingCell(index, column) {\n return this.editService.isEditing() && this.editService.isEditedColumn(index, column);\n }\n isEditingRow(index) {\n return this.editService.isEditing() && this.editService.hasEdited(index);\n }\n get hasGroupHeaderColumn() {\n return this.columnsContainer.hasGroupHeaderColumn;\n }\n get columnsContainer() {\n return this.columnInfoService.columnsContainer;\n }\n get columnsSpan() {\n return columnsSpan(this.columns);\n }\n get allColumnsSpan() {\n return columnsSpan(this.allColumns || this.columns);\n }\n get colSpan() {\n return this.columnsSpan + this.groups.length + (this.hasDetailTemplate ? 1 : 0);\n }\n get footerColumns() {\n return this.isLocked ? this.columnsContainer.lockedColumnsToRender : this.columnsContainer.nonLockedColumnsToRender;\n }\n showGroupHeader(item) {\n return !item.data.skipHeader;\n }\n addStickyColumnStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n resizeHandler() {\n this.applyStickyRowsStyling();\n }\n get hasDetailTemplate() {\n return isPresent(this.detailTemplate);\n }\n clickHandler(eventArg) {\n const element = this.element.nativeElement;\n const target = this.eventTarget(eventArg);\n let cell, row, body, gridElement;\n let currentTarget = target;\n do {\n cell = closest(currentTarget, matchesNodeName('td'));\n row = closest(cell, matchesNodeName('tr'));\n body = closest(row, matchesNodeName('tbody'));\n currentTarget = body;\n gridElement = closestInScope(currentTarget, matchesClasses('k-grid'), element);\n } while (body && body !== element && !gridElement);\n if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) &&\n !hasClasses(row, NON_DATA_ROW_CLASSES) &&\n body === element && !gridElement) {\n this.editService.preventCellClose();\n const focusable = target !== cell && isFocusableWithTabKey(target, false);\n if (!focusable && !matchesNodeName('label')(target) && !hasClasses(target, IGNORE_TARGET_CLASSSES) &&\n !closestInScope(target, matchesClasses(IGNORE_CONTAINER_CLASSES), cell)) {\n const args = this.cellClickArgs(cell, row, eventArg);\n if (eventArg.type === 'mousedown' || eventArg.type === 'touchstart') {\n this.domEvents.cellMousedown.emit(args);\n }\n else if (eventArg.type === 'mouseup' || eventArg.type === 'touchend') {\n this.domEvents.cellMouseup.emit(args);\n }\n else {\n if (args.isEditedColumn || !this.editService.closeCell(eventArg)) {\n if (eventArg.type === 'click') {\n this.clickTimeout = setTimeout(() => {\n this.emitCellClick(args);\n }, 0);\n }\n else {\n this.emitCellClick(args);\n }\n }\n }\n }\n }\n }\n emitCellClick(args) {\n this.domEvents.cellClick.emit(Object.assign(args, {\n isEdited: args.isEditedRow || args.isEditedColumn\n }));\n }\n cellKeydownHandler(args) {\n if (args.keyCode === Keys.Enter) {\n this.clickHandler(args);\n }\n }\n cellClickArgs(cell, row, eventArg) {\n const index = columnCellIndex(cell, row.cells);\n const column = this.columns.toArray()[index];\n const columnIndex = this.lockedColumnsCount + index;\n let rowIndex = row.getAttribute('data-kendo-grid-item-index');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;\n const dataItem = rowIndex === -1 ? this.editService.newDataItem : this.data.at(rowIndex - this.skip);\n const isEditedColumn = this.editService.isEditedColumn(rowIndex, column);\n const isEditedRow = this.editService.isEdited(rowIndex);\n const type = eventArg.type === 'keydown' ? 'click' : eventArg.type;\n return {\n column: column,\n columnIndex: columnIndex,\n dataItem: dataItem,\n isEditedColumn: isEditedColumn,\n isEditedRow: isEditedRow,\n originalEvent: eventArg,\n rowIndex: rowIndex,\n type: type\n };\n }\n eventTarget(args) {\n if (args.type === 'touchend') {\n const touch = args.changedTouches[0];\n return document.elementFromPoint(touch.clientX, touch.clientY);\n }\n return args.target;\n }\n applyStickyRowsStyling() {\n const stickyRows = nodesToArray(this.element.nativeElement.querySelectorAll('.k-grid-row-sticky'));\n const length = stickyRows.length;\n if (length) {\n let accumulatedHeight = 0;\n const stickyRowsOffsets = [];\n stickyRows.forEach(row => {\n const rowHeight = row.getBoundingClientRect().height;\n stickyRowsOffsets.push({ accumulatedHeight, rowHeight });\n accumulatedHeight += rowHeight;\n });\n stickyRows.forEach((row, index) => {\n this.renderer.setStyle(row, 'top', `${stickyRowsOffsets[index].accumulatedHeight}px`);\n this.renderer.setStyle(row, 'bottom', `${accumulatedHeight - stickyRowsOffsets[index].accumulatedHeight - stickyRowsOffsets[index].rowHeight}px`);\n });\n }\n }\n}\nTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableBodyComponent, deps: [{ token: DetailsService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: EditService }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DomEventsService }, { token: SelectionService }, { token: CellSelectionService }, { token: ColumnInfoService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: { columns: \"columns\", allColumns: \"allColumns\", groups: \"groups\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", data: \"data\", skip: \"skip\", selectable: \"selectable\", filterable: \"filterable\", noRecordsText: \"noRecordsText\", isLocked: \"isLocked\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", cellLoadingTemplate: \"cellLoadingTemplate\", skipGroupDecoration: \"skipGroupDecoration\", showGroupFooters: \"showGroupFooters\", lockedColumnsCount: \"lockedColumnsCount\", totalColumnsCount: \"totalColumnsCount\", virtualColumns: \"virtualColumns\", trackBy: \"trackBy\", rowSticky: \"rowSticky\", rowClass: \"rowClass\" }, usesOnChanges: true, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{noRecordsText}}\n \n \n \n\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"groupHeaderSlaveCellsCount\">\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n [class.k-grid-row-sticky]=\"rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false\"\n [ngClass]=\"rowClass({ dataItem: item.data, index: $any(item).index })\"\n [class.k-alt]=\"isOdd(item)\"\n [class.k-master-row]=\"detailTemplate?.templateRef\"\n [class.k-grid-edit-row]=\"isEditingRow($any(item).index)\"\n [attr.data-kendo-grid-item-index]=\"$any(item).index\"\n [class.k-state-selected]=\"isSelectable() && isRowSelected(item)\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: CellComponent, selector: \"[kendoGridCell]\", inputs: [\"column\", \"columnIndex\", \"isNew\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"rowIndex\", \"dataItem\"] }, { type: GroupHeaderComponent, selector: \"[kendoGridGroupHeader]\", inputs: [\"rowIndex\", \"logicalRowIndex\", \"item\", \"skipGroupDecoration\", \"hasDetails\", \"totalColumnsCount\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"columns\", \"groups\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridTableBody]',\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{noRecordsText}}\n \n \n \n\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"groupHeaderSlaveCellsCount\">\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n [class.k-grid-row-sticky]=\"rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false\"\n [ngClass]=\"rowClass({ dataItem: item.data, index: $any(item).index })\"\n [class.k-alt]=\"isOdd(item)\"\n [class.k-master-row]=\"detailTemplate?.templateRef\"\n [class.k-grid-edit-row]=\"isEditingRow($any(item).index)\"\n [attr.data-kendo-grid-item-index]=\"$any(item).index\"\n [class.k-state-selected]=\"isSelectable() && isRowSelected(item)\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: DetailsService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: EditService }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: DomEventsService }, { type: SelectionService }, { type: CellSelectionService }, { type: ColumnInfoService }, { type: NavigationService }]; }, propDecorators: { columns: [{\n type: Input\n }], allColumns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], data: [{\n type: Input\n }], skip: [{\n type: Input\n }], selectable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], noRecordsText: [{\n type: Input\n }], isLocked: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], cellLoadingTemplate: [{\n type: Input\n }], skipGroupDecoration: [{\n type: Input\n }], showGroupFooters: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], rowClass: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst columnsToResize = ({ columns }) => Math.max(1, resizableColumns(columns).length);\n/**\n * @hidden\n */\nconst row = selector => element => element.querySelector(selector);\n/**\n * @hidden\n */\nconst headerRow = index => element => element.querySelectorAll('thead>tr')[index];\n/**\n * @hidden\n */\nconst cell = (index, selector = 'td') => element => element.querySelectorAll(`${selector}:not(.k-group-cell):not(.k-hierarchy-cell)`)[index];\n/**\n * @hidden\n */\nconst offsetWidth = element => element.offsetWidth;\n/**\n * @hidden\n */\nconst pipe = (...fns) => data => fns.reduce((state, fn) => state ? fn(state) : 0, data);\n/**\n * @hidden\n */\nclass TableDirective {\n constructor(element, renderer, service, zone, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.locked = false;\n this.firstResize = false;\n }\n get minWidth() {\n return this.firstResize ? 0 : null;\n }\n ngOnInit() {\n const obs = this.service\n .changes.pipe(filter(e => this.locked === e.locked));\n this.subscription = obs.pipe(filter(e => e.type === 'start'), tap(this.initState.bind(this)), map(columnsToResize), switchMap((take) => obs.pipe(filter(e => e.type === 'resizeTable'), map(e => e.delta), bufferCount(take)))).subscribe(this.resize.bind(this));\n this.autoFitSubscription = this.service\n .registerTable({\n autoFit: this.autoFitObservable.bind(this),\n locked: this.locked\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.autoFitSubscription) {\n this.autoFitSubscription();\n this.autoFitSubscription = null;\n }\n }\n initState() {\n this.firstResize = true;\n if (!this.virtualColumns || this.locked) {\n this.originalWidth = offsetWidth(this.element.nativeElement);\n }\n }\n resize(deltas) {\n if (!this.virtualColumns || this.locked) {\n const delta = deltas.reduce((sum, item) => sum + item, 0);\n const width = this.originalWidth + delta;\n this.renderer.setStyle(this.element.nativeElement, 'width', width + 'px');\n }\n this.cdr.detectChanges();\n }\n autoFitObservable(columnInfo) {\n return Observable.create(observer => {\n this.zone.runOutsideAngular(() => {\n this.renderer.addClass(this.element.nativeElement, 'k-autofitting');\n this.cdr.detectChanges();\n const widths = columnInfo.map(this.measureColumn.bind(this));\n this.renderer.removeClass(this.element.nativeElement, 'k-autofitting');\n observer.next(widths);\n });\n });\n }\n measureColumn(info) {\n const dom = this.element.nativeElement;\n const header = pipe(headerRow(info.level), cell(info.headerIndex, 'th'), offsetWidth)(dom);\n let data = 0;\n if (!info.isParentSpan || (info.isParentSpan && info.isLastInSpan)) {\n data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);\n }\n const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);\n return Math.max(header, data, footer);\n }\n}\nTableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ColumnResizingService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nTableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TableDirective, selector: \"table\", inputs: { locked: \"locked\", virtualColumns: \"virtualColumns\" }, host: { properties: { \"style.min-width\": \"this.minWidth\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ColumnResizingService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { locked: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], minWidth: [{\n type: HostBinding,\n args: ['style.min-width']\n }] } });\n\n/**\n * @hidden\n */\nclass ResizableContainerDirective {\n constructor(el, renderer, resizeService, ctx) {\n this.el = el;\n this.renderer = renderer;\n this.resizeService = resizeService;\n this.ctx = ctx;\n this.enabled = false;\n }\n set lockedWidth(value) {\n this._lockedWidth = value;\n if (this.enabled) {\n this.attachResize();\n this.resize();\n }\n }\n set kendoGridResizableContainer(enabled) {\n const refresh = enabled !== this.enabled;\n this.enabled = enabled;\n if (refresh) {\n this.attachResize();\n this.resize();\n }\n }\n ngOnDestroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n attachResize() {\n if (this.resizeSubscription && !this.enabled) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n if (!this.resizeSubscription && this.enabled) {\n this.resizeSubscription = this.resizeService.changes.subscribe(this.resize.bind(this));\n }\n }\n resize() {\n if (this.ctx.grid && this.ctx.grid.wrapper) {\n const containerElement = this.ctx.grid.wrapper.nativeElement;\n const width = Math.max(containerElement.clientWidth - this._lockedWidth, 0);\n if (this.enabled && width > 0) {\n this.renderer.setStyle(this.el.nativeElement, \"width\", width + \"px\");\n }\n else {\n this.renderer.setStyle(this.el.nativeElement, \"width\", \"\");\n }\n }\n }\n}\nResizableContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizableContainerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ResizeService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Directive });\nResizableContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: { lockedWidth: \"lockedWidth\", kendoGridResizableContainer: \"kendoGridResizableContainer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizableContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridResizableContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ResizeService }, { type: ContextService }]; }, propDecorators: { lockedWidth: [{\n type: Input,\n args: ['lockedWidth']\n }], kendoGridResizableContainer: [{\n type: Input\n }] } });\n\nconst elementAt = (index, elements, elementOffset) => {\n for (let idx = 0, elementIdx = 0; idx < elements.length; idx++) {\n const offset = elementOffset(elements[idx]);\n if (elementIdx <= index && index <= elementIdx + offset - 1) {\n return elements[idx];\n }\n elementIdx += offset;\n }\n};\nconst rowAt = (index, rows) => elementAt(index, rows, row => row.hasAttribute('data-kendo-grid-item-index') ? 1 : 0);\nconst cellAt = (index, cells) => elementAt(index, cells, cell => !hasClasses(cell, NON_DATA_CELL_CLASSES) ? parseInt(cell.getAttribute('colSpan'), 10) || 1 : 0);\nconst EMPTY_OBJECT = {};\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('grid-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\nconst wheelDeltaY = (e) => {\n const deltaY = e.wheelDeltaY;\n if (e.wheelDelta && (deltaY === undefined || deltaY)) {\n return e.wheelDelta;\n }\n else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n return (-e.detail) * 10;\n }\n return 0;\n};\nconst preventLockedScroll = (args, element) => {\n const delta = wheelDeltaY(args);\n const scrollTop = element.scrollTop;\n const allowScroll = (scrollTop === 0 && 0 < delta) || (element.scrollHeight <= element.offsetHeight + scrollTop && delta < 0);\n if (!allowScroll) {\n event.preventDefault();\n }\n};\nconst translateY = (renderer, value) => el => renderer.setStyle(el, \"transform\", `translateY(${value}px)`);\nconst maybeNativeElement = el => el ? el.nativeElement : null;\nconst hasScrollbar = (el, parent) => el.nativeElement.offsetWidth > parent.nativeElement.clientWidth;\nconst setHeight = renderer => ({ el, height }) => renderer.setStyle(el, \"height\", `${height}px`);\nconst bufferSize = 1;\n/**\n * @hidden\n */\nclass ListComponent {\n constructor(scrollerFactory, detailsService, changeNotification, suspendService, groupsService, ngZone, renderer, scrollSyncService, resizeService, editService, supportService, navigationService, scrollRequestService, localization, columnResizingService, changeDetector, pdfService, columnInfo) {\n this.changeNotification = changeNotification;\n this.suspendService = suspendService;\n this.groupsService = groupsService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.scrollSyncService = scrollSyncService;\n this.resizeService = resizeService;\n this.editService = editService;\n this.supportService = supportService;\n this.navigationService = navigationService;\n this.localization = localization;\n this.columnResizingService = columnResizingService;\n this.changeDetector = changeDetector;\n this.pdfService = pdfService;\n this.columnInfo = columnInfo;\n this.groups = [];\n this.skip = 0;\n this.columns = new ColumnsContainer(() => []);\n this.selectable = false;\n this.groupable = false;\n this.trackBy = defaultTrackBy;\n this.contentScroll = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollBottom = new EventEmitter();\n this.columnsStartIdx = 0;\n this.resizeSensors = new QueryList();\n this.dispatcher = new Subject();\n this.containerScrollTop = 0;\n this.scrollLeft = 0;\n this.rtl = false;\n this.scroller = scrollerFactory(this.dispatcher);\n this.subscriptions = detailsService.changes.subscribe(x => this.detailExpand(x));\n this.subscriptions.add(scrollRequestService.requests.subscribe(x => this.scrollTo(x)));\n }\n get hostClass() {\n return true;\n }\n get hostRole() {\n return 'presentation';\n }\n get showFooter() {\n return this.groupable && this.groupable.showFooter;\n }\n get totalWidth() {\n if (this.virtualColumns && this.columns.unlockedWidth) {\n return this.columns.unlockedWidth;\n }\n }\n get lockedLeafColumns() {\n return this.columns.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columns.nonLockedLeafColumns;\n }\n get nonLockedColumnsToRender() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columns.leafColumnsToRender;\n }\n get lockedWidth() {\n const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {\n return sumColumnWidths(expandColumns(this.nonLockedColumnsToRender.toArray()));\n }\n return undefined;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n ngOnInit() {\n this.init();\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowSync.bind(this)));\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowNavigationLocked.bind(this)));\n this.subscriptions.add(merge(this.columns.changes, this.resizeService.changes).subscribe(() => {\n if (this.virtualColumns) {\n this.ngZone.run(() => {\n this.updateViewportColumns();\n this.changeDetector.markForCheck();\n });\n }\n }));\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl));\n }\n ngOnChanges(changes) {\n const hasInitialSkip = changes.skip && changes.skip.firstChange && changes.skip.currentValue > 0;\n if (hasInitialSkip) {\n this.handleInitialScrollToSkip();\n }\n if (isChanged$1(\"skip\", changes) && !this.rebind) {\n this.skipScroll = true;\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n if (anyChanged([\"total\", \"take\"], changes)) {\n this.init();\n }\n this.rebind = false;\n }\n ngDoCheck() {\n if (this.virtualColumns && (!this.viewportColumns || this.viewportWidthChange())) {\n this.updateViewportColumns();\n }\n }\n ngAfterViewInit() {\n if (this.skip && this.isVirtual) {\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n this.resetNavigationViewport();\n this.attachContainerScroll();\n this.initResizeService();\n }\n ngAfterViewChecked() {\n const isLocked = this.isLocked;\n if (isLocked && !this.hasLockedContainer) {\n this.syncRowsHeight();\n }\n this.hasLockedContainer = isLocked;\n }\n syncRowsHeight() {\n if (this.lockedContainer) {\n syncRowsHeight(this.lockedTable.nativeElement, this.table.nativeElement);\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.resizeService) {\n this.resizeService.destroy();\n }\n this.cleanupScroller();\n }\n init() {\n if (this.suspendService.scroll) {\n return;\n }\n this.rowHeightService = new RowHeightService(this.total, this.rowHeight, this.detailRowHeight);\n this.totalHeight = this.rowHeightService.totalHeight();\n if (!isUniversal()) {\n this.ngZone.runOutsideAngular(this.createScroller.bind(this));\n }\n }\n lockedScroll() {\n if (!this.suspendService.scroll) {\n const lockedScrollTop = this.lockedContainer.nativeElement.scrollTop;\n if (lockedScrollTop !== this.containerScrollTop) {\n this.container.nativeElement.scrollTop = this.containerScrollTop = lockedScrollTop;\n }\n }\n }\n lockedMousewheel(args) {\n if (!args.ctrlKey) {\n preventLockedScroll(args, this.container.nativeElement);\n const scrollDelta = wheelDeltaY(args);\n this.container.nativeElement.scrollTop -= scrollDelta;\n }\n }\n lockedKeydown(args) {\n if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {\n const dir = args.keyCode === Keys.PageDown ? 1 : -1;\n const element = this.container.nativeElement;\n element.scrollTop += element.offsetHeight * dir * 0.8;\n args.preventDefault();\n }\n }\n detailExpand({ index, expand }) {\n if (expand) {\n this.rowHeightService.expandDetail(index);\n }\n else {\n this.rowHeightService.collapseDetail(index);\n }\n this.totalHeight = this.rowHeightService.totalHeight();\n this.resetNavigationViewport();\n }\n attachContainerScroll() {\n if (isUniversal()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(fromEvent(this.container.nativeElement, 'scroll').pipe(map((event) => event.target), filter(() => !this.suspendService.scroll), tap((target) => {\n this.onContainerScroll(target);\n this.resetNavigationViewport();\n if (this.virtualColumns) {\n this.handleColumnScroll();\n }\n const rowViewport = this.navigationService.viewport || EMPTY_OBJECT;\n const columnViewport = this.navigationService.columnViewport || EMPTY_OBJECT;\n this.contentScroll.emit({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n startRow: rowViewport.firstItemIndex,\n endRow: rowViewport.lastItemIndex,\n startColumn: columnViewport.firstItemIndex,\n endColumn: columnViewport.lastItemIndex\n });\n })).subscribe(this.dispatcher));\n });\n this.scrollSyncService.registerEmitter(this.container.nativeElement, \"body\");\n }\n createScroller() {\n this.cleanupScroller();\n const observable = this.scroller\n .create(this.rowHeightService, this.skip, this.take, this.total);\n this.skipScroll = false;\n this.scrollerSubscription = observable.pipe(filter((x) => x instanceof PageAction), filter(() => {\n const temp = this.skipScroll;\n this.skipScroll = false;\n return !temp;\n }), tap(() => this.rebind = true))\n .subscribe((x) => this.ngZone.run(() => this.pageChange.emit(x)));\n this.scrollerSubscription.add(observable.pipe(filter((x) => x instanceof ScrollAction))\n .subscribe(this.scroll.bind(this)));\n this.scrollerSubscription.add(observable.pipe(filter((x) => x instanceof ScrollBottomAction))\n .subscribe(() => this.scrollBottom.emit()));\n }\n scroll({ offset = 0 }) {\n if (this.isVirtual) {\n [\n maybeNativeElement(this.table),\n maybeNativeElement(this.lockedTable)\n ].filter(isPresent).forEach(translateY(this.renderer, offset));\n }\n this.resetNavigationViewport();\n }\n onContainerScroll({ scrollTop }) {\n this.containerScrollTop = scrollTop;\n if (this.lockedContainer) {\n this.lockedContainer.nativeElement.scrollTop = scrollTop;\n }\n }\n handleInitialScrollToSkip() {\n const shouldScroll = () => this.isVirtual && this.skip > 0 && this.total > 0;\n const sub = this.changeNotification.changes\n .pipe(filter(shouldScroll))\n .subscribe(_ => {\n this.scrollTo({ row: this.skip });\n sub.unsubscribe();\n });\n }\n handleRowSync() {\n const isLocked = () => isPresent(this.lockedContainer);\n const onStable = () => this.ngZone.onStable.asObservable().pipe(take(1));\n return merge(this.changeNotification.changes, this.groupsService.changes\n .pipe(filter(isLocked), switchMapTo(onStable())), this.editService.changed, this.resizeService.changes, this.columnResizingService.changes\n .pipe(filter(change => change.type === 'end')), this.supportService.changes)\n .pipe(tap(() => this.resetNavigationViewport()), filter(isLocked))\n .subscribe(() => {\n const scrollTop = this.container.nativeElement.scrollTop;\n const scrollLeft = this.container.nativeElement.scrollLeft;\n this.syncRowsHeight();\n this.syncContainerHeight();\n this.lockedContainer.nativeElement.scrollTop = this.container.nativeElement.scrollTop = scrollTop;\n // fixes scroll left position in IE when editing\n this.container.nativeElement.scrollLeft = scrollLeft;\n this.resizeSensors.forEach(sensor => sensor.acceptSize());\n });\n }\n handleRowNavigationLocked() {\n return this.navigationService.changes.pipe(filter(() => isPresent(this.lockedContainer)), delay(10)).subscribe((args) => {\n if (this.lockedLeafColumns.length <= args.prevColIndex && args.colIndex < this.lockedLeafColumns.length) {\n const cell = this.navigationService.activeCell;\n if (cell && cell.colIndex + cell.colSpan < args.prevColIndex) {\n this.container.nativeElement.scrollLeft = 0;\n }\n }\n });\n }\n scrollToVirtualRow(itemIndex) {\n if (isPresent(this.detailTemplate)) {\n itemIndex = Math.floor(itemIndex / 2);\n }\n const offset = this.rowHeightService.offset(itemIndex);\n this.container.nativeElement.scrollTop = offset;\n this.resetNavigationViewport();\n }\n scrollTo({ row, column }) {\n if (isNumber(row)) {\n if (this.isVirtual) {\n this.scrollToVirtualRow(row);\n }\n else {\n const element = rowAt(row, this.table.nativeElement.rows);\n if (element) {\n this.container.nativeElement.scrollTop = element.offsetTop;\n }\n }\n }\n if (isNumber(column)) {\n column -= this.lockedLeafColumns.length;\n if (this.virtualColumns) {\n const columns = this.columns.leafColumnsToRender;\n let offset = 0;\n for (let idx = 0; idx < column; idx++) {\n offset += columns[idx].width || 0;\n }\n const startOffset = this.lockedLeafColumns.length ? 0 : this.groups.length * GROUP_CELL_WIDTH + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);\n }\n else if (column === 0 && this.detailTemplate) {\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(0);\n }\n else {\n const firstRow = rowAt(0, this.table.nativeElement.rows);\n if (firstRow) {\n const element = cellAt(column, firstRow.cells);\n if (element) {\n this.container.nativeElement.scrollLeft = this.elementScrollLeft(element);\n }\n }\n }\n }\n }\n resetNavigationViewport() {\n if (!this.container || !this.navigationService.tableEnabled ||\n !this.navigationService.needsViewport() || this.data.length === 0) {\n return;\n }\n const { scrollTop, offsetHeight } = this.container.nativeElement;\n const scrollBottom = scrollTop + offsetHeight;\n const firstItemIndex = this.rowHeightService.index(scrollTop);\n let lastItemIndex = this.rowHeightService.index(scrollBottom);\n const lastItemOffset = this.rowHeightService.offset(lastItemIndex);\n const lastItemOverflows = lastItemOffset + this.rowHeight > scrollBottom;\n if (lastItemIndex > 0 && lastItemOverflows) {\n lastItemIndex--;\n }\n let viewportStart = firstItemIndex;\n let viewportEnd = lastItemIndex;\n if (isPresent(this.detailTemplate)) {\n viewportStart *= 2;\n viewportEnd *= 2;\n const firstItemHeight = this.rowHeightService.offset(firstItemIndex);\n if (firstItemHeight + this.rowHeight < scrollTop) {\n viewportStart++;\n }\n const lastItemHeight = this.rowHeightService.height(lastItemIndex);\n const lastItemExpanded = this.rowHeightService.isExpanded(lastItemIndex);\n const lastItemDetailOverflows = lastItemOffset + lastItemHeight > scrollBottom;\n if (lastItemExpanded && !lastItemDetailOverflows) {\n viewportEnd++;\n }\n }\n this.navigationService.setViewport(viewportStart, viewportEnd);\n }\n cleanupScroller() {\n if (this.scrollerSubscription) {\n this.scrollerSubscription.unsubscribe();\n }\n if (this.scroller) {\n this.scroller.destroy();\n }\n }\n initResizeService() {\n this.resizeService.connect(merge(...this.resizeSensors.map(sensor => sensor.resize)));\n }\n syncContainerHeight() {\n [maybeNativeElement(this.lockedContainer)]\n .filter(isPresent)\n .map(el => {\n el.style.height = '';\n let height = this.container.nativeElement.offsetHeight;\n if (hasScrollbar(this.table, this.container)) {\n height -= this.supportService.scrollbarWidth;\n }\n return { el, height };\n })\n .forEach(setHeight(this.renderer));\n }\n updateViewportColumns(range) {\n const columns = this.columns.nonLockedLeafColumns.toArray();\n let { startIdx, endIdx, offset } = range || this.calculateViewportColumns();\n const start = Math.max(0, startIdx - bufferSize);\n const end = Math.min(endIdx + bufferSize, columns.length - 1);\n if (start < startIdx) {\n for (let idx = startIdx - 1; idx >= start; idx--) {\n offset -= columns[idx].width;\n }\n }\n let currentColumns = columns.slice(start, end + 1);\n this.viewportColumnsWidth = currentColumns.reduce((total, column) => total + column.width, 0);\n if (start > 0) {\n const offsetColumn = new ColumnBase();\n offsetColumn.width = offset;\n currentColumns.unshift(offsetColumn);\n }\n this.viewportColumns = new QueryList();\n this.viewportColumns.reset(currentColumns);\n this.columnsStartIdx = start;\n this.columnsEndIdx = end;\n this.columnInfo.columnRangeChange.emit({ start, end, offset });\n if (!range) {\n this.updateColumnViewport(startIdx, endIdx);\n }\n }\n handleColumnScroll() {\n const container = this.container.nativeElement;\n const scrollLeft = container.scrollLeft;\n if (this.scrollLeft !== scrollLeft) {\n this.scrollLeft = scrollLeft;\n const range = this.calculateViewportColumns();\n this.updateColumnViewport(range.startIdx, range.endIdx);\n if (range.startIdx < this.columnsStartIdx || this.columnsEndIdx < range.endIdx) {\n cancelAnimationFrame(this.columnUpdateFrame);\n this.columnUpdateFrame = requestAnimationFrame(() => {\n this.ngZone.run(() => {\n this.updateViewportColumns(range);\n this.changeDetector.markForCheck();\n });\n });\n }\n }\n }\n updateColumnViewport(startIdx, endIdx) {\n const lockedCount = this.lockedLeafColumns.length;\n const leafColumns = this.nonLockedLeafColumns.toArray();\n const viewportStart = lockedCount + startIdx + (this.detailTemplate && startIdx > 0 ? 1 : 0);\n let viewportEnd = lockedCount + endIdx + (this.detailTemplate ? 1 : 0);\n for (let idx = 0; idx < leafColumns.length; idx++) {\n const column = leafColumns[idx];\n if (column.isSpanColumn) {\n viewportEnd += column.childColumns.length;\n }\n }\n this.navigationService.setColumnViewport(viewportStart, viewportEnd);\n }\n calculateViewportColumns() {\n const { scrollLeft, clientWidth } = this.container.nativeElement;\n const columns = this.columns.nonLockedLeafColumns.toArray();\n const normalizedScrollLeft = this.normalizeScrollLeft(scrollLeft);\n const viewportEnd = normalizedScrollLeft + clientWidth;\n let startIdx;\n let endIdx = 0;\n let current = 0;\n let offset = 0;\n let idx;\n for (idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n current += column.width || 0;\n if (startIdx === undefined && current > normalizedScrollLeft) {\n startIdx = idx;\n offset = current - (column.width || 0);\n }\n if (current >= viewportEnd) {\n endIdx = idx;\n break;\n }\n }\n if (!endIdx && idx > 0) {\n endIdx = columns.length - 1;\n }\n return { startIdx, endIdx, offset };\n }\n viewportWidthChange() {\n const currentWidth = this.viewportColumns.toArray().reduce((total, column) => total + column.width, 0);\n return currentWidth !== this.viewportColumnsWidth;\n }\n normalizeScrollLeft(position) {\n return this.rtl ? rtlScrollPosition(position, this.container.nativeElement, this.supportService.rtlScrollLeft) : position;\n }\n elementScrollLeft(element) {\n if (this.rtl) {\n return this.normalizeScrollLeft(this.container.nativeElement.scrollWidth - element.offsetLeft - element.offsetWidth);\n }\n return element.offsetLeft;\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: DetailsService }, { token: ChangeNotificationService }, { token: SuspendService }, { token: GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: ScrollSyncService }, { token: ResizeService }, { token: EditService }, { token: BrowserSupportService }, { token: NavigationService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: PDFService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-grid-list\", inputs: { data: \"data\", groups: \"groups\", total: \"total\", rowHeight: \"rowHeight\", stickyRowHeight: \"stickyRowHeight\", detailRowHeight: \"detailRowHeight\", take: \"take\", skip: \"skip\", columns: \"columns\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", selectable: \"selectable\", groupable: \"groupable\", filterable: \"filterable\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", loading: \"loading\", trackBy: \"trackBy\", virtualColumns: \"virtualColumns\", isVirtual: \"isVirtual\", cellLoadingTemplate: \"cellLoadingTemplate\", loadingTemplate: \"loadingTemplate\" }, outputs: { contentScroll: \"contentScroll\", pageChange: \"pageChange\", scrollBottom: \"scrollBottom\" }, host: { properties: { \"class.k-grid-container\": \"this.hostClass\", \"attr.role\": \"this.hostRole\" } }, providers: [\n {\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"lockedContainer\", first: true, predicate: [\"lockedContainer\"], descendants: true }, { propertyName: \"lockedTable\", first: true, predicate: [\"lockedTable\"], descendants: true }, { propertyName: \"table\", first: true, predicate: [\"table\"], descendants: true, static: true }, { propertyName: \"resizeSensors\", predicate: ResizeSensorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    0\"\n [lockedWidth]=\"lockedWidth + 1\">\n
    \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: [\"columns\", \"groups\", \"detailTemplate\"] }, { type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: [\"columns\", \"allColumns\", \"groups\", \"detailTemplate\", \"noRecordsTemplate\", \"data\", \"skip\", \"selectable\", \"filterable\", \"noRecordsText\", \"isLocked\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\", \"skipGroupDecoration\", \"showGroupFooters\", \"lockedColumnsCount\", \"totalColumnsCount\", \"virtualColumns\", \"trackBy\", \"rowSticky\", \"rowClass\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: TableDirective, selector: \"table\", inputs: [\"locked\", \"virtualColumns\"] }, { type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: [\"lockedWidth\", \"kendoGridResizableContainer\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }\n ],\n selector: 'kendo-grid-list',\n template: `\n
    \n
    \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    0\"\n [lockedWidth]=\"lockedWidth + 1\">\n
    \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: DetailsService }, { type: ChangeNotificationService }, { type: SuspendService }, { type: GroupsService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ScrollSyncService }, { type: ResizeService }, { type: EditService }, { type: BrowserSupportService }, { type: NavigationService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: PDFService }, { type: ColumnInfoService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: [\"class.k-grid-container\"]\n }], hostRole: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], data: [{\n type: Input\n }], groups: [{\n type: Input\n }], total: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], stickyRowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], take: [{\n type: Input\n }], skip: [{\n type: Input\n }], columns: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], selectable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], loading: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], cellLoadingTemplate: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], contentScroll: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollBottom: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], lockedContainer: [{\n type: ViewChild,\n args: ['lockedContainer', { static: false }]\n }], lockedTable: [{\n type: ViewChild,\n args: ['lockedTable', { static: false }]\n }], table: [{\n type: ViewChild,\n args: ['table', { static: true }]\n }], resizeSensors: [{\n type: ViewChildren,\n args: [ResizeSensorComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass FooterComponent {\n constructor(columnInfoService) {\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.lockedColumnsCount = 0;\n this.logicalRowIndex = 0;\n }\n get footerClass() {\n return !this.scrollable;\n }\n get columnsToRender() {\n return columnsToRender(this.columns || []);\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n}\nFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterComponent, selector: \"[kendoGridFooter]\", inputs: { columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\", lockedColumnsCount: \"lockedColumnsCount\", logicalRowIndex: \"logicalRowIndex\" }, host: { properties: { \"class.k-grid-footer\": \"this.footerClass\" } }, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"columns.length - lockedColumnsCount\"\n >\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFooter]',\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"columns.length - lockedColumnsCount\"\n >\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], footerClass: [{\n type: HostBinding,\n args: ['class.k-grid-footer']\n }] } });\n\n/**\n * @hidden\n */\nclass LoadingComponent {\n constructor(localization) {\n this.localization = localization;\n this.hostClass = true;\n }\n get loadingText() {\n return this.localization.get('loading');\n }\n}\nLoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingComponent, selector: \"[kendoGridLoading]\", inputs: { loadingTemplate: \"loadingTemplate\" }, host: { properties: { \"class.k-loading-mask\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n {{ loadingText }}\n
    \n
    \n
    \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridLoading]',\n template: `\n \n {{ loadingText }}\n
    \n
    \n
    \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-loading-mask']\n }], loadingTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass GridMessages extends ComponentMessages {\n}\nGridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nGridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridMessages, selector: \"kendo-grid-messages-base\", inputs: { groupPanelEmpty: \"groupPanelEmpty\", noRecords: \"noRecords\", pagerLabel: \"pagerLabel\", pagerFirstPage: \"pagerFirstPage\", pagerLastPage: \"pagerLastPage\", pagerPreviousPage: \"pagerPreviousPage\", pagerNextPage: \"pagerNextPage\", pagerPage: \"pagerPage\", pagerItemsPerPage: \"pagerItemsPerPage\", pagerOf: \"pagerOf\", pagerItems: \"pagerItems\", pagerPageNumberInputTitle: \"pagerPageNumberInputTitle\", filter: \"filter\", filterInputLabel: \"filterInputLabel\", filterMenuTitle: \"filterMenuTitle\", filterMenuOperatorsDropDownLabel: \"filterMenuOperatorsDropDownLabel\", filterMenuLogicDropDownLabel: \"filterMenuLogicDropDownLabel\", filterEqOperator: \"filterEqOperator\", filterNotEqOperator: \"filterNotEqOperator\", filterIsNullOperator: \"filterIsNullOperator\", filterIsNotNullOperator: \"filterIsNotNullOperator\", filterIsEmptyOperator: \"filterIsEmptyOperator\", filterIsNotEmptyOperator: \"filterIsNotEmptyOperator\", filterStartsWithOperator: \"filterStartsWithOperator\", filterContainsOperator: \"filterContainsOperator\", filterNotContainsOperator: \"filterNotContainsOperator\", filterEndsWithOperator: \"filterEndsWithOperator\", filterGteOperator: \"filterGteOperator\", filterGtOperator: \"filterGtOperator\", filterLteOperator: \"filterLteOperator\", filterLtOperator: \"filterLtOperator\", filterIsTrue: \"filterIsTrue\", filterIsFalse: \"filterIsFalse\", filterBooleanAll: \"filterBooleanAll\", filterAfterOrEqualOperator: \"filterAfterOrEqualOperator\", filterAfterOperator: \"filterAfterOperator\", filterBeforeOperator: \"filterBeforeOperator\", filterBeforeOrEqualOperator: \"filterBeforeOrEqualOperator\", filterFilterButton: \"filterFilterButton\", filterClearButton: \"filterClearButton\", filterAndLogic: \"filterAndLogic\", filterOrLogic: \"filterOrLogic\", loading: \"loading\", gridLabel: \"gridLabel\", columnMenu: \"columnMenu\", setColumnPosition: \"setColumnPosition\", columns: \"columns\", lock: \"lock\", unlock: \"unlock\", stick: \"stick\", unstick: \"unstick\", sortable: \"sortable\", sortAscending: \"sortAscending\", sortDescending: \"sortDescending\", sortedAscending: \"sortedAscending\", sortedDescending: \"sortedDescending\", sortedDefault: \"sortedDefault\", columnsApply: \"columnsApply\", columnsReset: \"columnsReset\", detailExpand: \"detailExpand\", detailCollapse: \"detailCollapse\", filterDateToday: \"filterDateToday\", filterDateToggle: \"filterDateToggle\", filterNumericDecrement: \"filterNumericDecrement\", filterNumericIncrement: \"filterNumericIncrement\", selectionCheckboxLabel: \"selectionCheckboxLabel\", selectAllCheckboxLabel: \"selectAllCheckboxLabel\", groupCollapse: \"groupCollapse\", groupExpand: \"groupExpand\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-grid-messages-base'\n }]\n }], propDecorators: { groupPanelEmpty: [{\n type: Input\n }], noRecords: [{\n type: Input\n }], pagerLabel: [{\n type: Input\n }], pagerFirstPage: [{\n type: Input\n }], pagerLastPage: [{\n type: Input\n }], pagerPreviousPage: [{\n type: Input\n }], pagerNextPage: [{\n type: Input\n }], pagerPage: [{\n type: Input\n }], pagerItemsPerPage: [{\n type: Input\n }], pagerOf: [{\n type: Input\n }], pagerItems: [{\n type: Input\n }], pagerPageNumberInputTitle: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterInputLabel: [{\n type: Input\n }], filterMenuTitle: [{\n type: Input\n }], filterMenuOperatorsDropDownLabel: [{\n type: Input\n }], filterMenuLogicDropDownLabel: [{\n type: Input\n }], filterEqOperator: [{\n type: Input\n }], filterNotEqOperator: [{\n type: Input\n }], filterIsNullOperator: [{\n type: Input\n }], filterIsNotNullOperator: [{\n type: Input\n }], filterIsEmptyOperator: [{\n type: Input\n }], filterIsNotEmptyOperator: [{\n type: Input\n }], filterStartsWithOperator: [{\n type: Input\n }], filterContainsOperator: [{\n type: Input\n }], filterNotContainsOperator: [{\n type: Input\n }], filterEndsWithOperator: [{\n type: Input\n }], filterGteOperator: [{\n type: Input\n }], filterGtOperator: [{\n type: Input\n }], filterLteOperator: [{\n type: Input\n }], filterLtOperator: [{\n type: Input\n }], filterIsTrue: [{\n type: Input\n }], filterIsFalse: [{\n type: Input\n }], filterBooleanAll: [{\n type: Input\n }], filterAfterOrEqualOperator: [{\n type: Input\n }], filterAfterOperator: [{\n type: Input\n }], filterBeforeOperator: [{\n type: Input\n }], filterBeforeOrEqualOperator: [{\n type: Input\n }], filterFilterButton: [{\n type: Input\n }], filterClearButton: [{\n type: Input\n }], filterAndLogic: [{\n type: Input\n }], filterOrLogic: [{\n type: Input\n }], loading: [{\n type: Input\n }], gridLabel: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], setColumnPosition: [{\n type: Input\n }], columns: [{\n type: Input\n }], lock: [{\n type: Input\n }], unlock: [{\n type: Input\n }], stick: [{\n type: Input\n }], unstick: [{\n type: Input\n }], sortable: [{\n type: Input\n }], sortAscending: [{\n type: Input\n }], sortDescending: [{\n type: Input\n }], sortedAscending: [{\n type: Input\n }], sortedDescending: [{\n type: Input\n }], sortedDefault: [{\n type: Input\n }], columnsApply: [{\n type: Input\n }], columnsReset: [{\n type: Input\n }], detailExpand: [{\n type: Input\n }], detailCollapse: [{\n type: Input\n }], filterDateToday: [{\n type: Input\n }], filterDateToggle: [{\n type: Input\n }], filterNumericDecrement: [{\n type: Input\n }], filterNumericIncrement: [{\n type: Input\n }], selectionCheckboxLabel: [{\n type: Input\n }], selectAllCheckboxLabel: [{\n type: Input\n }], groupCollapse: [{\n type: Input\n }], groupExpand: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoGridLocalizedMessages]\", providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoGridLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst createControl = (source) => (acc, key) => {\n acc[key] = new FormControl(source[key]);\n return acc;\n};\nconst validateColumnsField = (columns) => expandColumns(columns.toArray())\n .filter(isColumnComponent)\n .filter(({ field }) => !isValidFieldName(field))\n .forEach(({ field }) => console.warn(`\n Grid column field name '${field}' does not look like a valid JavaScript identifier.\n Identifiers can contain only alphanumeric characters (including \"$\" or \"_\"), and may not start with a digit.\n Please use only valid identifier names to ensure error-free operation.\n `));\nconst handleExpandCollapseGroupsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ group }) => isPresent(group)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));\nconst handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ dataItem }) => isPresent(dataItem)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));\nconst isInEditedCell = (element, gridElement) => closest(element, matchesClasses('k-grid-edit-cell')) &&\n closest(element, matchesNodeName('kendo-grid')) === gridElement;\n/**\n * Represents the Kendo UI Grid component for Angular.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\nclass GridComponent {\n constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx) {\n this.supportService = supportService;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.wrapper = wrapper;\n this.groupInfoService = groupInfoService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.detailsService = detailsService;\n this.editService = editService;\n this.filterService = filterService;\n this.pdfService = pdfService;\n this.responsiveService = responsiveService;\n this.renderer = renderer;\n this.excelService = excelService;\n this.ngZone = ngZone;\n this.scrollSyncService = scrollSyncService;\n this.domEvents = domEvents;\n this.columnResizingService = columnResizingService;\n this.changeDetectorRef = changeDetectorRef;\n this.columnReorderService = columnReorderService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.sortService = sortService;\n this.scrollRequestService = scrollRequestService;\n this.localization = localization;\n this.ctx = ctx;\n /**\n * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count\n * ([more information and example]({% slug databinding_grid %})).\n */\n this.data = [];\n /**\n * Defines the scroll mode used by the Grid.\n *\n * The available options are:\n * - `none`—Renders no scrollbar.\n * - `scrollable`—The default scroll mode. It requires the setting of the `height` option.\n * - `virtual`—Displays no pager and renders a portion of the data (optimized rendering) while the user is scrolling the content.\n */\n this.scrollable = 'scrollable';\n /**\n * Enables the single-row [selection]({% slug selection_grid %}) of the Grid.\n */\n this.selectable = false;\n /**\n * A function that defines how to track changes for the data rows.\n *\n * By default, the Grid tracks changes by the index of the data item.\n * Edited rows are tracked by reference.\n * In some cases, you might need to override the default behavior,\n * for example, when you implement editing with immutable data items.\n *\n * The following example demonstrates how to track items only by index.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n * import { GridItem } from '@progress/kendo-angular-grid';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n *\n * public trackBy(index: number, item: GridItem): any {\n * console.log(item);\n * return index;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n this.trackBy = defaultTrackBy;\n /**\n * If set to `true`, the grid will render only the columns in the current viewport.\n */\n this.virtualColumns = false;\n /**\n * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.\n */\n this.filterable = false;\n /**\n * Enables the [sorting]({% slug sorting_grid %}) of the Grid columns that have their `field` option set.\n */\n this.sortable = false;\n /**\n * Configures the pager of the Grid ([see example]({% slug paging_grid %})).\n *\n * The available options are:\n * - `buttonCount: Number`—Sets the maximum numeric buttons count before the buttons are collapsed. Defaults to `10`.\n * - `info: Boolean`—Toggles the information about the current page and the total number of records. Defaults to `true`.\n * - `type: PagerType`—Accepts the `numeric` (buttons with numbers) and `input` (input for typing the page number) values. Defaults to `'numeric'`.\n * - `pageSizes: Boolean` or `Array`—Shows a menu for selecting the page size. Defaults to `false`.\n * - `previousNext: Boolean`—Toggles the **Previous** and **Next** buttons. Defaults to `true`.\n * - `responsive: Boolean`—Toggles the built-in responsive behavior of the Pager. Defaults to `true`.\n */\n this.pageable = false;\n /**\n * If set to `true`, the user can group the Grid by dragging the column header cells.\n * By default, grouping is disabled ([see example]({% slug groupingbasics_grid %})).\n */\n this.groupable = false;\n /**\n * Indicates whether the Grid columns will be resized during initialization so that\n * they fit their headers and row content. Defaults to `false`.\n * Columns with `autoSize` set to `false` are excluded.\n * To dynamically update the column width to match the new content,\n * refer to [this example]({% slug resizing_columns_grid %}).\n */\n this.autoSize = false;\n /**\n * If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells\n * ([see example]({% slug resizing_columns_grid %})).\n *\n * @default false\n */\n this.resizable = false;\n /**\n * If set to `true`, the user can reorder columns by dragging their header cells\n * ([see example]({% slug reordering_columns_grid %})).\n *\n * @default false\n */\n this.reorderable = false;\n /**\n * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug databinding_grid %})).\n *\n * @default false\n */\n this.loading = false;\n /**\n * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).\n *\n * @default false\n */\n this.columnMenu = false;\n /**\n * Specifies if the header of the grid will be hidden. The header is visible by default.\n *\n * > The header includes column headers and the [filter row]({% slug filtering_grid %}#toc-filter-row).\n */\n this.hideHeader = false;\n /**\n * Fires when the Grid filter is modified through the UI.\n * You have to handle the event yourself and filter the data.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the page of the Grid is changed ([see example]({% slug paging_grid %})).\n * You have to handle the event yourself and page the data.\n */\n this.pageChange = new EventEmitter();\n /**\n * Fires when the grouping of the Grid is changed.\n * You have to handle the event yourself and group the data ([see example]({% slug groupingbasics_grid %})).\n */\n this.groupChange = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the sorting of the Grid is changed ([see example]({% slug sorting_grid %})).\n * You have to handle the event yourself and sort the data.\n */\n this.sortChange = new EventEmitter();\n /**\n * Fires when the user selects a Grid row.\n * Emits the [SelectionEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the data state of the Grid is changed.\n */\n this.dataStateChange = new EventEmitter();\n /**\n * Fires when the user expands a group header.\n */\n this.groupExpand = new EventEmitter();\n /**\n * Fires when the user collapses a group header.\n */\n this.groupCollapse = new EventEmitter();\n /**\n * Fires when the user expands a master row.\n */\n this.detailExpand = new EventEmitter();\n /**\n * Fires when the user collapses a master row.\n */\n this.detailCollapse = new EventEmitter();\n /**\n * Fires when the user clicks the **Edit** command button to edit a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-editing-records)).\n */\n this.edit = new EventEmitter();\n /**\n * Fires when the user clicks the **Cancel** command button to close a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-cancelling-editing)).\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the user clicks the **Save** command button to save changes in a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-saving-records)).\n */\n this.save = new EventEmitter();\n /**\n * Fires when the user clicks the **Remove** command button to remove a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-removing-records)).\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the user clicks the **Add** command button to add a new row\n * ([see example]({% slug editing_template_forms_grid %}#toc-adding-records)).\n */\n this.add = new EventEmitter();\n /**\n * Fires when the user leaves an edited cell ([see example]({% slug editing_incell_grid %}#toc-basic-concepts)).\n */\n this.cellClose = new EventEmitter();\n /**\n * Fires when the user clicks a cell ([see example]({% slug editing_incell_grid %}#toc-basic-concepts)).\n */\n this.cellClick = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user clicks the **Export to PDF** command button.\n */\n this.pdfExport = new EventEmitter();\n /**\n * Fires when the user clicks the **Export to Excel** command button.\n */\n this.excelExport = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the column.\n */\n this.columnResize = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user completes the reordering of the column.\n */\n this.columnReorder = new EventEmitter();\n /**\n * Fires when the user changes the visibility of the columns from the column menu or column chooser.\n */\n this.columnVisibilityChange = new EventEmitter();\n /**\n * Fires when the user changes the locked state of the columns from the column menu or by reordering the columns.\n */\n this.columnLockedChange = new EventEmitter();\n /**\n * Fires when the user changes the sticky state of the columns from the column menu.\n */\n this.columnStickyChange = new EventEmitter();\n /**\n * Fires when the user scrolls to the last record on the page and enables endless scrolling\n * ([see example]({% slug scrollmmodes_grid %}#toc-endless-scrolling)).\n * You have to handle the event yourself and page the data.\n */\n this.scrollBottom = new EventEmitter();\n /**\n * Fires when the grid content is scrolled.\n * For performance reasons, the event is triggered outside the Angular zone. Enter the Angular zone if you make any changes that require change detection.\n */\n this.contentScroll = new EventEmitter();\n /**\n * A query list of all declared columns.\n */\n this.columns = new QueryList();\n this.footer = new QueryList();\n this.selectionDirective = false;\n this.columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {\n column.matchesMedia = this.matchesMedia(column);\n return column.isVisible;\n }));\n this.view = new DataCollection(() => new DataResultIterator(this.data, this.skip, this.hasGroupFooters));\n this.shouldGenerateColumns = true;\n this._sort = new Array();\n this._group = new Array();\n this._skip = 0;\n this.cachedWindowWidth = 0;\n this._rowSelected = null;\n this._cellSelected = null;\n this._navigable = [];\n this.rtl = false;\n this._rowClass = () => null;\n validatePackage(packageMetadata);\n this.ctx.grid = this;\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.groupInfoService.registerColumnsContainer(() => this.columnList);\n this.columnInfoService.init(this.columnsContainer, () => this.columnList);\n this.columnVisibilityChangeSubscription = this.columnInfoService.visibilityChange.subscribe((changed) => {\n this.columnVisibilityChange.emit(new ColumnVisibilityChangeEvent(changed));\n });\n this.columnLockedChangeSubscription = this.columnInfoService.lockedChange.subscribe((changed) => {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent(changed));\n });\n this.columnStickyChangeSubscription = this.columnInfoService.stickyChange.subscribe((changed) => {\n this.columnStickyChange.emit(new ColumnStickyChangeEvent(changed));\n });\n this.groupExpandCollapseSubscription = handleExpandCollapseGroupsService(groupsService, this.groupExpand, this.groupCollapse, ({ group, groupIndex, parentGroup }) => ({ group, groupIndex, parentGroup }));\n this.detailsServiceSubscription = handleExpandCollapseDetailsService(detailsService, this.detailExpand, this.detailCollapse, args => args);\n this.filterSubscription = this.filterService.changes.subscribe(x => {\n this.filterChange.emit(x);\n });\n this.sortSubscription = this.sortService.changes.subscribe(x => {\n this.sortChange.emit(x);\n });\n this.attachStateChangesEmitter();\n this.attachEditHandlers();\n this.attachDomEventHandlers();\n this.pdfSubscription = this.pdfService.exportClick.subscribe(this.emitPDFExportEvent.bind(this));\n this.excelSubscription = this.excelService.exportClick.subscribe(this.saveAsExcel.bind(this));\n this.columnsContainerChange();\n this.handleColumnResize();\n this.columnList = new ColumnList(this.columns);\n this.columnReorderSubscription = this.columnReorderService\n .changes.subscribe(this.reorder.bind(this));\n this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));\n }\n /**\n * Defines the number of records to be skipped by the pager.\n * Required by the [paging]({% slug paging_grid %}) functionality.\n */\n get skip() {\n return this._skip;\n }\n set skip(value) {\n if (typeof value === 'number' && value >= 0) {\n this._skip = value;\n }\n }\n /**\n * The descriptors by which the data will be sorted ([see example]({% slug sorting_grid %})).\n */\n set sort(value) {\n if (isArray(value)) {\n this._sort = value;\n }\n }\n get sort() {\n return this._sort;\n }\n /**\n * The descriptors by which the data will be grouped ([see example]({% slug groupingbasics_grid %})).\n */\n set group(value) {\n if (isArray(value)) {\n this._group = value;\n }\n }\n /**\n */\n get group() {\n return this._group;\n }\n /**\n * @hidden\n */\n get showTopToolbar() {\n return this.toolbarTemplate && ['top', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomToolbar() {\n return this.toolbarTemplate && ['bottom', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n /**\n * @hidden\n */\n get showTopPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && ['top', 'both'].indexOf(position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && position !== 'top';\n }\n /**\n * @hidden\n */\n get hasPager() {\n return this.showTopPager || this.showBottomPager;\n }\n /**\n * @hidden\n */\n get showGroupPanel() {\n return this.groupable && this.groupable.enabled !== false;\n }\n /**\n * @hidden\n */\n get groupableEmptyText() {\n return this.groupable.emptyText;\n }\n /**\n * @hidden\n */\n get marqueeSelection() {\n return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;\n }\n /**\n * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.\n * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.\n * To enable navigation through separate Grid sections only, provide a [`GridNavigableSection`]({% slug api_grid_gridnavigablesection %}) array.\n */\n set navigable(value) {\n if (typeof value === 'boolean') {\n this._navigable = value ? ['table', 'pager'] : [];\n return;\n }\n this._navigable = value;\n }\n get navigable() {\n return this._navigable;\n }\n /**\n * @hidden\n *\n * An alias for `navigable` for users who migrate from Kendo UI for jQuery.\n */\n set navigatable(value) {\n this.navigable = value;\n }\n /**\n * @hidden\n */\n get navigatable() {\n return this.navigable;\n }\n /**\n * Defines a function that is executed for every data row in the component.\n *\n * @example\n * ```ts\n * import { Component, ViewEncapsulation } from '@angular/core';\n * import { RowClassArgs } from '@progress/kendo-angular-grid';\n *\n * _@Component({\n * selector: 'my-app',\n * encapsulation: ViewEncapsulation.None,\n * styles: [`\n * .k-grid tr.even { background-color: #f45c42; }\n * .k-grid tr.odd { background-color: #41f4df; }\n * `],\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n *\n * public rowCallback(context: RowClassArgs) {\n * const isEven = context.index % 2 === 0;\n * return {\n * even: isEven,\n * odd: !isEven\n * };\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n set rowClass(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`rowClass must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._rowClass = fn;\n }\n get rowClass() {\n return this._rowClass;\n }\n /**\n * Defines a function that is executed for every data row in the component,\n * and determines whether the row will be sticky, i.e. always visible after scrolling.\n */\n set rowSticky(fn) {\n if (isDevMode && isPresent(fn) && typeof fn !== 'function') {\n throw new Error(`rowSticky must be a function, but received ${JSON.stringify(fn)}.`);\n }\n if (isPresent(fn)) {\n this._rowSticky = fn;\n }\n }\n get rowSticky() {\n return this._rowSticky;\n }\n /**\n * Defines a Boolean function that is executed for each data row in the component\n * ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-rows)).\n * Determines whether the row will be selected.\n */\n set rowSelected(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`rowSelected must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._rowSelected = fn;\n }\n get rowSelected() {\n return this._rowSelected;\n }\n /**\n * Defines a function that determines the selected state of a data cell.\n * Returns an object with `selected` and `item` properties.\n * The cell is marked as selected only if the `selected` property equals `true`.\n *\n * The function is executed for each data cell and may be called more than once\n * as part of a change detection cycle. ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-cells))\n */\n set cellSelected(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`cellSelected must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._cellSelected = fn;\n }\n get cellSelected() {\n return this._cellSelected;\n }\n /**\n * Returns the currently focused cell (if any).\n */\n get activeCell() {\n return this.navigationService.activeCell;\n }\n /**\n * Returns the currently focused row (if any).\n */\n get activeRow() {\n return this.navigationService.activeRow;\n }\n get dir() {\n return this.direction;\n }\n get hostClasses() {\n return true;\n }\n get lockedClasses() {\n return this.lockedLeafColumns.length > 0;\n }\n get virtualClasses() {\n return this.isVirtual;\n }\n get noScrollbarClass() {\n return this.scrollbarWidth === 0;\n }\n get detailTemplate() {\n if (this._customDetailTemplate) {\n return this._customDetailTemplate;\n }\n return this.detailTemplateChildren ? this.detailTemplateChildren.first : undefined;\n }\n set detailTemplate(detailTemplate) {\n this._customDetailTemplate = detailTemplate;\n }\n get cellLoadingTemplate() {\n if (this._cellLoadingTemplate) {\n return this._customDetailTemplate;\n }\n return this.cellLoadingTemplateChildren ? this.cellLoadingTemplateChildren.first : undefined;\n }\n set cellLoadingTemplate(cellLoadingTemplate) {\n this._cellLoadingTemplate = cellLoadingTemplate;\n }\n get loadingTemplate() {\n if (this._loadingTemplate) {\n return this._loadingTemplate;\n }\n return this.loadingTemplateChildren ? this.loadingTemplateChildren.first : undefined;\n }\n set loadingTemplate(loadingTemplate) {\n this._loadingTemplate = loadingTemplate;\n }\n get noRecordsTemplate() {\n if (this._customNoRecordsTemplate) {\n return this._customNoRecordsTemplate;\n }\n return this.noRecordsTemplateChildren ? this.noRecordsTemplateChildren.first : undefined;\n }\n set noRecordsTemplate(customNoRecordsTemplate) {\n this._customNoRecordsTemplate = customNoRecordsTemplate;\n }\n get pagerTemplate() {\n if (this._customPagerTemplate) {\n return this._customPagerTemplate;\n }\n return this.pagerTemplateChildren ? this.pagerTemplateChildren.first : undefined;\n }\n set pagerTemplate(customPagerTemplate) {\n this._customPagerTemplate = customPagerTemplate;\n }\n get toolbarTemplate() {\n if (this._customToolbarTemplate) {\n return this._customToolbarTemplate;\n }\n return this.toolbarTemplateChildren ? this.toolbarTemplateChildren.first : undefined;\n }\n set toolbarTemplate(customToolbarTemplate) {\n this._customToolbarTemplate = customToolbarTemplate;\n }\n get scrollbarWidth() {\n return this.supportService.scrollbarWidth;\n }\n get headerPadding() {\n if (isUniversal()) {\n return \"\";\n }\n const padding = Math.max(0, this.scrollbarWidth) + 'px';\n const right = this.rtl ? 0 : padding;\n const left = this.rtl ? padding : 0;\n return `0 ${right} 0 ${left}`;\n }\n get hasGroupFooters() {\n return this.columnsContainer.hasGroupFooter;\n }\n get showFooter() {\n return this.columnsContainer.hasFooter;\n }\n get showGroupFooters() {\n return this.groupable && this.groupable.showFooter;\n }\n get ariaRowCount() {\n return this.totalColumnLevels + 1 + this.view.total;\n }\n get ariaColCount() {\n return this.columnsContainer.leafColumnsToRender.length;\n }\n get navigation() {\n return this.navigationService;\n }\n get isVirtual() {\n return this.scrollable === 'virtual';\n }\n get isScrollable() {\n return this.scrollable !== 'none';\n }\n get visibleColumns() {\n return this.columnsContainer.allColumns;\n }\n get lockedColumns() {\n return this.columnsContainer.lockedColumns;\n }\n get nonLockedColumns() {\n return this.columnsContainer.nonLockedColumns;\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get stickyColumns() {\n return this.columns.filter(column => column.sticky);\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columnsContainer.leafColumns;\n }\n get totalColumnLevels() {\n return this.columnsContainer.totalLevels;\n }\n get headerColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedColumns;\n }\n get headerLeafColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.leafViewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get lockedWidth() {\n const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {\n return !this.virtualColumns ? this.columnsContainer.unlockedWidth :\n this.leafViewportColumns.reduce((acc, column) => acc + (column.width || 0), 0);\n }\n return undefined;\n }\n get selectableSettings() {\n if (this.selectionService) {\n return this.selectionService.options;\n }\n return undefined;\n }\n get columnMenuTemplate() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n get totalCount() {\n if (this.isVirtual || !isPresent(this.pageSize)) {\n return this.view.total;\n }\n return this.pageSize;\n }\n /**\n * Expands the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n expandRow(index) {\n this.toggleDetailRowLegacy(index, true);\n }\n /**\n * Collapses the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n collapseRow(index) {\n this.toggleDetailRowLegacy(index, false);\n }\n /**\n * Expands a group header item for the given index. For example,\n * `0_1` expands the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * > * When you use the [kendoGridGroupBinding]({% slug api_grid_groupbindingdirective %}) directive,\n * > the `expandGroup` method is not supported.\n * > * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n expandGroup(index) {\n this.toggleGroupRowLegacy(index, true);\n }\n /**\n * Collapses a group header item for the given index. For example,\n * `0_1` collapses the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * > * When you use the [kendoGridGroupBinding]({% slug api_grid_groupbindingdirective %}) directive,\n * > the `collapseGroup` method is not supported.\n * > * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n collapseGroup(index) {\n this.toggleGroupRowLegacy(index, false);\n }\n /**\n * @hidden\n */\n resetGroupsState() {\n this.groupsService.reset();\n }\n /**\n * @hidden\n */\n expandGroupChildren(groupIndex) {\n this.groupsService.expandChildren(groupIndex);\n }\n /**\n * @hidden\n */\n onDataChange() {\n this.autoGenerateColumns();\n this.changeNotification.notify();\n this.pdfService.dataChanged.emit();\n if (isPresent(this.defaultSelection)) {\n this.defaultSelection.reset();\n }\n this.initSelectionService();\n this.updateNavigationMetadata();\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"data\", changes)) {\n this.onDataChange();\n }\n if (this.lockedLeafColumns.length && anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\"], changes)) {\n this.changeNotification.notify();\n }\n if (anyChanged([\"pageSize\", \"scrollable\", 'virtualColumns'], changes)) {\n this.updateNavigationMetadata();\n }\n if (isChanged$1(\"virtualColumns\", changes)) {\n this.viewportColumns = this.leafViewportColumns = null;\n }\n if (isChanged$1(\"height\", changes, false)) {\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', `${this.height}px`);\n }\n if (isChanged$1(\"filterable\", changes) && this.lockedColumns.length) {\n this.syncHeaderHeight(this.ngZone.onStable.asObservable().pipe(take(1)));\n }\n if (anyChanged([\"columnMenu\", \"sortable\", \"filterable\"], changes, false)) {\n this.columnMenuOptions = this.columnMenu && Object.assign({\n filter: Boolean(this.filterable),\n sort: Boolean(this.sortable)\n }, this.columnMenu);\n }\n if (isChanged$1(\"scrollable\", changes) && this.isScrollable) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());\n }\n if (isChanged$1(\"selectable\", changes) && this.shouldResetSelection(changes.selectable)) {\n if (this.defaultSelection) {\n this.defaultSelection.reset();\n }\n else if (this.selectionDirective) {\n this.selectionDirective.reset();\n }\n }\n if (isChanged$1('groupable', changes, true)) {\n this.groupable = changes.groupable.currentValue;\n }\n if (isChanged$1('navigable', changes, true)) {\n if (this.navigationService.enabled) {\n this.navigationService.setActiveSections(this.navigable);\n }\n else {\n if (this.navigable.length) {\n this.navigationService.init(this.navigationMetadata(), this.navigable);\n }\n }\n }\n }\n ngAfterViewInit() {\n this.attachScrollSync();\n this.attachElementEventHandlers();\n this.updateNavigationMetadata();\n this.applyAutoSize();\n }\n ngAfterContentChecked() {\n this.columnsContainer.refresh();\n this.verifySettings();\n this.initSelectionService();\n }\n ngAfterContentInit() {\n this.shouldGenerateColumns = !this.columns.length;\n this.autoGenerateColumns();\n this.columnList = new ColumnList(this.columns);\n this.columnsChangeSubscription = this.columns.changes.subscribe(() => this.verifySettings());\n }\n ngOnInit() {\n if (this.navigable.length) {\n this.navigationService.init(this.navigationMetadata(), this.navigable);\n }\n }\n ngOnDestroy() {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.groupExpandCollapseSubscription) {\n this.groupExpandCollapseSubscription.unsubscribe();\n }\n if (this.detailsServiceSubscription) {\n this.detailsServiceSubscription.unsubscribe();\n }\n if (this.editServiceSubscription) {\n this.editServiceSubscription.unsubscribe();\n }\n if (this.pdfSubscription) {\n this.pdfSubscription.unsubscribe();\n }\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n if (this.sortSubscription) {\n this.sortSubscription.unsubscribe();\n }\n if (this.columnsChangeSubscription) {\n this.columnsChangeSubscription.unsubscribe();\n }\n if (this.excelSubscription) {\n this.excelSubscription.unsubscribe();\n }\n if (this.columnsContainerChangeSubscription) {\n this.columnsContainerChangeSubscription.unsubscribe();\n }\n if (this.scrollSyncService) {\n this.scrollSyncService.destroy();\n }\n if (this.detachElementEventHandlers) {\n this.detachElementEventHandlers();\n }\n if (this.defaultSelection) {\n this.defaultSelection.destroy();\n }\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n }\n if (this.footerChangeSubscription) {\n this.footerChangeSubscription.unsubscribe();\n }\n this.ngZone = null;\n if (this.columnResizingSubscription) {\n this.columnResizingSubscription.unsubscribe();\n }\n if (this.columnReorderSubscription) {\n this.columnReorderSubscription.unsubscribe();\n }\n if (this.localizationSubscription) {\n this.localizationSubscription.unsubscribe();\n }\n if (this.columnVisibilityChangeSubscription) {\n this.columnVisibilityChangeSubscription.unsubscribe();\n }\n if (this.columnLockedChangeSubscription) {\n this.columnLockedChangeSubscription.unsubscribe();\n }\n if (this.columnStickyChangeSubscription) {\n this.columnStickyChangeSubscription.unsubscribe();\n }\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n this.columnRangeChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n attachScrollSync() {\n if (isUniversal()) {\n return;\n }\n if (this.header) {\n this.scrollSyncService.registerEmitter(this.header.nativeElement, \"header\");\n }\n if (this.footer) {\n this.footerChangeSubscription = observe(this.footer)\n .subscribe(footers => footers\n .map(footer => footer.nativeElement)\n .filter(isPresent)\n .forEach(element => this.scrollSyncService.registerEmitter(element, \"footer\")));\n }\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n return this.localization.get('gridLabel');\n }\n /**\n * Switches the specified table row in the edit mode ([see example]({% slug editing_template_forms_grid %}#toc-editing-records)).\n *\n * @param rowIndex - The data row index that will be switched in the edit mode.\n * @param group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }})\n * that describes the edit form.\n * @param options - Additional options configuring the focus target once the editor opens.\n */\n editRow(rowIndex, group, options) {\n this.editService.editRow(rowIndex, group);\n if (isPresent(options) && options.skipFocus) {\n return;\n }\n const row = `tr[data-kendo-grid-item-index=\"${rowIndex}\"]`;\n const columnIndex = options && options.columnIndex;\n const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index=\"${columnIndex}\"]`;\n this.focusEditElement(target);\n }\n /**\n * Closes the editor for a given row ([see example]({% slug editing_template_forms_grid %}#toc-cancelling-editing)).\n *\n * @param {number} index - The row index that will be switched out of the edit mode. If no index is provided, it is assumed\n * that the new item editor will be closed.\n */\n closeRow(index) {\n this.editService.close(index);\n }\n /**\n * Creates a new row editor ([see example]({% slug editing_template_forms_grid %}#toc-adding-records)).\n *\n * @param {FormGroup} group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }}) that describes\n * the edit form. If called with a data item, it will build the `FormGroup` from the data item fields.\n */\n addRow(group) {\n const isFormGroup = group instanceof FormGroup;\n if (!isFormGroup) {\n const fields = Object.keys(group).reduce(createControl(group), {}); // FormBuilder?\n group = new FormGroup(fields);\n }\n this.editService.addRow(group);\n this.focusEditElement('.k-grid-add-row');\n }\n /**\n * Puts the cell that is specified by the table row and column in edit mode.\n *\n * @param {number} rowIndex - The data row index that will be switched in the edit mode.\n * @param {number|string|any} column - The leaf column index, or the field name or the column instance that should be edited.\n * @param {FormGroup} group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }})\n * that describes the edit form.\n */\n editCell(rowIndex, column, group) {\n const instance = this.columnInstance(column);\n this.editService.editCell(rowIndex, instance, group);\n this.focusEditElement('.k-grid-edit-cell');\n }\n /**\n * Closes the current cell in edit mode and fires\n * the [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event.\n *\n * @return {boolean} Indicates whether the edited cell was closed.\n * A `false` value indicates that the\n * [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event was prevented.\n */\n closeCell() {\n return !this.editService.closeCell();\n }\n /**\n * Closes the current cell in edit mode.\n */\n cancelCell() {\n this.editService.cancelCell();\n }\n /**\n * Returns a flag which indicates if a row or a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a row or a cell is currently edited.\n */\n isEditing() {\n return this.editService.isEditing();\n }\n /**\n * Returns a flag which indicates if a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a cell is currently being edited.\n */\n isEditingCell() {\n return this.editService.isEditingCell();\n }\n /**\n * Initiates the PDF export ([see example]({% slug pdfexport_grid %})).\n */\n saveAsPDF() {\n this.pdfService.save(this);\n }\n /**\n * Exports the Grid element to a Drawing [Group]({% slug api_kendo-drawing_group %}) by using the `kendo-grid-pdf` component options.\n * ([see example]({% slug pdfexport_grid %}#toc-exporting-multiple-grids-to-the-same-pdf)).\n *\n * @return {Promise} - A promise that will be resolved with the Drawing `Group`.\n */\n drawPDF() {\n const promise = createPromise();\n this.pdfService.draw(this, promise);\n return promise;\n }\n /**\n * Initiates the Excel export ([see example]({% slug excelexport_grid %})).\n */\n saveAsExcel() {\n this.excelService.save(this);\n }\n /**\n * Applies the minimum possible width for the specified column,\n * so that the whole text fits without wrapping. This method expects the Grid\n * to be resizable (set `resizable` to `true`).\n * Makes sense to execute this method only\n * after the Grid is already populated with data.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n autoFitColumn(column) {\n this.columnResizingService.autoFit(column);\n }\n /**\n * Adjusts the width of the specified columns to fit the entire content, including headers, without wrapping.\n * If no columns are specified, `autoFitColumns` is applied to all columns.\n *\n * This method requires the Grid to be resizable (set `resizable` to `true`).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n autoFitColumns(columns = this.columns) {\n let cols;\n if (columns instanceof QueryList) {\n cols = columns.toArray();\n }\n else {\n cols = columns;\n }\n this.columnResizingService.autoFit(...cols);\n }\n /**\n * @hidden\n */\n notifyPageChange(source, event) {\n if (source === \"list\" && !this.isVirtual) {\n return;\n }\n this.pageChange.emit(event);\n }\n /**\n * @hidden\n */\n notifyScrollBottom() {\n if (this.scrollable === 'none') {\n return;\n }\n if (hasObservers(this.scrollBottom)) {\n this.ngZone.run(() => this.scrollBottom.emit({ sender: this }));\n }\n }\n /**\n * @hidden\n */\n focusEditElement(containerSelector) {\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n this.ngZone.runOutsideAngular(() => {\n this.focusElementSubscription = this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const wrapper = this.wrapper.nativeElement;\n if (!this.setEditFocus(wrapper.querySelector(containerSelector)) && this.isLocked) {\n this.setEditFocus(wrapper.querySelector(`.k-grid-content ${containerSelector}`));\n }\n this.focusElementSubscription = null;\n });\n });\n }\n /**\n * Focuses the last active or the first cell of the Grid.\n *\n * @returns {NavigationCell} The focused cell.\n */\n focus() {\n this.assertNavigable();\n return this.navigationService.focusCell();\n }\n /**\n * Focuses the cell with the specified row and column index.\n *\n * The row index is based on the logical structure of the Grid and does not correspond to the data item index:\n * * Header rows are included, starting at index 0.\n * * Group headers and footers are included.\n * * The row indexing is absolute and does not change with paging.\n *\n * If the Grid is configured for scrolling, including virtual scrolling, the scroll position will be updated.\n * If the row is not present on the current page, the method will have no effect.\n *\n * @param rowIndex - The logical row index to focus. The top header row has an index 0.\n * @param colIndex - The column index to focus.\n * @returns {NavigationCell} The focused cell.\n *\n */\n focusCell(rowIndex, colIndex) {\n this.assertNavigable();\n return this.navigationService.focusCell(rowIndex, colIndex);\n }\n /**\n * Focuses the next cell, optionally wrapping to the next row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the last cell, returns `null`.\n */\n focusNextCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusNextCell(wrap);\n }\n /**\n * Focuses the previous cell. Optionally wraps to the previous row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the first cell, returns `null`.\n */\n focusPrevCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusPrevCell(wrap);\n }\n /**\n * Scrolls to the specified row and column ([see example]({% slug scrollmmodes_grid %}#toc-scrolling-to-a-specific-row-and-column-index)).\n */\n scrollTo(request) {\n this.scrollRequestService.scrollTo(request);\n }\n /**\n * Changes the position of the specified column.\n * The reordering of columns operates only on the level\n * which is inferred by the source column.\n * For the `reorderColumn` method to work properly,\n * the `source` column has to be visible.\n *\n * @param {ColumnBase} source - The column whose position will be changed.\n * @param {number} destIndex - The new position of the column.\n * @param {ColumnReorderConfig} options - Additional options.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n reorderColumn(source, destIndex, options = { before: false }) {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let target = columnsForLevel[destIndex];\n if (!target) {\n return;\n }\n const lastNonLocked = target.isLocked &&\n !source.isLocked &&\n this.columnsContainer.nonLockedColumns.length === 1;\n if (lastNonLocked) {\n return;\n }\n if (isSpanColumnComponent(target) && !options.before) {\n target = target.childColumns.last;\n }\n this.reorder({\n before: options.before,\n source: source,\n target: target\n });\n }\n /**\n * A function which determines if a specific row is expanded.\n */\n set isDetailExpanded(callback) {\n this.detailsService.userCallback = callback;\n }\n get isDetailExpanded() {\n return this.detailsService.userCallback;\n }\n /**\n * A function which determines if a specific group row is expanded.\n */\n set isGroupExpanded(callback) {\n this.groupsService.userCallback = callback;\n this.groupable = isPresent(callback);\n }\n get isGroupExpanded() {\n return this.groupsService.userCallback;\n }\n /**\n * @hidden\n */\n reorder({ target, source, before, changeContainer }) {\n this.ngZone.run(() => {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let newIndex = columnsForLevel.indexOf(target);\n if (target.parent && target.parent.isSpanColumn) {\n newIndex = columnsForLevel.indexOf(target.parent);\n if (before) {\n target = target.parent;\n }\n }\n let oldIndex = columnsForLevel.indexOf(source);\n if (changeContainer) {\n if (before && 0 < newIndex && oldIndex < newIndex) { // dropped before the first not locked column\n newIndex--;\n }\n else if (!before && oldIndex > newIndex) { // dropped after the last locked column\n newIndex++;\n }\n }\n const args = new ColumnReorderEvent({\n column: source,\n oldIndex: oldIndex,\n newIndex: newIndex\n });\n this.columnReorder.emit(args);\n if (args.isDefaultPrevented()) {\n return;\n }\n if (changeContainer) {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent([source]));\n }\n this.updateColumnIndices({ columnsForLevel, source, target, before });\n if (source.locked !== target.locked) {\n source.locked = target.locked;\n }\n this.columnsContainer.refresh();\n this.changeDetectorRef.markForCheck();\n });\n }\n updateColumnIndices({ columnsForLevel, source, target, before }) {\n const expandedColumns = expandColumnsWithSpan(columnsForLevel);\n const sourceColumnIndex = expandedColumns.indexOf(source);\n let nextSourceIndex = 0;\n let nextIndex = 0;\n let toSkip = 1;\n // Possible only when called from the API.\n if (source.isSpanColumn) {\n toSkip += source.childColumns.length;\n }\n let i = 0;\n while (i < expandedColumns.length) {\n let column = expandedColumns[i];\n if (column === target) {\n nextSourceIndex = before ? nextIndex : nextIndex + 1;\n nextIndex = before ? nextIndex + toSkip : nextIndex;\n column.orderIndex = nextIndex;\n if (nextSourceIndex === nextIndex + 1) {\n nextIndex += toSkip;\n }\n }\n else if (column === source) {\n i += toSkip;\n continue;\n }\n else {\n column.orderIndex = nextIndex;\n }\n nextIndex++;\n i++;\n }\n for (i = sourceColumnIndex; i < sourceColumnIndex + toSkip; i++) {\n expandedColumns[i].orderIndex = nextSourceIndex++;\n }\n this.updateIndicesForLevel(source.level + 1);\n }\n updateIndicesForLevel(level) {\n const colsForParentLevel = this.allColumnsForLevel(level - 1);\n const colsForLevel = [];\n sortColumns(colsForParentLevel).forEach((c) => {\n if (c.isColumnGroup) {\n colsForLevel.push(...c.childrenArray.sort((a, b) => a.orderIndex - b.orderIndex));\n }\n });\n expandColumnsWithSpan(colsForLevel).map((c, i) => c.orderIndex = i);\n if (level < this.columnList.totalColumnLevels()) {\n this.updateIndicesForLevel(level + 1);\n }\n }\n allColumnsForLevel(level) {\n return this.columnList.toArray().filter(column => column.level === level);\n }\n initSelectionService() {\n if (!this.selectable) {\n this.selectionService.ngOnDestroy();\n this.cellSelectionService.ngOnDestroy();\n return;\n }\n if (!this.selectionDirective && !isPresent(this.defaultSelection)) {\n this.defaultSelection = new Selection(this.ctx, this.changeDetectorRef);\n }\n const cellSelectionMode = this.selectable['cell'];\n const activeService = cellSelectionMode ? this.cellSelectionService : this.selectionService;\n const inactiveService = cellSelectionMode ? this.selectionService : this.cellSelectionService;\n if (inactiveService.active) {\n inactiveService.ngOnDestroy();\n activeService.addSubscriptions();\n inactiveService.active = false;\n }\n activeService.active = true;\n activeService.init({\n cellSelected: cellSelectionMode ? this.cellSelected : undefined,\n rowSelected: cellSelectionMode ? undefined : this.rowSelected,\n selectable: this.selectable,\n view: this.view,\n columns: cellSelectionMode ? this.columnList.toArray() : undefined\n });\n if (!this.selectionDirective && !this.selectableSettings.enabled) {\n this.defaultSelection.reset();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (cellSelectionMode) {\n this.selectionSubscription = this.cellSelectionService.changes.subscribe((event) => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n }\n else {\n this.selectionSubscription = this.selectionService.changes.subscribe((event) => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n }\n }\n setEditFocus(element) {\n if (element) {\n return this.navigationService.tryFocus(element);\n }\n }\n columnInstance(column) {\n let instance;\n if (typeof column === 'number') {\n instance = this.columnsContainer.lockedLeafColumns.toArray()\n .concat(this.columnsContainer.nonLockedLeafColumns.toArray())[column];\n }\n else if (typeof column === 'string') {\n instance = this.columnList.filter((item) => item.field === column)[0];\n }\n else {\n instance = column;\n }\n if (!instance && isDevMode()) {\n throw new Error(`Invalid column ${column}`);\n }\n return instance;\n }\n verifySettings() {\n if (isDevMode()) {\n const locked = this.lockedLeafColumns.length || (this.columnMenu && this.columnMenu.lock);\n const stickyColumns = this.stickyColumns.length || (this.columnMenu && this.columnMenu.stick);\n if (locked && this.detailTemplate) {\n throw new Error('Having both detail template and locked columns is not supported.');\n }\n if (stickyColumns && this.detailTemplate) {\n throw new Error('Having both detail template and sticky columns is not supported.');\n }\n if (this.lockedLeafColumns.length && !this.nonLockedLeafColumns.length) {\n throw new Error('There should be at least one non-locked column');\n }\n if ((locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n throw new Error((locked ? 'Locked' : 'Virtual') + ' columns feature requires all columns to have set width.');\n }\n if (locked && !this.isScrollable) {\n throw new Error('Locked columns are only supported when scrolling is enabled.');\n }\n if (this.columnList.filter(isColumnGroupComponent).filter((x) => !x.hasChildren).length) {\n throw new Error('ColumnGroupComponent should contain ColumnComponent or CommandColumnComponent.');\n }\n if (this.columnList.filter(x => x.locked && x.parent && !x.parent.isLocked).length) {\n throw new Error('Locked child columns require their parent columns to be locked.');\n }\n if ((this.rowHeight || this.detailRowHeight) && !this.isVirtual) {\n throw new Error('Row height and detail row height settings require virtual scrolling mode to be enabled.');\n }\n if (stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n throw new Error('Sticky columns feature requires all columns to have set width.');\n }\n if (stickyColumns && !this.isScrollable) {\n throw new Error('Sticky columns are only supported when scrolling is enabled.');\n }\n if (stickyColumns && this.virtualColumns) {\n throw new Error('Having both sticky columns and column virtualization is not supported.');\n }\n if (this.rowSticky && this.scrollable === 'virtual') {\n throw new Error('Having both sticky rows and row virtualization (scrollable=\"virtual\") is not supported.');\n }\n if (this.rowSticky && this.groupable) {\n throw new Error('Having both sticky rows and grouping is not supported.');\n }\n validateColumnsField(this.columnList);\n }\n }\n autoGenerateColumns() {\n if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {\n this.columns.reset(Object.keys(this.view.at(0)).map(field => {\n let column = new ColumnComponent();\n column.field = field;\n return column;\n }));\n }\n }\n attachStateChangesEmitter() {\n this.stateChangeSubscription =\n merge(this.pageChange.pipe(map(x => ({\n filter: this.filter, group: this.group, skip: x.skip, sort: this.sort, take: x.take\n }))), this.sortChange.pipe(map(sort => ({ filter: this.filter, group: this.group, skip: this.skip, sort: sort, take: this.pageSize }))), this.groupChange.pipe(map(group => ({\n filter: this.filter, group: group, skip: this.skip, sort: this.sort, take: this.pageSize\n }))), this.filterChange.pipe(map(filter => ({\n filter: filter, group: this.group, skip: 0, sort: this.sort, take: this.pageSize\n }))))\n .subscribe(x => {\n this.closeCell();\n this.cancelCell();\n this.dataStateChange.emit(x);\n });\n }\n attachEditHandlers() {\n if (!this.editService) {\n return;\n }\n this.editServiceSubscription = this.editService\n .changes.subscribe(this.emitCRUDEvent.bind(this));\n }\n emitCRUDEvent(args) {\n const { action, rowIndex, formGroup } = args;\n let dataItem = this.view.at(rowIndex - this.skip);\n if (action !== 'add' && !dataItem) {\n dataItem = formGroup.value;\n }\n this.closeCell();\n Object.assign(args, {\n dataItem: dataItem,\n sender: this\n });\n switch (action) {\n case 'add':\n this.add.emit(args);\n break;\n case 'cancel':\n this.cancel.emit(args);\n break;\n case 'edit':\n this.edit.emit(args);\n break;\n case 'remove':\n this.remove.emit(args);\n break;\n case 'save':\n this.save.emit(args);\n break;\n case 'cellClose':\n this.cellClose.emit(args);\n break;\n default: break;\n }\n }\n attachDomEventHandlers() {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n this.cellClick.emit(Object.assign({ sender: this }, args));\n });\n }\n attachElementEventHandlers() {\n if (isUniversal()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const ariaRoot = this.ariaRoot.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n const resizeCheck = this.resizeCheck.bind(this);\n const resizeSubscription = this.renderer.listen('window', 'resize', resizeCheck);\n const orientationSubscription = this.renderer.listen('window', 'orientationchange', resizeCheck);\n const documentClickSubscription = this.renderer.listen('document', 'click', (args) => {\n const activeElement = document.activeElement;\n if (this.editService.shouldCloseCell() &&\n !closest(args.target, matchesClasses('k-animation-container k-grid-ignore-click')) &&\n !(activeElement &&\n (closest(activeElement, matchesClasses('k-animation-container')) ||\n isInEditedCell(activeElement, this.wrapper.nativeElement)))) {\n this.editService.closeCell(args);\n }\n });\n const windowBlurSubscription = this.renderer.listen('window', 'blur', (args) => {\n const activeElement = document.activeElement;\n if (activeElement && !(matchesNodeName('input')(activeElement) && activeElement.type === 'file' &&\n isInEditedCell(activeElement, this.wrapper.nativeElement))) {\n this.editService.closeCell(args);\n }\n this.domEvents.windowBlur.emit(args);\n });\n const clickSubscription = this.renderer.listen(wrapper, 'click', (args) => {\n this.domEvents.click.emit(args);\n });\n const keydownSubscription = this.renderer.listen(wrapper, 'keydown', (args) => {\n this.domEvents.keydown.emit(args);\n });\n // focusIn and focusOut are relative to the element with ARIA role \"grid\"\n let focused = false;\n const focusInSubscription = this.renderer.listen(ariaRoot, 'focusin', (args) => {\n this.domEvents.focus.emit(args);\n if (!focused) {\n this.domEvents.focusIn.emit(args);\n focused = true;\n }\n });\n const focusOutSubscription = this.renderer.listen(ariaRoot, 'focusout', (args) => {\n const next = args.relatedTarget || document.activeElement;\n const outside = !closest(next, (node) => node === ariaRoot);\n if (outside) {\n this.domEvents.focusOut.emit(args);\n focused = false;\n }\n });\n this.detachElementEventHandlers = () => {\n resizeSubscription();\n orientationSubscription();\n documentClickSubscription();\n windowBlurSubscription();\n clickSubscription();\n keydownSubscription();\n focusInSubscription();\n focusOutSubscription();\n };\n });\n }\n matchesMedia(c) {\n return this.responsiveService.matchesMedia(c.media);\n }\n resizeCheck() {\n if (window.innerWidth !== this.cachedWindowWidth) {\n this.cachedWindowWidth = window.innerWidth;\n let hasChanges = false;\n this.columnList.filterHierarchy(column => {\n const matchesMedia = this.matchesMedia(column);\n if (column.matchesMedia !== matchesMedia) {\n hasChanges = true;\n column.matchesMedia = matchesMedia;\n }\n return column.isVisible;\n });\n if (hasChanges) {\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n }\n emitPDFExportEvent() {\n const args = new PDFExportEvent();\n this.pdfExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.saveAsPDF();\n }\n }\n syncHeaderHeight(observable) {\n return observable\n .pipe(filter(() => isPresent(this.lockedHeader)))\n .subscribe(() => syncRowsHeight(this.lockedHeader.nativeElement.children[0], this.header.nativeElement.children[0]));\n }\n columnsContainerChange() {\n this.columnsContainerChangeSubscription =\n this.syncHeaderHeight(this.columnsContainer.changes.pipe(filter(() => this.lockedColumns.length > 0), switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1)))));\n }\n handleColumnResize() {\n const resizes = this.columnResizingService.changes;\n this.columnResizingSubscription = resizes.pipe(tap(e => {\n if (e.type === 'start') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n }\n else if (e.type === 'end') {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n }\n }), filter(e => e.type === 'start'), switchMap(() => resizes.pipe(\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(resizes.pipe(filter(e => e.type === 'triggerAutoFit'))), filter(e => e.type === 'end'))))\n .subscribe(this.notifyResize.bind(this));\n }\n notifyResize(e) {\n const args = e.resizedColumns\n .filter(item => isTruthy(item.column.resizable) && !item.column.isColumnGroup)\n .map(item => ({\n column: item.column,\n newWidth: item.column.width,\n oldWidth: item.oldWidth\n }));\n this.columnResize.emit(args);\n }\n assertNavigable() {\n if (isDevMode() && !this.navigationService.enabled) {\n throw new Error('The Grid should be configured as navigable to control focus');\n }\n }\n navigationMetadata() {\n const isVirtual = this.isVirtual;\n const pageSize = this.pageSize;\n const dataRows = isVirtual ? this.view.total : pageSize;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRows = this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;\n return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer);\n }\n updateNavigationMetadata() {\n this.navigationService.metadata = this.navigationMetadata();\n }\n applyAutoSize() {\n const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);\n if (cols.length > 0) {\n this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.autoFitColumns(cols));\n }\n }\n onColumnRangeChange(range) {\n const viewportColumns = this.viewportColumns = [];\n const leafViewportColumns = this.columnsContainer\n .nonLockedLeafColumns.toArray().slice(range.start, range.end + 1);\n for (let idx = 0; idx < leafViewportColumns.length; idx++) {\n let column = leafViewportColumns[idx];\n while (column.parent) {\n column = column.parent;\n }\n const toAdd = [column];\n while (toAdd.length) {\n column = toAdd.shift();\n viewportColumns.push(column);\n if (column.isColumnGroup) {\n toAdd.unshift.apply(toAdd, column.childrenArray);\n }\n }\n const lastFromGroup = viewportColumns[viewportColumns.length - 1];\n column = leafViewportColumns[idx];\n while (column !== lastFromGroup && idx < leafViewportColumns.length) {\n idx++;\n column = leafViewportColumns[idx];\n }\n }\n if (range.start > 0) {\n const first = leafViewportColumns[0];\n let offset = range.offset;\n let current = viewportColumns[0];\n let index = 0;\n while (current !== first) {\n offset -= current.isColumnGroup ? 0 : current.width;\n index++;\n current = viewportColumns[index];\n }\n if (offset > 0) {\n const totalLevels = this.columnsContainer.totalLevels;\n let previous;\n for (let idx = 0; idx <= totalLevels; idx++) {\n const offsetColumn = idx < totalLevels ? new ColumnGroupComponent(previous) : new ColumnBase(previous);\n previous = offsetColumn;\n offsetColumn.title = \"\\u00A0\";\n offsetColumn.width = offset;\n viewportColumns.unshift(offsetColumn);\n }\n }\n }\n this.leafViewportColumns = viewportColumns.filter(c => !c.isColumnGroup);\n }\n toggleDetailRowLegacy(index, expand) {\n const hasCallback = typeof this.isDetailExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error('The expandRow and collapseRow methods should not be called when using the ' +\n 'kendoGridDetailsExpandBy directive or the isDetailExpanded callback. ' +\n 'These methods are provided only for backwards compatibility with legacy versions.');\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.detailsService.isExpanded(index, null) !== expand) {\n this.detailsService.toggleRow(index, null);\n }\n }\n toggleGroupRowLegacy(index, expand) {\n const hasCallback = typeof this.isGroupExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error('The expandGroup and collapseGroup methods should not be called when using the ' +\n 'kendoGridExpandGroupBy directive or the isGroupExpanded callback. ' +\n 'These methods are provided only for backwards compatibility with legacy versions.');\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.groupsService.isExpanded({ groupIndex: index }) !== expand) {\n this.groupsService.toggleRow({ index });\n }\n }\n shouldResetSelection(selectableChanges) {\n const previousValue = selectableChanges.previousValue;\n if (!previousValue) {\n // Selection was disabled, no need to reset.\n return false;\n }\n const currentValue = selectableChanges.currentValue;\n if (!currentValue || currentValue.enabled === false) {\n // Selection disabled, reset.\n return true;\n }\n return previousValue.cell !== currentValue.cell;\n }\n}\nGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridComponent, deps: [{ token: BrowserSupportService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });\nGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridComponent, selector: \"kendo-grid\", inputs: { data: \"data\", pageSize: \"pageSize\", height: \"height\", rowHeight: \"rowHeight\", detailRowHeight: \"detailRowHeight\", skip: \"skip\", scrollable: \"scrollable\", selectable: \"selectable\", sort: \"sort\", trackBy: \"trackBy\", filter: \"filter\", group: \"group\", virtualColumns: \"virtualColumns\", filterable: \"filterable\", sortable: \"sortable\", pageable: \"pageable\", groupable: \"groupable\", navigable: \"navigable\", navigatable: \"navigatable\", autoSize: \"autoSize\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", rowSelected: \"rowSelected\", cellSelected: \"cellSelected\", resizable: \"resizable\", reorderable: \"reorderable\", loading: \"loading\", columnMenu: \"columnMenu\", hideHeader: \"hideHeader\", isDetailExpanded: \"isDetailExpanded\", isGroupExpanded: \"isGroupExpanded\" }, outputs: { filterChange: \"filterChange\", pageChange: \"pageChange\", groupChange: \"groupChange\", sortChange: \"sortChange\", selectionChange: \"selectionChange\", dataStateChange: \"dataStateChange\", groupExpand: \"groupExpand\", groupCollapse: \"groupCollapse\", detailExpand: \"detailExpand\", detailCollapse: \"detailCollapse\", edit: \"edit\", cancel: \"cancel\", save: \"save\", remove: \"remove\", add: \"add\", cellClose: \"cellClose\", cellClick: \"cellClick\", pdfExport: \"pdfExport\", excelExport: \"excelExport\", columnResize: \"columnResize\", columnReorder: \"columnReorder\", columnVisibilityChange: \"columnVisibilityChange\", columnLockedChange: \"columnLockedChange\", columnStickyChange: \"columnStickyChange\", scrollBottom: \"scrollBottom\", contentScroll: \"contentScroll\" }, host: { properties: { \"attr.dir\": \"this.dir\", \"class.k-grid\": \"this.hostClasses\", \"class.k-grid-lockedcolumns\": \"this.lockedClasses\", \"class.k-grid-virtual\": \"this.virtualClasses\", \"class.k-grid-no-scrollbar\": \"this.noScrollbarClass\" } }, providers: [\n BrowserSupportService,\n LocalizationService,\n ColumnInfoService,\n SelectionService,\n CellSelectionService,\n DetailsService,\n GroupsService,\n GroupInfoService,\n ChangeNotificationService,\n EditService,\n PDFService,\n SuspendService,\n {\n provide: CELL_CONTEXT,\n useValue: EMPTY_CELL_CONTEXT\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.grid'\n },\n FilterService,\n ResponsiveService,\n PagerContextService,\n ExcelService,\n ScrollSyncService,\n ResizeService,\n LocalDataChangesService,\n DomEventsService,\n ColumnResizingService,\n SinglePopupService,\n DragAndDropService,\n DragHintService,\n DropCueService,\n ColumnReorderService,\n NavigationService,\n FocusRoot,\n IdService,\n ScrollRequestService,\n SortService,\n ContextService\n ], queries: [{ propertyName: \"columns\", predicate: ColumnBase }, { propertyName: \"detailTemplateChildren\", predicate: DetailTemplateDirective }, { propertyName: \"cellLoadingTemplateChildren\", predicate: CellLoadingTemplateDirective }, { propertyName: \"loadingTemplateChildren\", predicate: LoadingTemplateDirective }, { propertyName: \"noRecordsTemplateChildren\", predicate: NoRecordsTemplateDirective }, { propertyName: \"pagerTemplateChildren\", predicate: PagerTemplateDirective }, { propertyName: \"toolbarTemplateChildren\", predicate: ToolbarTemplateDirective }, { propertyName: \"columnMenuTemplates\", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: \"lockedHeader\", first: true, predicate: [\"lockedHeader\"], descendants: true }, { propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"ariaRoot\", first: true, predicate: [\"ariaRoot\"], descendants: true, static: true }, { propertyName: \"footer\", predicate: [\"footer\"], descendants: true }], exportAs: [\"kendoGrid\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n
    \n
    0\"\n [lockedWidth]=\"lockedWidth + scrollbarWidth + 2\">\n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n `, isInline: true, components: [{ type: ToolbarComponent, selector: \"kendo-grid-toolbar\", inputs: [\"position\"] }, { type: PagerComponent, selector: \"kendo-pager\", inputs: [\"total\", \"skip\", \"pageSize\", \"options\", \"template\"], outputs: [\"pageChange\"] }, { type: GroupPanelComponent, selector: \"kendo-grid-group-panel\", inputs: [\"text\", \"groups\"], outputs: [\"change\"] }, { type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: [\"columns\", \"groups\", \"detailTemplate\"] }, { type: HeaderComponent, selector: \"[kendoGridHeader]\", inputs: [\"totalColumnLevels\", \"columns\", \"groups\", \"detailTemplate\", \"scrollable\", \"filterable\", \"sort\", \"filter\", \"sortable\", \"groupable\", \"lockedColumnsCount\", \"resizable\", \"reorderable\", \"columnMenu\", \"columnMenuTemplate\", \"totalColumnsCount\", \"tabIndex\"] }, { type: ListComponent, selector: \"kendo-grid-list\", inputs: [\"data\", \"groups\", \"total\", \"rowHeight\", \"stickyRowHeight\", \"detailRowHeight\", \"take\", \"skip\", \"columns\", \"detailTemplate\", \"noRecordsTemplate\", \"selectable\", \"groupable\", \"filterable\", \"rowClass\", \"rowSticky\", \"loading\", \"trackBy\", \"virtualColumns\", \"isVirtual\", \"cellLoadingTemplate\", \"loadingTemplate\"], outputs: [\"contentScroll\", \"pageChange\", \"scrollBottom\"] }, { type: FooterComponent, selector: \"[kendoGridFooter]\", inputs: [\"columns\", \"groups\", \"detailTemplate\", \"scrollable\", \"lockedColumnsCount\", \"logicalRowIndex\"] }, { type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: [\"columns\", \"allColumns\", \"groups\", \"detailTemplate\", \"noRecordsTemplate\", \"data\", \"skip\", \"selectable\", \"filterable\", \"noRecordsText\", \"isLocked\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\", \"skipGroupDecoration\", \"showGroupFooters\", \"lockedColumnsCount\", \"totalColumnsCount\", \"virtualColumns\", \"trackBy\", \"rowSticky\", \"rowClass\"] }, { type: LoadingComponent, selector: \"[kendoGridLoading]\", inputs: [\"loadingTemplate\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoGridLocalizedMessages]\" }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TableDirective, selector: \"table\", inputs: [\"locked\", \"virtualColumns\"] }, { type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: [\"lockedWidth\", \"kendoGridResizableContainer\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: GridMarqueeDirective, selector: \"[kendoGridSelectionMarquee]\" }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n exportAs: 'kendoGrid',\n providers: [\n BrowserSupportService,\n LocalizationService,\n ColumnInfoService,\n SelectionService,\n CellSelectionService,\n DetailsService,\n GroupsService,\n GroupInfoService,\n ChangeNotificationService,\n EditService,\n PDFService,\n SuspendService,\n {\n provide: CELL_CONTEXT,\n useValue: EMPTY_CELL_CONTEXT\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.grid'\n },\n FilterService,\n ResponsiveService,\n PagerContextService,\n ExcelService,\n ScrollSyncService,\n ResizeService,\n LocalDataChangesService,\n DomEventsService,\n ColumnResizingService,\n SinglePopupService,\n DragAndDropService,\n DragHintService,\n DropCueService,\n ColumnReorderService,\n NavigationService,\n FocusRoot,\n IdService,\n ScrollRequestService,\n SortService,\n ContextService\n ],\n selector: 'kendo-grid',\n template: `\n \n \n \n \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n
    \n
    0\"\n [lockedWidth]=\"lockedWidth + scrollbarWidth + 2\">\n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ContextService }]; }, propDecorators: { data: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], height: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], skip: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], sort: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], filter: [{\n type: Input\n }], group: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], filterable: [{\n type: Input\n }], sortable: [{\n type: Input\n }], pageable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], navigable: [{\n type: Input\n }], navigatable: [{\n type: Input\n }], autoSize: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], rowSelected: [{\n type: Input\n }], cellSelected: [{\n type: Input\n }], resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], loading: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], hideHeader: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], groupChange: [{\n type: Output\n }], sortChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], dataStateChange: [{\n type: Output\n }], groupExpand: [{\n type: Output\n }], groupCollapse: [{\n type: Output\n }], detailExpand: [{\n type: Output\n }], detailCollapse: [{\n type: Output\n }], edit: [{\n type: Output\n }], cancel: [{\n type: Output\n }], save: [{\n type: Output\n }], remove: [{\n type: Output\n }], add: [{\n type: Output\n }], cellClose: [{\n type: Output\n }], cellClick: [{\n type: Output\n }], pdfExport: [{\n type: Output\n }], excelExport: [{\n type: Output\n }], columnResize: [{\n type: Output\n }], columnReorder: [{\n type: Output\n }], columnVisibilityChange: [{\n type: Output\n }], columnLockedChange: [{\n type: Output\n }], columnStickyChange: [{\n type: Output\n }], scrollBottom: [{\n type: Output\n }], contentScroll: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase]\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-grid']\n }], lockedClasses: [{\n type: HostBinding,\n args: ['class.k-grid-lockedcolumns']\n }], virtualClasses: [{\n type: HostBinding,\n args: ['class.k-grid-virtual']\n }], noScrollbarClass: [{\n type: HostBinding,\n args: ['class.k-grid-no-scrollbar']\n }], detailTemplateChildren: [{\n type: ContentChildren,\n args: [DetailTemplateDirective]\n }], cellLoadingTemplateChildren: [{\n type: ContentChildren,\n args: [CellLoadingTemplateDirective]\n }], loadingTemplateChildren: [{\n type: ContentChildren,\n args: [LoadingTemplateDirective]\n }], noRecordsTemplateChildren: [{\n type: ContentChildren,\n args: [NoRecordsTemplateDirective]\n }], pagerTemplateChildren: [{\n type: ContentChildren,\n args: [PagerTemplateDirective]\n }], toolbarTemplateChildren: [{\n type: ContentChildren,\n args: [ToolbarTemplateDirective]\n }], columnMenuTemplates: [{\n type: ContentChildren,\n args: [ColumnMenuTemplateDirective]\n }], lockedHeader: [{\n type: ViewChild,\n args: ['lockedHeader', { static: false }]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], footer: [{\n type: ViewChildren,\n args: ['footer']\n }], ariaRoot: [{\n type: ViewChild,\n args: ['ariaRoot', { static: true }]\n }], isDetailExpanded: [{\n type: Input\n }], isGroupExpanded: [{\n type: Input\n }] } });\n\n/**\n * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),\n * [sorting]({% slug sorting_grid %}), and [grouping]({% slug groupingbasics_grid %})\n * ([more information and examples]({% slug automaticoperations_grid %})).\n */\nclass DataBindingDirective {\n constructor(grid, changeDetector, localDataChangesService) {\n this.grid = grid;\n this.changeDetector = changeDetector;\n this.localDataChangesService = localDataChangesService;\n this.state = {\n skip: 0\n };\n this.originalData = [];\n if (localDataChangesService) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(this.rebind.bind(this));\n }\n }\n /**\n * Defines the number of records that will be skipped by the pager.\n */\n set skip(value) {\n if (!isPresent(value)) {\n value = 0;\n }\n this.grid.skip = this.state.skip = value;\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n this.grid.sort = this.state.sort = value;\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n this.grid.filter = this.state.filter = value;\n }\n /**\n * Defines the page size used by the Grid pager.\n */\n set pageSize(value) {\n this.grid.pageSize = this.state.take = value;\n }\n /**\n * The descriptors by which the data will be grouped.\n */\n set group(value) {\n this.grid.group = this.state.group = value;\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set data(value) {\n this.originalData = value || [];\n if (this.localDataChangesService) {\n this.localDataChangesService.data = value;\n }\n this.dataChanged = true;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.applyState(this.state);\n this.stateChangeSubscription = this.grid\n .dataStateChange\n .subscribe(this.onStateChange.bind(this));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\", \"filter\"], changes)) {\n this.rebind();\n }\n }\n ngDoCheck() {\n if (this.dataChanged) {\n this.updateGridData();\n }\n }\n /**\n * @hidden\n */\n onStateChange(state) {\n this.applyState(state);\n this.rebind();\n }\n /**\n * @hidden\n */\n rebind() {\n this.data = this.originalData;\n this.updateGridData();\n this.notifyDataChange();\n }\n /**\n * Notifies the Grid that its data has changed.\n */\n notifyDataChange() {\n this.grid.onDataChange();\n if (this.changeDetector) {\n this.changeDetector.markForCheck();\n }\n }\n process(state) {\n return process(this.originalData, state);\n }\n applyState({ skip, take, sort, group, filter }) {\n this.skip = skip;\n this.pageSize = take;\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n updateGridData() {\n this.grid.data = this.process(this.state);\n this.dataChanged = false;\n }\n}\nDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DataBindingDirective, selector: \"[kendoGridBinding]\", inputs: { skip: \"skip\", sort: \"sort\", filter: \"filter\", pageSize: \"pageSize\", group: \"group\", data: [\"kendoGridBinding\", \"data\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridBinding]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { skip: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], group: [{\n type: Input\n }], data: [{\n type: Input,\n args: [\"kendoGridBinding\"]\n }] } });\n\n/**\n * A directive which stores the row selection state of the Grid in memory\n * ([see example]({% slug selection_grid %}#toc-during-data-operations)).\n */\nclass SelectionDirective extends Selection {\n constructor(ctx, cd) {\n super(ctx, cd);\n this.ctx = ctx;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.ctx.grid.selectable === false) {\n this.ctx.grid.selectable = true;\n }\n this.ctx.grid.selectionDirective = this;\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n super.destroy();\n }\n}\nSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionDirective, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectionDirective, selector: \"[kendoGridSelectBy]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectBy]'\n }]\n }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * A directive which controls the expanded state of the master detail rows.\n */\nclass ExpandDetailsDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedDetailKeys are changed.\n */\n this.expandedDetailKeysChange = new EventEmitter();\n /**\n * Defines the collection that will store the expanded keys.\n */\n this.expandedDetailKeys = [];\n /**\n * Specifies if the items should be initially expanded.\n * When set to `true` items added to the `expandedDetailKeys` collection will be collapsed, and items that are not present in it will be expanded.\n *\n * @default false\n */\n this.initiallyExpanded = false;\n this.expandedState = new Set();\n this.subscriptions = new Subscription();\n this.grid.isDetailExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.detailExpand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.grid.detailCollapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item key that will be stored in the `expandedDetailKeys` collection ([see example]({% slug master_detail_expanded_state_grid %}#toc-built-in-directive)).\n */\n get expandDetailsKey() {\n return this._expandBy;\n }\n set expandDetailsKey(key) {\n if (isString(key)) {\n this._expandBy = getter(key);\n }\n else {\n this._expandBy = key;\n }\n }\n /**\n *\n * @hidden\n * A deprecated alias for setting the `expandDetailsKey` property.\n */\n get expandDetailBy() {\n return this.expandDetailsKey;\n }\n set expandDetailBy(key) {\n this.expandDetailsKey = key;\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes.expandedDetailKeys) && this.lastExpandedState !== this.expandedDetailKeys) {\n this.expandedState = new Set(this.expandedDetailKeys);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this._expandBy || getter(undefined);\n }\n /**\n * @hidden\n */\n isExpanded(args) {\n const key = this.keyGetter(args.dataItem);\n const hasKey = this.expandedState.has(key);\n // when [initiallyExpanded]=\"true\" a present key means the corresponding detail row is collapsed\n return this.initiallyExpanded ? !hasKey : hasKey;\n }\n toggleState(args) {\n const key = this.keyGetter(args.dataItem);\n if (Boolean(this.initiallyExpanded) !== args.expand) {\n this.expandedState.add(key);\n }\n else {\n this.expandedState.delete(key);\n }\n this.notifyChange();\n }\n notifyChange() {\n this.lastExpandedState = Array.from(this.expandedState);\n this.expandedDetailKeysChange.emit(this.lastExpandedState);\n }\n}\nExpandDetailsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDetailsDirective, deps: [{ token: GridComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandDetailsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandDetailsDirective, selector: \"[kendoGridExpandDetailsBy]\", inputs: { expandDetailsKey: [\"kendoGridExpandDetailsBy\", \"expandDetailsKey\"], expandDetailBy: \"expandDetailBy\", expandedDetailKeys: \"expandedDetailKeys\", initiallyExpanded: \"initiallyExpanded\" }, outputs: { expandedDetailKeysChange: \"expandedDetailKeysChange\" }, exportAs: [\"kendoGridExpandDetailsBy\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDetailsDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandDetailsBy]',\n exportAs: 'kendoGridExpandDetailsBy'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }]; }, propDecorators: { expandedDetailKeysChange: [{\n type: Output\n }], expandDetailsKey: [{\n type: Input,\n args: ['kendoGridExpandDetailsBy']\n }], expandDetailBy: [{\n type: Input\n }], expandedDetailKeys: [{\n type: Input\n }], initiallyExpanded: [{\n type: Input\n }] } });\n\nconst mapParentGroup = (parentGroup) => {\n const parentGroupKeys = [];\n while (parentGroup) {\n parentGroupKeys.push({ field: parentGroup.group.field, value: parentGroup.group.value });\n parentGroup = parentGroup.parentGroup;\n }\n return parentGroupKeys;\n};\nconst DEFAULT_KEY_GETTER = (groupRowArgs) => ({\n field: groupRowArgs.group.field,\n value: groupRowArgs.group.value,\n parentGroupKeys: mapParentGroup(groupRowArgs.parentGroup)\n});\n/**\n * A directive which controls the expanded state of the group rows\n * ([see example]({% slug groups_expanded_state_grid %}#toc-built-in-directive)).\n */\nclass ExpandGroupDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedGroupKeys are changed.\n */\n this.expandedGroupKeysChange = new EventEmitter();\n /**\n * Specifies if the group items should be initially expanded.\n * @default false\n */\n this.groupsInitiallyExpanded = false;\n this.subscriptions = new Subscription();\n this.grid.isGroupExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.groupExpand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.grid.groupCollapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item format that will be stored in the `expandedGroupKeys`\n * ([see example]({% slug groups_expanded_state_grid %}#toc-custom-group-key-format)).\n */\n get expandGroupBy() {\n return this._expandGroupBy;\n }\n set expandGroupBy(key) {\n if (typeof key === 'function') {\n this._expandGroupBy = key;\n }\n }\n /**\n * Defines the collection that will store the expanded group keys.\n */\n get expandedGroupKeys() {\n return this._expandedGroupKeys;\n }\n set expandedGroupKeys(expandedGroups) {\n this._expandedGroupKeys = (expandedGroups || []).slice();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this.expandGroupBy || DEFAULT_KEY_GETTER;\n }\n /**\n * @hidden\n */\n isExpanded(groupArgs) {\n const itemIndex = this.getItemIndex(groupArgs);\n return itemIndex > -1 ? !this.groupsInitiallyExpanded : this.groupsInitiallyExpanded;\n }\n getItemIndex(groupArgs) {\n if (this.expandGroupBy) {\n return this.expandedGroupKeys.indexOf(this.keyGetter(groupArgs));\n }\n return this.expandedGroupKeys.findIndex(item => {\n let index = 0;\n let parentGroup = groupArgs.parentGroup;\n while (isPresent(parentGroup)) {\n if (!isPresent(item.parentGroupKeys) || !isPresent(item.parentGroupKeys[index]) ||\n parentGroup.group.value !== item.parentGroupKeys[index].value ||\n parentGroup.group.field !== item.parentGroupKeys[index].field) {\n return false;\n }\n parentGroup = parentGroup.parentGroup;\n index++;\n }\n return item.value === groupArgs.group.value && item.field === groupArgs.group.field;\n });\n }\n toggleState(groupArgs) {\n const key = this.keyGetter(groupArgs);\n if (Boolean(this.groupsInitiallyExpanded) !== groupArgs.expand) {\n this.expandedGroupKeys.push(key);\n }\n else {\n const index = this.expandedGroupKeys.indexOf(key);\n this.expandedGroupKeys.splice(index, 1);\n }\n this.expandedGroupKeysChange.emit(this.expandedGroupKeys.slice());\n }\n}\nExpandGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandGroupDirective, deps: [{ token: GridComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandGroupDirective, selector: \"[kendoGridExpandGroupBy]\", inputs: { expandGroupBy: [\"kendoGridExpandGroupBy\", \"expandGroupBy\"], expandedGroupKeys: \"expandedGroupKeys\", groupsInitiallyExpanded: \"groupsInitiallyExpanded\" }, outputs: { expandedGroupKeysChange: \"expandedGroupKeysChange\" }, exportAs: [\"kendoGridExpandGroupBy\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandGroupBy]',\n exportAs: 'kendoGridExpandGroupBy'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }]; }, propDecorators: { expandedGroupKeysChange: [{\n type: Output\n }], expandGroupBy: [{\n type: Input,\n args: ['kendoGridExpandGroupBy']\n }], expandedGroupKeys: [{\n type: Input\n }], groupsInitiallyExpanded: [{\n type: Input\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_grid %}#toc-localization)).\n */\nclass CustomMessagesComponent extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-grid-messages\", providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-grid-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n// eslint-disable no-access-missing-member\nconst stringOperators = localizeOperators({\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * @hidden\n */\nclass AutoCompleteFilterCellComponent extends BaseFilterCellComponent {\n constructor(filterService, column, localization) {\n super(filterService);\n this.localization = localization;\n this.showOperators = true;\n this.defaultOperators = stringOperators(this.localization);\n this.column = column;\n }\n set valueField(value) {\n this._valueField = value;\n }\n get valueField() {\n return this._valueField ? this._valueField : this.column.field;\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : \"contains\";\n }\n}\nAutoCompleteFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteFilterCellComponent, deps: [{ token: FilterService }, { token: ColumnComponent }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAutoCompleteFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AutoCompleteFilterCellComponent, selector: \"kendo-grid-autocomplete-filter-cell\", inputs: { showOperators: \"showOperators\", column: \"column\", filter: \"filter\", data: \"data\", valueField: \"valueField\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i1$4.AutoCompleteComponent, selector: \"kendo-autocomplete\", inputs: [\"highlightFirst\", \"focusableId\", \"data\", \"value\", \"valueField\", \"placeholder\", \"popupSettings\", \"listHeight\", \"loading\", \"clearButton\", \"suggest\", \"disabled\", \"itemDisabled\", \"readonly\", \"tabindex\", \"tabIndex\", \"filterable\", \"virtual\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"filterChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoAutoComplete\"] }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-autocomplete-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: ColumnComponent }, { type: i1.LocalizationService }]; }, propDecorators: { showOperators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], data: [{\n type: Input\n }], valueField: [{\n type: Input\n }] } });\n\nconst exportedModules$5 = [\n ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent\n];\n/**\n * @hidden\n */\nclass SharedModule {\n static exports() {\n return [\n ColumnComponent,\n SpanColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n DetailTemplateDirective,\n FocusableDirective\n ];\n }\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent], imports: [CommonModule], exports: [ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent, DraggableModule, EventsModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], DraggableModule, EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$5],\n exports: [exportedModules$5, DraggableModule, EventsModule],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the `Contains` (**Contains**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass ContainsFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"contains\", localization); }\n}\nContainsFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContainsFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContainsFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContainsFilterOperatorComponent, selector: \"kendo-filter-contains-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContainsFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-contains-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `DoesNotContain` (**Does not contain**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass DoesNotContainFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"doesnotcontain\", localization); }\n}\nDoesNotContainFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DoesNotContainFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDoesNotContainFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DoesNotContainFilterOperatorComponent, selector: \"kendo-filter-not-contains-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DoesNotContainFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-not-contains-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `EndsWith` (**Ends with**) string filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass EndsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"endswith\", localization); }\n}\nEndsWithFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndsWithFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nEndsWithFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EndsWithFilterOperatorComponent, selector: \"kendo-filter-endswith-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndsWithFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-endswith-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `Equal` (**Is equal to**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass EqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"eq\", localization); }\n}\nEqualFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EqualFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nEqualFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EqualFilterOperatorComponent, selector: \"kendo-filter-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EqualFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsEmpty` (**Is empty**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isempty\", localization); }\n}\nIsEmptyFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsEmptyFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsEmptyFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsEmptyFilterOperatorComponent, selector: \"kendo-filter-isempty-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsEmptyFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isempty-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNotEmpty` (**Is not empty**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotempty\", localization); }\n}\nIsNotEmptyFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotEmptyFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNotEmptyFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNotEmptyFilterOperatorComponent, selector: \"kendo-filter-isnotempty-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotEmptyFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnotempty-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNotNull` (**Is not null**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNotNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotnull\", localization); }\n}\nIsNotNullFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotNullFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNotNullFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNotNullFilterOperatorComponent, selector: \"kendo-filter-isnotnull-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotNullFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnotnull-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNull` (**Is null**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnull\", localization); }\n}\nIsNullFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNullFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNullFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNullFilterOperatorComponent, selector: \"kendo-filter-isnull-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNullFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnull-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `NotEqual` (**Is not equal to**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass NotEqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"neq\", localization); }\n}\nNotEqualFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotEqualFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNotEqualFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotEqualFilterOperatorComponent, selector: \"kendo-filter-neq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotEqualFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-neq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `StartsWith` (**Starts with**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass StartsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"startswith\", localization); }\n}\nStartsWithFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StartsWithFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStartsWithFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StartsWithFilterOperatorComponent, selector: \"kendo-filter-startswith-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StartsWithFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-startswith-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Greater` (**Is greater than**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass GreaterFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gt\", localization); }\n}\nGreaterFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGreaterFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GreaterFilterOperatorComponent, selector: \"kendo-filter-gt-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-gt-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `GreaterOrEqualTo` (**Is greater than or equal to**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gte\", localization); }\n}\nGreaterOrEqualToFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterOrEqualToFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGreaterOrEqualToFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GreaterOrEqualToFilterOperatorComponent, selector: \"kendo-filter-gte-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterOrEqualToFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-gte-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Less` (**Is less than**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass LessFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lt\", localization); }\n}\nLessFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLessFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LessFilterOperatorComponent, selector: \"kendo-filter-lt-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-lt-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `LessOrEqualTo` (**Is less than or equal to**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lte\", localization); }\n}\nLessOrEqualToFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessOrEqualToFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLessOrEqualToFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LessOrEqualToFilterOperatorComponent, selector: \"kendo-filter-lte-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessOrEqualToFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-lte-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Greater` (**Is after**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass AfterFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"after\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gt\"\n };\n }\n}\nAfterFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAfterFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AfterFilterOperatorComponent, selector: \"kendo-filter-after-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-after-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `GreaterOrEqualTo` (**Is after or equal to**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass AfterEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"after-eq\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gte\"\n };\n }\n}\nAfterEqFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterEqFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAfterEqFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AfterEqFilterOperatorComponent, selector: \"kendo-filter-after-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterEqFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-after-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `LessOrEqualTo` (**Is before or equal to**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass BeforeEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"before-eq\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lte\"\n };\n }\n}\nBeforeEqFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeEqFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBeforeEqFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BeforeEqFilterOperatorComponent, selector: \"kendo-filter-before-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeEqFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-before-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Less then` (**Is before**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass BeforeFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"before\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lt\"\n };\n }\n}\nBeforeFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBeforeFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BeforeFilterOperatorComponent, selector: \"kendo-filter-before-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-before-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FILTER_OPERATORS = [\n FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent\n];\nconst importedModules$4 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule\n];\nconst COMPONENTS$1 = [\n FilterInputDirective\n];\n/**\n * @hidden\n */\nclass SharedFilterModule {\n static exports() {\n return [\n ...FILTER_OPERATORS\n ];\n }\n}\nSharedFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, declarations: [FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent, FilterInputDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule], exports: [FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent, CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule, FilterInputDirective] });\nSharedFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, imports: [[...importedModules$4], CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FILTER_OPERATORS, COMPONENTS$1],\n exports: [FILTER_OPERATORS, importedModules$4, COMPONENTS$1],\n imports: [...importedModules$4]\n }]\n }] });\n\nconst INTERNAL_COMPONENTS$2 = [\n FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent\n];\nconst ENTRY_COMPONENTS$1 = [\n StringFilterCellComponent,\n NumericFilterCellComponent,\n BooleanFilterCellComponent,\n DateFilterCellComponent\n];\n/**\n * @hidden\n */\nclass RowFilterModule {\n static exports() {\n return [\n FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n FilterCellOperatorsComponent,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n DateFilterCellComponent,\n SharedFilterModule.exports()\n ];\n }\n}\nRowFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRowFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, declarations: [FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent], imports: [SharedFilterModule], exports: [FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent, SharedFilterModule] });\nRowFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, imports: [[SharedFilterModule], SharedFilterModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS$2],\n entryComponents: ENTRY_COMPONENTS$1,\n exports: [INTERNAL_COMPONENTS$2, SharedFilterModule],\n imports: [SharedFilterModule]\n }]\n }] });\n\nconst importedModules$3 = [\n CommonModule,\n InputsModule,\n LabelModule,\n DropDownsModule,\n ResizeSensorModule,\n SharedModule\n];\nconst INTERNAL_COMPONENTS$1 = [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective\n];\n/**\n * @hidden\n */\nclass PagerModule {\n static exports() {\n return [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective\n ];\n }\n}\nPagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, declarations: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective], imports: [CommonModule,\n InputsModule,\n LabelModule,\n DropDownsModule,\n ResizeSensorModule,\n SharedModule], exports: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective] });\nPagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, imports: [[...importedModules$3]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS$1],\n exports: [INTERNAL_COMPONENTS$1],\n imports: [...importedModules$3]\n }]\n }] });\n\nconst exported$1 = [\n DraggableColumnDirective,\n DropTargetDirective\n];\n/**\n * @hidden\n */\nclass DragAndDropModule {\n}\nDragAndDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragAndDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, declarations: [DraggableColumnDirective,\n DropTargetDirective], exports: [DraggableColumnDirective,\n DropTargetDirective] });\nDragAndDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exported$1],\n exports: [exported$1]\n }]\n }] });\n\nconst exportedModules$4 = [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent\n];\n/**\n * @hidden\n */\nclass GroupModule {\n static exports() {\n return [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective\n ];\n }\n}\nGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, declarations: [GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent], imports: [CommonModule, SharedModule, DragAndDropModule], exports: [GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent] });\nGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$4],\n exports: [exportedModules$4],\n imports: [CommonModule, SharedModule, DragAndDropModule]\n }]\n }] });\n\nconst INTERNAL_COMPONENTS = [\n FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective\n];\nconst ENTRY_COMPONENTS = [\n StringFilterMenuComponent,\n NumericFilterMenuComponent,\n DateFilterMenuComponent,\n BooleanFilterMenuComponent\n];\n/**\n * @hidden\n */\nclass FilterMenuModule {\n static exports() {\n return [\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n DateFilterMenuComponent,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective,\n SharedFilterModule.exports()\n ];\n }\n}\nFilterMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFilterMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, declarations: [FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective], imports: [SharedFilterModule], exports: [FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective, SharedFilterModule] });\nFilterMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, imports: [[SharedFilterModule], SharedFilterModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS],\n entryComponents: ENTRY_COMPONENTS,\n exports: [INTERNAL_COMPONENTS, SharedFilterModule],\n imports: [SharedFilterModule]\n }]\n }] });\n\n/**\n * Represents the component for selecting columns in the Grid. To enable the user to show or hide columns,\n * add the component inside a [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n * ```\n */\nclass ColumnChooserComponent {\n constructor(localization, columnInfoService, popupService, ngZone, renderer, changeDetector) {\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.popupService = popupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies if the changes in the visibility of the column will be immediately applied.\n */\n this.autoSync = false;\n /**\n * Specifies if all columns can be hidden.\n */\n this.allowHideAll = true;\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n ngOnDestroy() {\n this.close();\n }\n /**\n * @hidden\n */\n toggle(anchor, template) {\n if (!this.popupRef) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: anchor,\n content: template,\n positionMode: 'absolute',\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction }\n });\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.localization.rtl ? 'rtl' : 'ltr');\n this.ngZone.runOutsideAngular(() => this.closeClick = this.renderer.listen(\"document\", \"click\", ({ target }) => {\n if (!closest(target, node => node === this.popupRef.popupElement || node === anchor)) {\n this.close();\n }\n }));\n }\n else {\n this.close();\n }\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close();\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onChange(changed) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n close() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n this.detachClose();\n }\n detachClose() {\n if (this.closeClick) {\n this.closeClick();\n this.closeClick = null;\n }\n }\n}\nColumnChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnChooserComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i1$2.PopupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnChooserComponent, selector: \"kendo-grid-column-chooser\", inputs: { autoSync: \"autoSync\", allowHideAll: \"allowHideAll\" }, ngImport: i0, template: `\n \n \n {{ localization.get('columns') }}\n \n \n \n `, isInline: true, components: [{ type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: [\"columns\", \"autoSync\", \"allowHideAll\", \"applyText\", \"resetText\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\"], outputs: [\"reset\", \"apply\", \"columnChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnChooserComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-chooser',\n template: `\n \n \n {{ localization.get('columns') }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i1$2.PopupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }] } });\n\nconst COMPONENTS = [\n ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent\n];\n/**\n * @hidden\n */\nclass ColumnMenuModule {\n static exports() {\n return [\n ColumnChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuLockComponent,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent,\n ColumnMenuChooserComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuComponent\n ];\n }\n}\nColumnMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColumnMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, declarations: [ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent], imports: [CommonModule, FilterMenuModule], exports: [ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent] });\nColumnMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, imports: [[CommonModule, FilterMenuModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENTS],\n imports: [CommonModule, FilterMenuModule],\n exports: [COMPONENTS]\n }]\n }] });\n\nconst exportedModules$3 = [\n HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective\n];\nconst importedModules$2 = [\n CommonModule,\n GroupModule,\n RowFilterModule,\n FilterMenuModule,\n SharedModule,\n DragAndDropModule,\n ColumnMenuModule\n];\n/**\n * @hidden\n */\nclass HeaderModule {\n static exports() {\n return [\n HeaderTemplateDirective,\n SelectAllCheckboxDirective\n ];\n }\n}\nHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, declarations: [HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective], imports: [CommonModule,\n GroupModule,\n RowFilterModule,\n FilterMenuModule,\n SharedModule,\n DragAndDropModule,\n ColumnMenuModule], exports: [HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective] });\nHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, imports: [[...importedModules$2]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$3],\n exports: [exportedModules$3],\n imports: [...importedModules$2]\n }]\n }] });\n\n/**\n * Represents the checkbox for selecting columns in the Grid. If the column is\n * defined as empty, it renders a default checkbox for row selection.\n * You can also define the content of the column inside an `` tag.\n * The input requires you to include the `SelectionCheckbox` option.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `columnIndex`—The current column index.\n * - `rowIndex`—The current data row index. If inside a new item row, it will be `-1`.\n * - `dataItem`—The current data item.\n * - `column`—The current column instance.\n * - `isNew`—The state of the current item.\n *\n * For more examples, refer to:\n * - [Selecting or deselecting all items on a page]({% slug selection_grid %}#toc-select-all-feature)\n * - [Persisting the selection]({% slug selection_grid %}#toc-in-combination-with-the-select-all-feature)\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * Select row \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass CheckboxColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /*\n * @hidden\n */\n this.isCheckboxColumn = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n}\nCheckboxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckboxColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCheckboxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckboxColumnComponent, selector: \"kendo-grid-checkbox-column\", inputs: { showSelectAll: \"showSelectAll\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CheckboxColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckboxColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CheckboxColumnComponent)\n }\n ],\n selector: 'kendo-grid-checkbox-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { showSelectAll: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the `edit` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [edit]({% slug api_grid_gridcomponent %}#toc-edit) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is in the edit mode, the button with `kendoGridEditCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n */\nclass EditCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginEdit(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nEditCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nEditCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditCommandDirective, selector: \"[kendoGridEditCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-edit-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-edit-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `cancel` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass CancelCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.endEdit(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nCancelCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CancelCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCancelCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CancelCommandDirective, selector: \"[kendoGridCancelCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-cancel-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CancelCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCancelCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-cancel-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `save` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [save]({% slug api_grid_gridcomponent %}#toc-save) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass SaveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.save(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nSaveCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SaveCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSaveCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SaveCommandDirective, selector: \"[kendoGridSaveCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-save-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SaveCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSaveCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-save-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `remove` command of the Grid. You can apply this directive to any `button` element\n * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [remove event]({% slug api_grid_gridcomponent %}#toc-remove)\n * is triggered ([see example]({% slug editing_reactive_forms_grid %})).\n *\n * > When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass RemoveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.remove(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nRemoveCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RemoveCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nRemoveCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RemoveCommandDirective, selector: \"[kendoGridRemoveCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-remove-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RemoveCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridRemoveCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-remove-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the command for adding a new item to the Grid. You can apply this directive to any\n * `button` element inside a [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [add]({% slug api_grid_gridcomponent %}#toc-add) event is triggered\n * ([see example]({% slug editing_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass AddCommandDirective extends Button {\n constructor(editService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginAdd();\n }\n /**\n * @hidden\n */\n get commandClass() {\n return true;\n }\n}\nAddCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AddCommandDirective, deps: [{ token: EditService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nAddCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AddCommandDirective, selector: \"[kendoGridAddCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-add-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AddCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridAddCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-add-command']\n }] } });\n\nconst exported = [\n CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective\n];\nconst importedModules$1 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n SharedModule,\n GroupModule,\n NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule\n];\n/**\n * @hidden\n */\nclass BodyModule {\n static exports() {\n return [\n CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n NoRecordsTemplateDirective,\n EditTemplateDirective,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective\n ];\n }\n}\nBodyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, declarations: [CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n SharedModule,\n GroupModule,\n NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule], exports: [CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective] });\nBodyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, imports: [[...importedModules$1]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exported],\n exports: [exported],\n imports: [...importedModules$1]\n }]\n }] });\n\nconst exportedModules$2 = [\n FooterComponent\n];\nconst importedModules = [\n CommonModule,\n SharedModule\n];\n/**\n * @hidden\n */\nclass FooterModule {\n static exports() {\n return [];\n }\n}\nFooterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFooterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, declarations: [FooterComponent], imports: [CommonModule,\n SharedModule], exports: [FooterComponent] });\nFooterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, imports: [[...importedModules]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$2],\n exports: [exportedModules$2],\n imports: [...importedModules]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass LocalEditService {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n create(item) {\n if (this.hasLocalData && this.grid.skip) {\n this.localDataChangesService.data.splice(this.grid.skip, 0, item);\n }\n else {\n this.data.unshift(item);\n }\n this.dataChanged();\n }\n update(_item) { } // eslint-disable-line no-empty\n remove(item) {\n const data = this.data;\n for (let idx = 0; idx < data.length; idx++) {\n if (item === data[idx]) {\n data.splice(idx, 1);\n this.dataChanged({ action: 'remove', item: item });\n break;\n }\n }\n }\n assignValues(target, source) {\n Object.assign(target, source);\n }\n dataChanged(args = {}) {\n if (this.hasLocalData) {\n this.localDataChangesService.changes.emit(args);\n }\n }\n get hasLocalData() {\n return Array.isArray(this.localDataChangesService.data);\n }\n get data() {\n if (this.hasLocalData) {\n return this.localDataChangesService.data;\n }\n const data = this.grid.data;\n if (Array.isArray(data)) {\n return data;\n }\n if (isDevMode()) {\n throw new Error('The default edit service of the editing directives works only when binding to plain array.' +\n 'Please provide an editService.');\n }\n return [];\n }\n}\n\n/**\n * @hidden\n */\nclass EditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.defaultEditService = this.createDefaultService();\n }\n // Consider adding support for the dependency injection of the service to allow for specifying a generic service without code.\n // The Input should still be kept.\n /**\n * The edit service that will handle the operations.\n */\n set editService(value) {\n this.userEditService = value;\n }\n get editService() {\n return this.userEditService || this.defaultEditService;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = this.grid.add.subscribe(this.addHandler.bind(this));\n this.subscriptions.add(this.grid.remove.subscribe(this.removeHandler.bind(this)));\n this.subscriptions.add(this.grid.cancel.subscribe(this.cancelHandler.bind(this)));\n this.subscriptions.add(this.grid.save.subscribe(this.saveHandler.bind(this)));\n this.subscriptions.add(this.grid.dataStateChange.subscribe(this.onStateChange.bind(this)));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n createDefaultService() {\n return new LocalEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.grid.addRow(this.createModel({ isNew: true }));\n }\n saveHandler(args) {\n const item = this.saveModel(args);\n if (item) {\n if (args.isNew) {\n this.editService.create(item);\n }\n else {\n this.editService.update(item);\n }\n }\n this.grid.closeRow(args.rowIndex);\n }\n cancelHandler({ rowIndex }) {\n this.closeEditor(rowIndex);\n }\n removeHandler({ dataItem }) {\n const removeItem = (shouldRemove) => {\n if (shouldRemove) {\n this.editService.remove(dataItem);\n }\n };\n if (this.removeConfirmation) {\n const result = this.removeConfirmation(dataItem);\n if (result instanceof Promise) {\n result.then(removeItem);\n }\n else if (result instanceof Observable) {\n result.pipe(take(1)).subscribe(removeItem);\n }\n else {\n removeItem(result);\n }\n }\n else {\n removeItem(true);\n }\n }\n onStateChange() {\n this.closeEditor();\n }\n closeEditor(rowIndex) {\n this.grid.closeRow(rowIndex);\n }\n}\nEditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nEditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditingDirectiveBase, selector: \"[kendoGridEditingDirectiveBase]\", inputs: { editService: \"editService\", removeConfirmation: \"removeConfirmation\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditingDirectiveBase]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { editService: [{\n type: Input\n }], removeConfirmation: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalRowEditService extends LocalEditService {\n update(_item) {\n this.dataChanged();\n }\n}\n\n/**\n * @hidden\n */\nclass RowEditingDirectiveBase extends EditingDirectiveBase {\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions\n .add(this.grid.edit.subscribe(this.editHandler.bind(this)));\n }\n createDefaultService() {\n return new LocalRowEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.closeEditor();\n super.addHandler();\n }\n editHandler(args) {\n this.closeEditor();\n this.rowIndex = args.rowIndex;\n this.grid.editRow(args.rowIndex, this.createModel(args));\n }\n saveHandler(args) {\n super.saveHandler(args);\n this.clean();\n }\n closeEditor(rowIndex = this.rowIndex) {\n super.closeEditor(rowIndex);\n this.clean();\n }\n clean() {\n delete this.rowIndex;\n }\n}\nRowEditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowEditingDirectiveBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRowEditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RowEditingDirectiveBase, selector: \"[kendoGridRowEditingDirectiveBase]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowEditingDirectiveBase, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridRowEditingDirectiveBase]'\n }]\n }] });\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using\n * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-the-template-directive)).\n */\nclass TemplateEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n editHandler(args) {\n super.editHandler(args);\n this.dataItem = args.dataItem;\n this.originalValues = {};\n this.editService.assignValues(this.originalValues, this.dataItem);\n }\n closeEditor(rowIndex) {\n if (this.dataItem) {\n this.editService.assignValues(this.dataItem, this.originalValues);\n }\n super.closeEditor(rowIndex);\n }\n createModel(args) {\n if (args.isNew) {\n return this.createNewItem();\n }\n }\n saveModel(args) {\n return args.dataItem;\n }\n clean() {\n super.clean();\n delete this.dataItem;\n }\n}\nTemplateEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateEditingDirective, selector: \"[kendoGridTemplateEditing]\", inputs: { createNewItem: [\"kendoGridTemplateEditing\", \"createNewItem\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridTemplateEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { createNewItem: [{\n type: Input,\n args: ['kendoGridTemplateEditing']\n }] } });\n\n/**\n * @hidden\n */\nconst markAllAsTouched = (control) => {\n control.markAsTouched();\n if (control.hasOwnProperty('controls')) {\n let controls = control.controls;\n for (let inner in controls) {\n if (controls.hasOwnProperty(inner)) {\n markAllAsTouched(controls[inner]);\n }\n }\n }\n};\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the\n * Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-reactive-directive)).\n */\nclass ReactiveEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({ dataItem, formGroup, isNew }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n}\nReactiveEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nReactiveEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ReactiveEditingDirective, selector: \"[kendoGridReactiveEditing]\", inputs: { createFormGroup: [\"kendoGridReactiveEditing\", \"createFormGroup\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridReactiveEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { createFormGroup: [{\n type: Input,\n args: ['kendoGridReactiveEditing']\n }] } });\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the in-cell\n * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-incell-directive)).\n */\nclass InCellEditingDirective extends EditingDirectiveBase {\n constructor(grid, localDataChangesService, cdr) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.cdr = cdr;\n }\n // Need mixin\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({ dataItem, formGroup, isNew }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(this.grid.cellClick.subscribe(this.cellClickHandler.bind(this)));\n this.subscriptions.add(this.grid.cellClose.subscribe(this.cellCloseHandler.bind(this)));\n }\n removeHandler(args) {\n super.removeHandler(args);\n this.grid.cancelCell();\n }\n cellClickHandler(args) {\n if (!args.isEdited && args.type !== 'contextmenu') {\n this.grid.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args));\n this.cdr.markForCheck();\n }\n }\n cellCloseHandler(args) {\n const { formGroup, dataItem } = args;\n if (!formGroup.valid) {\n args.preventDefault();\n }\n else if (formGroup.dirty) {\n if (args.originalEvent && args.originalEvent.keyCode === Keys.Escape) {\n return;\n }\n this.editService.assignValues(dataItem, formGroup.value);\n this.editService.update(dataItem);\n }\n }\n}\nInCellEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InCellEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nInCellEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: InCellEditingDirective, selector: \"[kendoGridInCellEditing]\", inputs: { createFormGroup: [\"kendoGridInCellEditing\", \"createFormGroup\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InCellEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridInCellEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { createFormGroup: [{\n type: Input,\n args: ['kendoGridInCellEditing']\n }] } });\n\nconst hasGroups = (items) => items && items.length && items[0].field && items[0].items;\nconst groupDescriptorsPresent = (descriptors) => isPresent(descriptors) && descriptors.length > 0;\nconst processGroups = (data, state) => process(data, state).data;\nconst removeParentDescriptors = (parents, owner) => g => g.field !== owner.field && !parents.some(y => y.field === g.field);\nconst findGroup = (groupIndex, groups) => {\n const parents = [];\n return {\n group: groupIndex.split(\"_\").reduce((acc, x) => {\n const idx = parseInt(x, 10);\n if (acc.items) {\n parents.push(acc);\n return acc.items[idx];\n }\n return isArray(acc) ? acc[idx] : acc;\n }, groups),\n parents\n };\n};\nconst findChildren = (data, parents) => {\n const filters = parents.map(p => ({ field: p.field, operator: \"eq\", value: p.value }));\n return filterBy(data, {\n filters: filters,\n logic: \"and\"\n });\n};\n/**\n * @hidden\n */\nconst count = (groups, includeFooters = false) => (groups.reduce((acc, group) => {\n if (!group.skipHeader) {\n acc++;\n }\n if (group.items) {\n const children = count(group.items, includeFooters);\n if (includeFooters && children && !group.hideFooter) {\n acc++;\n }\n acc += children;\n }\n return acc;\n}, 0));\n/**\n * @hidden\n */\nconst slice = (groups, skip, take, includeFooters = false) => {\n if (!isPresent(take)) {\n return groups;\n }\n const result = [];\n for (let idx = 0, length = groups.length; idx < length; idx++) {\n if (take <= 0) {\n break;\n }\n const group = groups[idx];\n const groupItems = group.items;\n let itemCount = count(groupItems, includeFooters);\n if (includeFooters && groupItems.length) {\n itemCount++;\n }\n const skipHeader = skip > 0;\n if (skip) {\n skip--;\n if (itemCount && skip >= itemCount) {\n skip -= itemCount;\n continue;\n }\n }\n if (!skipHeader || itemCount) {\n const items = [];\n let hideFooter = true;\n if (!skipHeader) {\n take--;\n }\n if (take) {\n if (hasGroups(groupItems)) {\n const children = slice(groupItems, skip, take, includeFooters);\n items.push(...children);\n take -= count(children, includeFooters);\n }\n else {\n items.push(...groupItems.slice(skip, Math.min(skip + take, groupItems.length)));\n take -= items.length;\n }\n if (take && includeFooters) {\n hideFooter = false;\n take--;\n }\n skip = 0;\n }\n result.push({\n aggregates: group.aggregates,\n field: group.field,\n hideFooter,\n items,\n offset: idx,\n skipHeader,\n value: group.value\n });\n }\n }\n return result;\n};\nconst skippedHeaders = (groupItem) => {\n let total = 0;\n while (groupItem) {\n if (groupItem.skipHeader) {\n total++;\n }\n groupItem = groupItem.items && groupItem.items[0] || null;\n }\n return total;\n};\n/**\n * A directive which encapsulates the in-memory handling of grouping with virtual scrolling.\n */\nclass GroupBindingDirective extends DataBindingDirective {\n constructor(grid, changeDetector, localDataChangesService) {\n super(grid, changeDetector, localDataChangesService);\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set kendoGridGroupBinding(value) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.data = value;\n }\n /**\n * @hidden\n */\n set data(value) {\n this.originalData = value || [];\n this.dataChanged = true;\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n const clear = this.state.sort !== value;\n this.grid.sort = this.state.sort = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n const clear = diffFilters(this.state.filter, value);\n if (clear) {\n this.state.filter = value;\n this.grid.filter = cloneFilters(value);\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptors by which the data will be grouped.\n */\n set group(value) {\n // don't clear if no groups are present in previous and current value\n const groupsPresent = groupDescriptorsPresent(this.state.group) || groupDescriptorsPresent(value);\n const clear = this.state.group !== value && groupsPresent;\n this.grid.group = this.state.group = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.skip = 0;\n }\n }\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.grid.groupExpand.subscribe(this.groupExpand.bind(this));\n this.grid.groupCollapse.subscribe(this.groupCollapse.bind(this));\n }\n ngAfterContentInit() {\n if (isDevMode() && this.grid.isGroupExpanded) {\n throw new Error('Using the `kendoGridGroupBinding` directive in combination with the `kendoGridExpandGroupBy` directive ' +\n 'or the `isGroupExpanded` callback is not supported. To use grouping with the `kendoGridGroupBinding` directive, ' +\n 'set the Grid `groupable` property to `true`.');\n }\n }\n groupExpand({ groupIndex }) {\n this.grid.expandGroupChildren(groupIndex);\n const { group, parents } = findGroup(groupIndex, this.groups);\n if (!group.items.length) {\n const descriptors = this.state.group.filter(removeParentDescriptors(parents, group));\n const children = findChildren(this.originalData, parents.concat(group));\n group.items = processGroups(children, {\n filter: this.state.filter,\n group: descriptors,\n sort: this.state.sort\n });\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n groupCollapse({ groupIndex }) {\n const { group } = findGroup(groupIndex, this.groups);\n if (group) {\n group.items = [];\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n process(state) {\n if (state.group && state.group.length) {\n const groups = this.processGroups(state);\n this.grid.skip -= skippedHeaders(groups.data[0]);\n return groups;\n }\n else {\n this.groups = null;\n }\n return super.process(state);\n }\n processGroups(state) {\n if (!this.groups || !this.groups.length) {\n this.groups = processGroups(this.originalData, {\n filter: state.filter,\n group: state.group,\n sort: state.sort\n });\n }\n return this.dataResult(state.skip, state.take);\n }\n dataResult(skip, take) {\n const includeFooters = this.grid.showGroupFooters;\n return {\n data: slice(this.groups, skip, take, includeFooters),\n total: count(this.groups, includeFooters)\n };\n }\n applyState({ skip, take, sort, group, filter }) {\n this.skip = skip;\n this.state.take = take;\n // this.pageSize = take; // do need to update take as the process with slice correctly\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n}\nGroupBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nGroupBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupBindingDirective, selector: \"[kendoGridGroupBinding]\", inputs: { kendoGridGroupBinding: \"kendoGridGroupBinding\", sort: \"sort\", filter: \"filter\", group: \"group\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridGroupBinding]' }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { kendoGridGroupBinding: [{\n type: Input,\n args: [\"kendoGridGroupBinding\"]\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], group: [{\n type: Input\n }] } });\n\nconst exportedModules$1 = [\n GridComponent,\n ToolbarTemplateDirective,\n ToolbarComponent,\n GridSpacerComponent,\n DataBindingDirective,\n SelectionDirective,\n CustomMessagesComponent,\n GroupBindingDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n ...GroupModule.exports(),\n ...SharedModule.exports(),\n ...BodyModule.exports(),\n ...HeaderModule.exports(),\n ...FooterModule.exports(),\n ...PagerModule.exports(),\n ...RowFilterModule.exports(),\n ...FilterMenuModule.exports(),\n ...ColumnMenuModule.exports()\n];\nconst declarations$2 = [\n GridComponent,\n ListComponent,\n ToolbarComponent,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n DataBindingDirective,\n ToolbarTemplateDirective,\n SelectionDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n GroupBindingDirective,\n GridMarqueeDirective,\n GridSpacerComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Grid component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid module\n * import { GridModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule], // import Grid module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass GridModule {\n}\nGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, declarations: [GridComponent,\n ListComponent,\n ToolbarComponent,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n DataBindingDirective,\n ToolbarTemplateDirective,\n SelectionDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n GroupBindingDirective,\n GridMarqueeDirective,\n GridSpacerComponent], imports: [CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule], exports: [GridComponent,\n ToolbarTemplateDirective,\n ToolbarComponent,\n GridSpacerComponent,\n DataBindingDirective,\n SelectionDirective,\n CustomMessagesComponent,\n GroupBindingDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent] });\nGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, imports: [[\n CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$1],\n imports: [\n CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule\n ]\n }]\n }] });\n\nclass PDFMarginComponent extends PDFExportMarginComponent {\n}\nPDFMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFMarginComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPDFMarginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFMarginComponent, selector: \"kendo-grid-pdf-margin\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFMarginComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf-margin',\n template: ''\n }]\n }] });\n\n/**\n * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,\n * nest an `` tag with the `kendoGridPDFTemplate` directive inside ``.\n *\n * The template context provides the following fields:\n * - `pageNumber`—Defines PDF page number.\n * - `totalPages`—Defines the total number of PDF pages.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
    \n * Page {{ pageNum }} of {{ totalPages }}\n *
    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000\n * }\n * ];\n * }\n *\n * ```\n */\nclass PDFTemplateDirective extends PDFExportTemplateDirective {\n constructor(templateRef) {\n super(templateRef);\n }\n}\nPDFTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPDFTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFTemplateDirective, selector: \"[kendoGridPDFTemplate]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nconst HEADER_CLASS = 'k-grid-header';\n/**\n * @hidden\n */\nconst FOOTER_CLASS = 'k-grid-footer';\nconst GRID_LIST = 'KENDO-GRID-LIST';\nconst TABLE = 'TABLE';\nconst matchesList = matchesNodeName(GRID_LIST);\nconst matchesTable = matchesNodeName(TABLE);\nconst suffix = (locked) => locked ? 'locked' : 'wrap';\n/**\n * @hidden\n */\nclass GridQuery {\n constructor(element) {\n this.element = element;\n this.list = findElement(element, matchesList);\n }\n content(locked) {\n return findElement(this.list, matchesClasses(`k-grid-content${locked ? '-locked' : ''}`));\n }\n header(locked) {\n this.headerWrap = this.headerWrap || findElement(this.element, matchesClasses(HEADER_CLASS));\n return findElement(this.headerWrap, matchesClasses(`${HEADER_CLASS}-${suffix(locked)}`));\n }\n footer(locked) {\n this.footerWrap = this.footerWrap || findElement(this.element, matchesClasses(FOOTER_CLASS));\n return findElement(this.footerWrap, matchesClasses(`${FOOTER_CLASS}-${suffix(locked)}`));\n }\n table() {\n return findElement(this.element, matchesTable);\n }\n}\n\nconst FIRST_CLASS = 'k-first';\nconst INPUTS = ['input', 'select', 'textarea', 'option'];\n/** @hidden */\nconst cloneNode = (node) => {\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n if (INPUTS.indexOf(String(node.nodeName).toLowerCase()) >= 0) {\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n clone.value = node.value;\n clone.checked = node.checked;\n clone.selected = node.selected;\n }\n let child = node.firstChild;\n while (child) {\n clone.appendChild(cloneNode(child));\n child = child.nextSibling;\n }\n return clone;\n};\nconst appendNodes = (element, nodes) => {\n const length = nodes.length;\n for (let idx = 0; idx < length; idx++) {\n element.appendChild(cloneNode(nodes[idx]));\n }\n};\nconst wrapTable = (table) => {\n const wrapper = document.createElement('div');\n wrapper.className = 'k-grid';\n wrapper.appendChild(table);\n return wrapper;\n};\nconst createTableElement = (sources) => {\n const sourceCount = sources.length;\n const element = cloneNode(sources[0]);\n const rowsCount = element.rows.length;\n if (sourceCount > 1) {\n for (let rowIdx = 0; rowIdx < rowsCount; rowIdx++) {\n for (let sourceIdx = 1; sourceIdx < sourceCount; sourceIdx++) {\n appendNodes(element.rows[rowIdx], sources[sourceIdx].rows[rowIdx].cells);\n }\n }\n }\n return element;\n};\nconst setFirstCellClass = (header, headers) => {\n if (headers.length > 1 && header.rows.length > 1) {\n for (let idx = 1; idx < header.rows.length; idx++) {\n const firstCellIndex = headers[0].rows[idx].cells.length;\n const cell = header.rows[idx].cells[firstCellIndex];\n if (String(cell.className).indexOf(FIRST_CLASS) === -1) {\n cell.className += ` ${FIRST_CLASS}`;\n }\n }\n }\n};\nconst createTable = (colGroups, headers, bodies, footers) => {\n const table = document.createElement('table');\n const colGroup = colGroups[0].cloneNode(true);\n for (let idx = 1; idx < colGroups.length; idx++) {\n appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));\n }\n const header = createTableElement(headers);\n const body = createTableElement(bodies);\n header.className = HEADER_CLASS;\n setFirstCellClass(header, headers);\n table.appendChild(colGroup);\n table.appendChild(header);\n table.appendChild(body);\n if (footers.length) {\n const footer = createTableElement(footers);\n footer.className = FOOTER_CLASS;\n table.appendChild(footer);\n }\n return wrapTable(table);\n};\n/**\n * @hidden\n */\nconst exportElement = (wrapper) => {\n const query = new GridQuery(wrapper);\n const content = query.content();\n let result;\n if (content) {\n const colGroups = [content.querySelector('colgroup')];\n const headers = [query.header().querySelector('thead')];\n const bodies = [content.querySelector('tbody')];\n const footer = query.footer();\n const footers = [];\n if (footer) {\n footers.push(footer.querySelector('tfoot'));\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n colGroups.unshift(lockedContent.querySelector('colgroup'));\n headers.unshift(query.header(true).querySelector('thead'));\n bodies.unshift(lockedContent.querySelector('tbody'));\n if (footer) {\n footers.unshift(query.footer(true).querySelector('tfoot'));\n }\n }\n result = createTable(colGroups, headers, bodies, footers);\n }\n else {\n result = wrapTable(query.table().cloneNode(true));\n }\n return result;\n};\n\nconst createElement = (tagName, className) => {\n const element = document.createElement(tagName);\n if (className) {\n element.className = className;\n }\n return element;\n};\nconst createDiv = (className) => {\n return createElement('div', className);\n};\n/**\n * Configures the settings for the export of Grid in PDF ([see example]({% slug pdfexport_grid %})).\n */\nclass PDFComponent extends PDFExportComponent {\n constructor(pdfService, suspendService, ngZone, element) {\n super(element);\n this.pdfService = pdfService;\n this.suspendService = suspendService;\n this.ngZone = ngZone;\n /**\n * The delay in milliseconds before exporting the Grid content.\n * Useful for scenarios which involve exporting complex components used in the Grid\n * templates such as charts or data-bound components with asynchronous data retrieval ([see example]({% slug pdfexport_grid %}#toc-exporting-all-pages)).\n *\n * @default 0\n */\n this.delay = 0;\n this.columns = new QueryList();\n this.saveSubscription = pdfService.savePDF.subscribe(this.savePDF.bind(this));\n this.drawSubscription = pdfService.drawPDF.subscribe(this.drawPDF.bind(this));\n this.reset = this.reset.bind(this);\n this.draw = this.draw.bind(this);\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n this.drawSubscription.unsubscribe();\n this.reset();\n }\n /**\n * @hidden\n */\n saveAs(_) {\n throw new Error('Not supported. Use GridComponent.saveAsPDF');\n }\n /**\n * @hidden\n */\n export() {\n throw new Error('Not supported. Use GridComponent.drawPDF');\n }\n savePDF(component) {\n this.createPDF(component, this.draw);\n }\n drawPDF({ component, promise }) {\n this.createPDF(component, () => {\n this.createExportGroup(promise);\n });\n }\n createPDF(component, callback) {\n const pageSize = component.pageSize;\n const total = component.view.total;\n const columns = this.columns.toArray();\n if (columns.length) {\n this.originalColumns = component.columns.toArray();\n }\n this.component = component;\n this.suspendService.scroll = true;\n this.pdfService.exporting = true;\n this.initProgress();\n this.renderAllPages = this.allPages && pageSize < total;\n if (this.renderAllPages) {\n this.skip = component.skip;\n this.pageSize = pageSize;\n this.changePage(0, total, callback, columns);\n }\n else if (columns.length || component.virtualColumns) {\n this.changeColumns(columns, callback);\n }\n else {\n callback();\n }\n }\n initProgress() {\n const wrapperElement = this.component.wrapper.nativeElement;\n const progress = this.progress = createDiv('k-loading-pdf-mask');\n const overlay = cloneNode(wrapperElement);\n progress.appendChild(overlay);\n progress.appendChild(createDiv('k-loading-color'));\n progress.appendChild(createElement('span', 'k-i-loading k-icon'));\n this.originalHeight = wrapperElement.style.height;\n this.originalOverflow = wrapperElement.style.overflow;\n wrapperElement.style.height = wrapperElement.offsetHeight + 'px';\n wrapperElement.style.overflow = 'hidden';\n wrapperElement.appendChild(progress);\n this.applyScroll(overlay);\n }\n applyScroll(overlay) {\n const query = new GridQuery(this.component.wrapper.nativeElement);\n const content = query.content();\n if (content) {\n const overlayQuery = new GridQuery(overlay);\n const overlayContent = overlayQuery.content();\n overlayContent.scrollTop = content.scrollTop;\n overlayContent.scrollLeft = content.scrollLeft;\n overlayQuery.header().scrollLeft = query.header().scrollLeft;\n const footer = query.footer();\n if (footer) {\n overlayQuery.footer().scrollLeft = footer.scrollLeft;\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n const overlayLockedContent = overlayQuery.content(true);\n overlayLockedContent.scrollTop = lockedContent.scrollTop;\n overlayLockedContent.scrollLeft = lockedContent.scrollLeft;\n }\n }\n }\n draw() {\n this.createExportElement((element) => {\n this.save(element, this.fileName);\n });\n }\n createExportGroup(promise) {\n this.createExportElement((element) => {\n this.exportElement(element).then(group => promise.resolve(group));\n });\n }\n createExportElement(callback) {\n this.ngZone.runOutsideAngular(() => {\n const container = this.container = createDiv('k-grid-pdf-export-element');\n const element = exportElement(this.component.wrapper.nativeElement);\n container.appendChild(element);\n document.body.appendChild(container);\n callback(element);\n });\n }\n drawOptions() {\n const options = super.drawOptions();\n options._destructive = true;\n return options;\n }\n cleanup() {\n super.cleanup();\n this.pdfService.exporting = false;\n if (this.component) {\n const originalColumns = this.originalColumns;\n delete this.originalColumns;\n if (this.renderAllPages) {\n this.changePage(this.skip, this.pageSize, this.reset, originalColumns);\n }\n else if (originalColumns || this.component.virtualColumns) {\n this.changeColumns(originalColumns, this.reset);\n }\n else {\n this.reset();\n }\n }\n else {\n this.reset();\n }\n this.removeContainer();\n }\n removeContainer() {\n if (this.container) {\n document.body.removeChild(this.container);\n delete this.container;\n }\n }\n changePage(skip, _take, callback, columns) {\n this.ngZone.run(() => {\n this.pdfService.dataChanged.pipe(take(1)).subscribe(() => {\n if ((columns && columns.length) || this.component.virtualColumns) {\n this.changeColumns(columns, callback);\n }\n else {\n this.onStable(callback);\n }\n });\n this.component.notifyPageChange('pdf', { skip: skip, take: _take });\n });\n }\n changeColumns(columns, callback) {\n this.ngZone.run(() => {\n this.onStable(callback);\n if (columns && columns.length) {\n this.component.columns.reset(columns);\n }\n });\n }\n reset() {\n this.suspendService.scroll = false;\n this.renderAllPages = false;\n if (!this.component) {\n return;\n }\n const wrapperElement = this.component.wrapper.nativeElement;\n wrapperElement.removeChild(this.progress);\n wrapperElement.style.height = this.originalHeight;\n wrapperElement.style.overflow = this.originalOverflow;\n delete this.progress;\n delete this.component;\n }\n onStable(callback) {\n // not sure if it is an actual scenario. occurs in the tests.\n // onStable is triggered in the same pass without the change detection.\n // thus, the callback is called before the changes are applied without the timeout.\n setTimeout(() => {\n let onStable = this.ngZone.onStable.asObservable().pipe(take(1));\n if (this.delay > 0) {\n onStable = onStable.pipe(delay(this.delay));\n }\n onStable.subscribe(callback);\n }, 0);\n }\n}\nPDFComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, deps: [{ token: PDFService }, { token: SuspendService }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPDFComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFComponent, selector: \"kendo-grid-pdf\", inputs: { allPages: \"allPages\", delay: \"delay\" }, queries: [{ propertyName: \"marginComponent\", first: true, predicate: PDFMarginComponent, descendants: true }, { propertyName: \"pageTemplateDirective\", first: true, predicate: PDFTemplateDirective, descendants: true }, { propertyName: \"columns\", predicate: ColumnBase }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: SuspendService }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { allPages: [{\n type: Input\n }], delay: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase]\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFMarginComponent, { static: false }]\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the `export-to-PDF` command of the Grid.\n * You can apply this directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When the user clicks a button that is associated with the directive, the\n * [pdfExport]({% slug api_grid_gridcomponent %}#toc-pdfexport) event\n * fires ([see example]({% slug pdfexport_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass PDFCommandDirective extends Button {\n constructor(pdfService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.pdfService = pdfService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.pdfService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get pdfClass() {\n return true;\n }\n}\nPDFCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, deps: [{ token: PDFService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nPDFCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFCommandDirective, selector: \"[kendoGridPDFCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-pdf\": \"this.pdfClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFCommand]'\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], pdfClass: [{\n type: HostBinding,\n args: ['class.k-grid-pdf']\n }] } });\n\nconst exportedModules = [\n PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective\n];\nconst declarations$1 = [\n PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Grid PDF component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid and PDF modules\n * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule, PDFModule], // import Grid and PDF modules\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PDFModule {\n}\nPDFModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPDFModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, declarations: [PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective], exports: [PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective] });\nPDFModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules]\n }]\n }] });\n\n/**\n * Arguments for the `excelExport` event.\n */\nclass ExcelExportEvent extends PreventableEvent {\n constructor(workbook) {\n super();\n this.workbook = workbook;\n }\n}\n\nconst fetchComponentData = (component) => {\n return {\n data: component.view.map(item => item),\n group: component.group\n };\n};\nconst toExcelColumn = (column) => {\n return {\n title: column.title,\n field: column.field,\n locked: Boolean(column.locked),\n width: column.width,\n level: column.level,\n hidden: !column.isVisible,\n groupHeaderTemplate: column.groupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate,\n groupFooterTemplate: column.groupFooterTemplate,\n footerTemplate: column.footerTemplate\n };\n};\nconst toExcelColumns = (columns) => {\n const result = [];\n sortColumns(columns)\n .forEach((column) => {\n if (column.isSpanColumn) {\n result.push(...toExcelColumns(column.childrenArray));\n }\n else {\n const excelColumn = toExcelColumn(column);\n if (column.isColumnGroup) {\n excelColumn.children = [excelColumn].concat(toExcelColumns(column.childrenArray));\n }\n result.push(excelColumn);\n }\n });\n return result;\n};\nconst componentColumns = (component) => {\n const columns = toExcelColumns(component.columns.toArray());\n return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);\n};\n/**\n * Configures the settings for the export of Grid in Excel ([see example]({% slug excelexport_grid %})).\n */\nclass ExcelComponent {\n constructor(excelService, localization, zone) {\n this.localization = localization;\n this.zone = zone;\n /**\n * Specifies the file name of the exported Excel file.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n this.saveSubscription = excelService.saveToExcel.subscribe(this.save.bind(this));\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n }\n save(component) {\n const data = (this.fetchData || fetchComponentData)(component);\n const exportData = (result) => {\n delete this.dataSubscription;\n this.exportData(component, result);\n };\n if (data instanceof Promise) {\n data.then(exportData);\n }\n else if (data instanceof Observable) {\n this.dataSubscription = data.pipe(take(1)).subscribe(exportData);\n }\n else {\n exportData(data);\n }\n }\n exportData(component, result) {\n const options = workbookOptions({\n columns: this.columns.length ? this.columns : componentColumns(component),\n data: result.data,\n group: result.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n rtl: this.localization.rtl,\n collapsible: this.collapsible\n });\n const args = new ExcelExportEvent(options);\n component.excelExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.zone.runOutsideAngular(() => this.saveFile(options));\n }\n }\n saveFile(options) {\n toDataURL(options).then((dataURL) => {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n });\n }\n}\nExcelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelComponent, deps: [{ token: ExcelService }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nExcelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelComponent, selector: \"kendo-grid-excel\", inputs: { fileName: \"fileName\", filterable: \"filterable\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", fetchData: \"fetchData\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\", collapsible: \"collapsible\" }, queries: [{ propertyName: \"columns\", predicate: ColumnBase$1, descendants: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-excel',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ExcelService }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { fileName: [{\n type: Input\n }], filterable: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], fetchData: [{\n type: Input\n }], paddingCellOptions: [{\n type: Input\n }], headerPaddingCellOptions: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase$1, { descendants: true }]\n }] } });\n\n/**\n * Represents the `export-to-Excel` command of the Grid. You can apply this\n * directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When the user clicks a button associated with the directive, the\n * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event\n * fires ([see example]({% slug excelexport_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass ExcelCommandDirective extends Button {\n constructor(excelService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.excelService = excelService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.excelService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get excelClass() {\n return true;\n }\n}\nExcelCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelCommandDirective, deps: [{ token: ExcelService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nExcelCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelCommandDirective, selector: \"[kendoGridExcelCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-excel\": \"this.excelClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExcelCommand]'\n }]\n }], ctorParameters: function () { return [{ type: ExcelService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], excelClass: [{\n type: HostBinding,\n args: ['class.k-grid-excel']\n }] } });\n\nconst declarations = [ExcelComponent, ExcelCommandDirective];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Excel component of the Grid.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid and Excel modules\n * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule, ExcelModule], // import Grid and Excel modules\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ExcelModule {\n}\nExcelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExcelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, declarations: [ExcelComponent, ExcelCommandDirective], exports: [ExcelComponent, ExcelCommandDirective, ExcelExportModule] });\nExcelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, imports: [ExcelExportModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations, ExcelExportModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellTemplateDirective, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnLockedChangeEvent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, CustomMessagesComponent, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DoesNotContainFilterOperatorComponent, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupIndicatorComponent, GroupModule, GroupPanelComponent, HeaderComponent, HeaderModule, HeaderTemplateDirective, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SharedFilterModule, SharedModule, SinglePopupService, Skip, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ViewContainerRef, ContentChildren } from '@angular/core';\nimport { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';\nimport { Subscription, fromEvent, interval, merge, BehaviorSubject, Subject } from 'rxjs';\nimport { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';\nimport * as i3 from '@progress/kendo-angular-common';\nimport { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, PreventableEvent, closest as closest$1 } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { browser, mobileOS, detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport * as i1$2 from '@progress/kendo-angular-intl';\nimport * as i1$3 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { parseColor as parseColor$1, Color, namedColors } from '@progress/kendo-drawing';\n\n/**\n * @hidden\n *\n * Checks if the value is `null` or `undefined`. Falsy values like '', 0, false, NaN, etc. are regarded as present.\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst areSame = (value1, value2) => value1 === value2 || (value1 === null && value2 === undefined) || (value1 === undefined && value2 === null);\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds. If the number is NaN or null, the min is returned.\n *\n * @param contender Represents the number you want to fit into specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nconst fitIntoBounds = (contender, min, max) => {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n case 'fillMode':\n return {\n toRemove: `k-${componentType}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${newValue}` : ''\n };\n default:\n break;\n }\n};\n\n/**\n * @hidden\n */\nconst MAX_PRECISION = 20;\n/**\n * @hidden\n */\nconst limitPrecision = (precision) => Math.min(precision, MAX_PRECISION);\n/**\n * @hidden\n */\nconst fractionLength = (value) => {\n return (String(value).split('.')[1] || \"\").length;\n};\nconst maxFractionLength = (value1, value2) => {\n return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nconst toFixedPrecision = (value, precision) => {\n const maxPrecision = limitPrecision(precision);\n return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nconst add = (value1, value2) => {\n const maxPrecision = maxFractionLength(value1, value2);\n return toFixedPrecision(value1 + value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst subtract = (value1, value2) => {\n return add(value1, -value2);\n};\n/**\n * @hidden\n */\nconst multiply = (value1, value2) => {\n const maxPrecision = fractionLength(value1) + fractionLength(value2);\n return toFixedPrecision(value1 * value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst divide = (dividend, divisor) => {\n if (divisor === 0) {\n return NaN;\n }\n const power = maxFractionLength(dividend, divisor);\n const correctionValue = Math.pow(10, power);\n return ((correctionValue * dividend) / (correctionValue * divisor));\n};\n/**\n * @hidden\n */\nconst remainder = (dividend, divisor) => {\n return Math.abs(subtract(dividend, multiply(divisor, Math.floor(divide(dividend, divisor)))));\n};\n\n/**\n * @hidden\n */\nconst calculateFixedTrackSize = ({ max, min, smallStep, fixedTickWidth }) => ((max - min) / smallStep) * fixedTickWidth;\n/**\n * @hidden\n */\nconst calculateTrackSize = (wrapperWidth, offset, showButtons = true) => {\n const BUTTONS_COUNT = 2;\n const trackOffset = showButtons ? parseFloat(offset) * BUTTONS_COUNT : 0;\n const trackWidth = wrapperWidth - trackOffset;\n return Math.floor(trackWidth);\n};\n/**\n * @hidden\n */\nconst calculateTicksCount = (min = 0, max = 0, smallStep = 1) => {\n if (smallStep <= 0) {\n throw new Error('Invalid argument: smallStep must be a positive number');\n }\n const adjustedRange = Math.abs(subtract(max, min));\n const adjustedRatio = Math.floor(divide(adjustedRange, smallStep));\n const result = add(adjustedRatio, 1);\n return result;\n};\n/**\n * @hidden\n */\nconst calculateValueFromTick = (index, { max, min, smallStep, reverse, vertical }) => {\n const value = add(min, multiply(index, smallStep));\n return vertical || reverse ? Math.abs(subtract(value, max)) : value;\n};\n/**\n * @hidden\n */\nconst calculateHandlePosition = ({ trackWidth, min, max, reverse, value }) => {\n const step = trackWidth / Math.abs(max - min);\n let pos = isPresent(value) ? step * (value - min) : min;\n if (reverse) {\n pos = trackWidth - pos;\n }\n return Math.floor(pos);\n};\n/**\n * @hidden\n */\nconst decreaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n let result;\n const stepRemainder = remainder(stepValue, step);\n if (stepRemainder === 0) {\n result = subtract(stepValue, step);\n }\n else {\n result = subtract(stepValue, stepRemainder);\n }\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst increaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n const stepRemainder = remainder(stepValue, step);\n const result = add(subtract(stepValue, stepRemainder), step);\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst isStartHandle = (dragHandle) => dragHandle.id.indexOf('k-start-handle') > -1;\n/**\n * @hidden\n */\nconst snapValue = (value, options) => {\n const { smallStep, min, max } = options;\n const limited = limitValue(value, min, max);\n if (value !== limited) {\n return limited;\n }\n const left = decreaseValueToStep(value, options);\n const right = increaseValueToStep(value, options);\n if ((value - min) % smallStep === 0) {\n return value;\n }\n if (right - value <= (right - left) / 2) {\n return right;\n }\n return left;\n};\n/**\n * @hidden\n */\nconst trimValue = (max, min, value) => {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n};\n/**\n * @hidden\n */\nconst trimValueRange = (max, min, value) => {\n return value ? [trimValue(max, min, value[0]), trimValue(max, min, value[1])] : [min, min];\n};\n/**\n * @hidden\n */\nconst identity = (value) => value;\n/**\n * @hidden\n */\nconst isSameRange = (value1, value2) => areSame(value1[0], value2[0]) && areSame(value1[1], value2[1]);\n/**\n * @hidden\n */\nconst elementOffset = (element) => {\n const box = element.getBoundingClientRect();\n const documentElement = document.documentElement;\n return {\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0),\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0)\n };\n};\n/**\n * @hidden\n */\nconst limitValue = (value, min, max) => {\n return Math.max(Math.min(value, max), min);\n};\n/**\n * @hidden\n */\nconst eventValue = (eventArgs, scaleElement, options) => {\n const { min, max, vertical, rtl } = options;\n const trackOffset = elementOffset(scaleElement);\n const offset = vertical ? eventArgs.pageY - trackOffset.top : eventArgs.pageX - trackOffset.left;\n const scale = (max - min) / (vertical ? scaleElement.clientHeight : scaleElement.clientWidth);\n const offsetValue = offset * scale;\n let value = rtl || vertical ? max - offsetValue : min + offsetValue;\n const stepFractionLength = fractionLength(options.smallStep);\n value = toFixedPrecision(value, stepFractionLength + 1);\n return snapValue(value, options);\n};\n/**\n * @hidden\n */\nconst isButton = (element) => {\n return element.className.indexOf('k-button-increase') >= 0 || element.className.indexOf('k-button-decrease') >= 0;\n};\n/**\n * @hidden\n */\nconst increment = (options) => {\n return increaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst decrement = (options) => {\n return decreaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst incrementLarge = (options) => {\n return increaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst decrementLarge = (options) => {\n return decreaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst validateValue = (value) => {\n if (isDevMode && value && value[0] > value[1]) {\n throw new Error('[RangeSlider] The start value should not be greater than the end value.');\n }\n};\n/**\n * @hidden\n */\nvar slidersUtil = {\n calculateFixedTrackSize,\n calculateValueFromTick,\n calculateTrackSize,\n calculateTicksCount,\n calculateHandlePosition,\n decreaseValueToStep,\n decrement,\n decrementLarge,\n eventValue,\n identity,\n increment,\n incrementLarge,\n isButton,\n isSameRange,\n isStartHandle,\n increaseValueToStep,\n trimValue,\n trimValueRange,\n snapValue,\n validateValue\n};\n\n/**\n * @hidden\n */\nclass SliderModelBase {\n constructor(props, wrapper, track, renderer) {\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.renderer = renderer;\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.tickSizes = this.getTickSizes();\n }\n resizeTrack() {\n const orientation = this.props.vertical ? 'height' : 'width';\n const altOrientation = this.props.vertical ? 'width' : 'height';\n const trackWidth = this.trackWidth();\n this.track.parentElement.style[orientation] = `${trackWidth}px`;\n this.track.parentElement.style[altOrientation] = '';\n }\n resizeTicks(ticksContainer, ticks) {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n [...ticks].map((tick, index) => tick.style[dimension] = `${this.tickSizes[index]}px`);\n if (this.props.vertical) {\n this.adjustPadding(ticksContainer);\n }\n }\n resizeWrapper() {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n const fixedTrackWidth = calculateFixedTrackSize(this.props);\n const wrapperParentEl = this.wrapper.parentElement;\n if (fixedTrackWidth) {\n wrapperParentEl.style[dimension] = \"auto\";\n }\n }\n trackWidth() {\n if (this.props.fixedTickWidth) {\n return calculateFixedTrackSize(this.props);\n }\n return this.elementSize(this.track.parentElement);\n }\n getTickSizes() {\n const { min, max, smallStep } = this.props;\n const count = calculateTicksCount(min, max, smallStep);\n const trackSize = this.trackWidth();\n const distStep = trackSize / subtract(max, min);\n const result = [];\n let usedSpace = 0;\n let endPoint = 0;\n for (let i = 0; i < count; i++) {\n if (i === 0 || i === count - 1) {\n endPoint += (smallStep / 2) * distStep;\n }\n else {\n endPoint += smallStep * distStep;\n }\n // ensure that the sum of the tick sizes does not exceed the track width\n endPoint = +endPoint.toFixed(2) - 0.01;\n const size = Math.round(endPoint - usedSpace);\n result.push(size);\n usedSpace += size;\n }\n if (usedSpace >= trackSize) {\n result[result.length - 1] -= 1;\n }\n return result;\n }\n adjustPadding(ticksContainer) {\n const totalTickSize = this.tickSizes.reduce((prev, curr) => prev + curr, 0);\n const trackWidth = this.trackWidth();\n const reminder = trackWidth - totalTickSize;\n if (reminder !== 0) {\n const padding = reminder + this.elementOffset(this.track);\n ticksContainer.style.paddingTop = `${padding}px`;\n }\n }\n elementOffset(element) {\n const { vertical } = this.props;\n const style = getComputedStyle(element);\n return parseInt(vertical ? style.bottom : style.left, 10);\n }\n elementSize(element) {\n const { vertical } = this.props;\n return vertical ? element.clientHeight : element.clientWidth;\n }\n}\n\n/**\n * @hidden\n */\nclass SliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = trimValue(max, min, this.props.value);\n this.handlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.handlePosition}px`);\n }\n positionSelection(selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n let size = this.handlePosition;\n if (reverse) {\n size = this.trackWidth() - size;\n }\n this.renderer.setStyle(selection, dimension, `${size}px`);\n }\n}\n\nconst UNTOUCHED = 'ng-untouched';\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nfunction invokeElementMethod(element, name, ...args) {\n if (element && element.nativeElement) {\n return element.nativeElement[name].apply(element.nativeElement, args);\n }\n}\n/**\n * @hidden\n */\nconst isUntouched = (element) => element && element.nativeElement && hasClass(element.nativeElement, UNTOUCHED);\n/**\n * @hidden\n */\nconst containsFocus = (hostElement, contender) => hostElement && contender && (hostElement === contender || hostElement.contains(contender));\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-inputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654098210,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the template for the labels of the Slider.\n * To define the labels template, nest an `` tag with the `kendoSliderLabelTemplate` directive inside\n * the `` tag. The template context is passed to the `label` value.\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{value}}\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * }\n *\n * ```\n */\nclass LabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLabelTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLabelTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelTemplateDirective, selector: \"[kendoSliderLabelTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSliderLabelTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass SliderBase {\n constructor(localizationService, injector, renderer, ngZone, changeDetector, hostElement) {\n this.localizationService = localizationService;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Defines the title of the ticks ([see example]({% slug ticks_slider %}#toc-titles)). The default title\n * for each tick is its Slider value. If you use a callback function, the function accepts an argument\n * that holds the value of the component and returns a string with the new title.\n */\n this.title = identity;\n /**\n * Denotes the location of the tick marks in the Slider ([see example]({% slug ticks_slider %}#toc-placement)).\n *\n * The available options are:\n * * `before`—The tick marks are located to the top side of the horizontal track or to the left side of a vertical track.\n * * `after`—The tick marks are located to the bottom side of the horizontal track or to the right side of the vertical track.\n * * `both`— (Default) The tick marks are located on both sides of the track.\n * * `none`—The tick marks are not visible. The actual elements are not added to the DOM tree.\n */\n this.tickPlacement = 'both';\n /**\n * If `vertical` is set to `true`, the orientation of the Slider changes from horizontal to vertical\n * ([see example]({% slug orientation_slider %})).\n */\n this.vertical = false;\n /**\n * The minimum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.min = 0;\n /**\n * The maximum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.max = 10;\n /**\n * The step value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * Accepts positive values only. Can be an integer or a floating-point number.\n */\n this.smallStep = 1;\n /**\n * Specifies that every nth tick will be large and will have a label\n * ([see example]({% slug predefinedsteps_slider %}#toc-large-steps)).\n * Accepts positive integer values only.\n */\n this.largeStep = null;\n /**\n * Determines whether the Slider is disabled ([see example]({% slug disabledstate_slider %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Slider is in its read-only state ([see example]({% slug readonly_slider %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Slider.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the component is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.sliderClass = true;\n this.subscriptions = new Subscription();\n /**\n * @hidden\n */\n this.ifEnabled = (callback, event) => {\n if (!this.isDisabled) {\n callback.call(this, event);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get horizontalClass() {\n return !this.vertical;\n }\n get verticalClass() {\n return this.vertical;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.sizeComponent();\n }));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n get reverse() {\n return this.localizationService.rtl && !this.vertical;\n }\n get keyBinding() {\n const reverse = this.reverse;\n return {\n [Keys.ArrowLeft]: reverse ? increment : decrement,\n [Keys.ArrowRight]: reverse ? decrement : increment,\n [Keys.ArrowDown]: decrement,\n [Keys.ArrowUp]: increment,\n [Keys.PageUp]: incrementLarge,\n [Keys.PageDown]: decrementLarge,\n [Keys.Home]: ({ min }) => min,\n [Keys.End]: ({ max }) => max\n };\n }\n resetStyles(elements) {\n elements.forEach(el => {\n if (el) {\n if (this.vertical) {\n this.renderer.removeStyle(el, 'width');\n this.renderer.removeStyle(el, 'left');\n this.renderer.removeStyle(el, 'right');\n }\n else {\n this.renderer.removeStyle(el, 'height');\n this.renderer.removeStyle(el, 'bottom');\n }\n this.renderer.removeStyle(el, 'padding-top');\n }\n });\n }\n}\nSliderBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderBase, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nSliderBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderBase, selector: \"kendo-slider-base\", inputs: { title: \"title\", tickPlacement: \"tickPlacement\", vertical: \"vertical\", min: \"min\", max: \"max\", smallStep: \"smallStep\", largeStep: \"largeStep\", fixedTickWidth: \"fixedTickWidth\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-slider-horizontal\": \"this.horizontalClass\", \"class.k-slider-vertical\": \"this.verticalClass\", \"class.k-slider\": \"this.sliderClass\", \"class.k-state-disabled\": \"this.disabledClass\" } }, queries: [{ propertyName: \"labelTemplate\", first: true, predicate: LabelTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"wrapper\", first: true, predicate: [\"wrap\"], descendants: true, static: true }, { propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true, static: true }, { propertyName: \"sliderSelection\", first: true, predicate: [\"sliderSelection\"], descendants: true, static: true }, { propertyName: \"ticksContainer\", first: true, predicate: [\"ticks\"], descendants: true, read: ElementRef }, { propertyName: \"ticks\", first: true, predicate: [\"ticks\"], descendants: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-slider-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { title: [{\n type: Input\n }], tickPlacement: [{\n type: Input\n }], vertical: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], smallStep: [{\n type: Input\n }], largeStep: [{\n type: Input\n }], fixedTickWidth: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-slider-horizontal']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-slider-vertical']\n }], sliderClass: [{\n type: HostBinding,\n args: ['class.k-slider']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], wrapper: [{\n type: ViewChild,\n args: ['wrap', { static: true }]\n }], track: [{\n type: ViewChild,\n args: ['track', { static: true }]\n }], sliderSelection: [{\n type: ViewChild,\n args: ['sliderSelection', { static: true }]\n }], ticksContainer: [{\n type: ViewChild,\n args: ['ticks', { read: ElementRef, static: false }]\n }], ticks: [{\n type: ViewChild,\n args: ['ticks', { static: false }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [LabelTemplateDirective, { static: false }]\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nclass SliderTick {\n constructor(value) {\n this.value = value;\n this.classes = {\n 'k-tick': true\n };\n }\n}\n/**\n * @hidden\n */\nclass SliderTicksComponent {\n constructor() {\n this.wrapperClasses = 'k-reset k-slider-items';\n this.ticks = [];\n }\n ngOnChanges(_) {\n this.createTicks();\n }\n createTicks() {\n const count = calculateTicksCount(this.min, this.max, this.step);\n const largeStep = this.largeStep;\n const tickValueProps = {\n max: this.max,\n min: this.min,\n smallStep: this.step\n };\n let result = [];\n for (let i = 0; i < count; i++) {\n result.push(new SliderTick(calculateValueFromTick(i, tickValueProps)));\n if (largeStep && i % largeStep === 0) {\n result[i].large = true;\n result[i].classes['k-tick-large'] = true;\n }\n }\n if (result.length > 0) {\n Object.assign(result[0].classes, this.endTickClasses(true));\n Object.assign(result[result.length - 1].classes, this.endTickClasses(false));\n }\n this.ticks = result;\n }\n endTickClasses(first) {\n return {\n 'k-first': (first && !this.vertical) || (!first && this.vertical),\n 'k-last': (!first && !this.vertical) || (first && this.vertical)\n };\n }\n}\nSliderTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderTicksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSliderTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: { tickTitle: \"tickTitle\", vertical: \"vertical\", step: \"step\", largeStep: \"largeStep\", min: \"min\", max: \"max\", labelTemplate: \"labelTemplate\" }, host: { properties: { \"class\": \"this.wrapperClasses\" } }, viewQueries: [{ propertyName: \"tickElements\", predicate: [\"tickElement\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
  • \n \n \n \n \n \n  \n \n
  • \n\n \n {{ tickTitle(value) }}\n \n `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i1$1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i1$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoSliderTicks]',\n template: `\n
  • \n \n \n \n \n \n  \n \n
  • \n\n \n {{ tickTitle(value) }}\n \n `\n }]\n }], propDecorators: { wrapperClasses: [{\n type: HostBinding,\n args: ['class']\n }], tickTitle: [{\n type: Input\n }], vertical: [{\n type: Input\n }], step: [{\n type: Input\n }], largeStep: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], tickElements: [{\n type: ViewChildren,\n args: ['tickElement']\n }] } });\n\n/**\n * @hidden\n */\nclass SliderMessages extends ComponentMessages {\n}\nSliderMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nSliderMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderMessages, selector: \"kendo-slider-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\", dragHandle: \"dragHandle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-slider-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }], dragHandle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSliderMessagesDirective extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSliderMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSliderMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSliderMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\", providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSliderMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective)\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PRESSED$1 = 'k-pressed';\n/**\n * Represents the [Kendo UI Slider component for Angular]({% slug overview_slider %}).\n */\nclass SliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines if the animation will be played on value change.\n * Regardless of this setting, no animation will be played during the initial rendering.\n */\n this.animate = true;\n /**\n * Renders the arrow side buttons of the Slider ([see example]({% slug sidebuttons_slider %}#toc-hidden-state)).\n * When `showButtons` is set to `false`, the buttons are not displayed.\n */\n this.showButtons = true;\n /**\n * The current value of the Slider when it is initially displayed.\n * The component can use either NgModel or the `value` binding but not both of them at the same time.\n */\n this.value = this.min;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n const target = args.target;\n if (!this.isDisabled && !(isButton(target) || isButton(target.parentNode))) {\n const value = eventValue(args, this.track.nativeElement, this.getProps());\n this.changeValue(value);\n }\n invokeElementMethod(this.draghandle, 'focus');\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n const value = handler(options);\n this.changeValue(trimValue(max, min, value));\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.decreaseValue = () => {\n this.changeValue(decreaseValueToStep(this.value, this.getProps()));\n };\n this.increaseValue = () => {\n this.changeValue(increaseValueToStep(this.value, this.getProps()));\n };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n get currentValue() {\n return isPresent(this.value) ? this.value.toString() : '';\n }\n /**\n * Focuses the Slider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.disabled) {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'focus');\n this.focusChangedProgrammatically = false;\n }\n }\n /**\n * Blurs the Slider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent(false);\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.showButtons) {\n this.setValueChangeInterval(this.increaseButton.nativeElement, () => this.increaseValue());\n this.setValueChangeInterval(this.decreaseButton.nativeElement, () => this.decreaseValue());\n }\n this.sizeComponent(false);\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent(false));\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get incrementMessage() {\n return this.incrementTitle || this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementMessage() {\n return this.decrementTitle || this.localizationService.get('decrement');\n }\n /**\n * @hidden\n */\n get dragHandleMessage() {\n return this.dragHandleTitle || this.localizationService.get('dragHandle');\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.dragging = true;\n this.changeValue(eventValue(args, this.track.nativeElement, this.getProps()));\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n this.dragging = false; //needed for animation\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.changeDetector.markForCheck();\n this.value = value;\n this.sizeComponent(this.animate);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.sizeComponent(this.animate);\n this.changeDetector.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent(animate) {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleEl = this.draghandle.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n if (!animate) {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n this.resetStyles([track, selectionEl, dragHandleEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new SliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleEl);\n model.positionSelection(selectionEl);\n if (!animate) {\n this.hostElement.nativeElement.getBoundingClientRect();\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(value) {\n if (this.isDragged !== value && this.sliderSelection && this.draghandle) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = this.draghandle.nativeElement;\n if (value) {\n this.renderer.addClass(sliderSelection, PRESSED$1);\n this.renderer.addClass(draghandle, PRESSED$1);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED$1);\n this.renderer.removeClass(draghandle, PRESSED$1);\n }\n this.isDragged = value;\n }\n }\n setValueChangeInterval(element, callback) {\n this.ngZone.runOutsideAngular(() => {\n const mousedown = fromEvent(element, 'mousedown');\n const mouseup = fromEvent(element, 'mouseup');\n const mouseout = fromEvent(element, 'mouseout');\n const subscription = mousedown.pipe(filter((e) => e.button === 0 && !this.isDisabled), concatMap(() => interval(150).pipe(startWith(-1), takeUntil(merge(mouseup, mouseout))))).subscribe(() => {\n if (!this.isFocused) {\n invokeElementMethod(this.draghandle, 'focus');\n }\n callback();\n });\n this.subscriptions.add(subscription);\n });\n }\n getProps() {\n return {\n buttons: this.showButtons,\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValue(this.max, this.min, this.value),\n vertical: this.vertical\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandle.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n}\nSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderComponent, selector: \"kendo-slider\", inputs: { focusableId: \"focusableId\", dragHandleTitle: \"dragHandleTitle\", incrementTitle: \"incrementTitle\", animate: \"animate\", decrementTitle: \"decrementTitle\", showButtons: \"showButtons\", value: \"value\", tabIndex: \"tabIndex\" }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent) }\n ], viewQueries: [{ propertyName: \"draghandle\", first: true, predicate: [\"draghandle\"], descendants: true, static: true }, { propertyName: \"decreaseButton\", first: true, predicate: [\"decreaseButton\"], descendants: true }, { propertyName: \"increaseButton\", first: true, predicate: [\"increaseButton\"], descendants: true }], exportAs: [\"kendoSlider\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n \n
    \n
      \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n `, isInline: true, components: [{ type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: [\"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent) }\n ],\n selector: 'kendo-slider',\n template: `\n \n
    \n \n
    \n
      \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], dragHandleTitle: [{\n type: Input\n }], incrementTitle: [{\n type: Input\n }], animate: [{\n type: Input\n }], decrementTitle: [{\n type: Input\n }], showButtons: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], draghandle: [{\n type: ViewChild,\n args: ['draghandle', { static: true }]\n }], decreaseButton: [{\n type: ViewChild,\n args: ['decreaseButton', { static: false }]\n }], increaseButton: [{\n type: ViewChild,\n args: ['increaseButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass RangeSliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n if (!dragHandle.id) {\n return;\n }\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = isStartHandle(dragHandle) ? trimValueRange(max, min, this.props.value)[0]\n : trimValueRange(max, min, this.props.value)[1];\n if (isStartHandle(dragHandle)) {\n this.startHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.startHandlePosition}px`);\n }\n else {\n this.endHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.endHandlePosition}px`);\n }\n }\n positionSelection(dragHandle, selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n const position = vertical ? 'bottom' : reverse ? 'right' : 'left';\n const size = Math.abs(this.endHandlePosition - this.startHandlePosition);\n const currentSelectionPosition = vertical ? dragHandle.style.bottom : dragHandle.style.left;\n this.renderer.setStyle(selection, dimension, `${size}px`);\n this.renderer.setStyle(selection, position, reverse ? this.trackWidth() - parseFloat(currentSelectionPosition) + 'px'\n : parseFloat(currentSelectionPosition) + 'px');\n }\n}\n\n/**\n * @hidden\n */\nclass RangeSliderMessages extends ComponentMessages {\n}\nRangeSliderMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRangeSliderMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderMessages, selector: \"kendo-rangeslider-messages-base\", inputs: { dragHandleStart: \"dragHandleStart\", dragHandleEnd: \"dragHandleEnd\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-rangeslider-messages-base'\n }]\n }], propDecorators: { dragHandleStart: [{\n type: Input\n }], dragHandleEnd: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedRangeSliderMessagesDirective extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedRangeSliderMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedRangeSliderMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedRangeSliderMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedRangeSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\", providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedRangeSliderMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective)\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PRESSED = 'k-pressed';\n/**\n * Represents the [Kendo UI RangeSlider component for Angular]({% slug overview_rangeslider %}).\n */\nclass RangeSliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.startHandleId = `k-start-handle-${guid()}`;\n /**\n * @hidden\n */\n this.endHandleId = `k-end-handle-${guid()}`;\n /**\n * @hidden\n */\n this.focusableId = this.startHandleId;\n this.handleZIndex = 0;\n this.activeHandle = 'startHandle';\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n if (!this.isDisabled) {\n this.value = this.value || [this.min, this.min];\n const trackValue = eventValue(args, this.track.nativeElement, this.getProps());\n let newRangeValue;\n const [startValue, endValue] = newRangeValue = this.value;\n if (trackValue <= startValue) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else if (startValue < trackValue && trackValue < endValue) {\n if (trackValue < (startValue + endValue) / 2) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n }\n else if (trackValue >= endValue) {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'focus');\n this.changeValue(newRangeValue);\n }\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n this.value = this.value || [this.min, this.min];\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n this.renderer.setStyle(e.target, 'zIndex', ++this.handleZIndex);\n const startHandleIsActive = isStartHandle(e.target);\n const value = handler(Object.assign(Object.assign({}, options), { value: startHandleIsActive ? this.value[0] : this.value[1] }));\n if (startHandleIsActive) {\n if (value > this.value[1]) {\n this.value[1] = value;\n }\n }\n else {\n if (value < this.value[0]) {\n this.value[0] = value;\n }\n }\n const trimmedValue = trimValue(max, min, value);\n const newValue = startHandleIsActive ? [trimmedValue, this.value[1]]\n : [this.value[0], trimmedValue];\n this.changeValue(newValue);\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * Focuses the RangeSlider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandleStart, 'focus');\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the RangeSlider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnInit() {\n if (!this.value) {\n this.value = [this.min, this.max];\n }\n super.ngOnInit();\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n if (changes.value && changes.value.currentValue) {\n validateValue(changes.value.currentValue);\n }\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent();\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.sizeComponent();\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent());\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get valueText() {\n return this.value ? `${this.value[0]} - ${this.value[1]}` : '';\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n const target = args.originalEvent.target;\n this.draggedHandle = target;\n this.renderer.setStyle(target, 'zIndex', ++this.handleZIndex);\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.value = this.value || [this.min, this.min];\n const target = args.originalEvent.target;\n const lastCoords = this.draggedHandle.getBoundingClientRect();\n this.lastHandlePosition = { x: lastCoords.left, y: lastCoords.top };\n this.dragging = { value: true, target };\n const mousePos = {\n x: (args.pageX - 0.5) - (lastCoords.width / 2),\n y: (args.pageY - (lastCoords.width / 2))\n };\n const left = mousePos.x < this.lastHandlePosition.x;\n const right = mousePos.x > this.lastHandlePosition.x;\n const up = mousePos.y > this.lastHandlePosition.y;\n const moveStartHandle = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), this.value[1]]);\n const moveEndHandle = () => this.changeValue([this.value[0], eventValue(args, this.track.nativeElement, this.getProps())]);\n const moveBothHandles = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), eventValue(args, this.track.nativeElement, this.getProps())]);\n const activeStartHandle = isStartHandle(this.draggedHandle);\n const vertical = this.vertical;\n const horizontal = !vertical;\n const forward = (vertical && up) || (this.reverse ? horizontal && right : horizontal && left);\n const incorrectValueState = this.value[0] > this.value[1];\n if (this.value[0] === this.value[1] || incorrectValueState) {\n if (forward) {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveStartHandle() : moveBothHandles();\n }\n else {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveBothHandles() : moveEndHandle();\n }\n }\n else {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveStartHandle() : moveEndHandle();\n }\n }\n /**\n * @hidden\n */\n onHandleRelease(args) {\n this.dragging = { value: false, target: args.originalEvent.target }; //needed for animation\n this.draggedHandle = undefined;\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n validateValue(value);\n this.value = value;\n this.sizeComponent();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!this.value || !isSameRange(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n if (this.value) {\n this.valueChange.emit(value);\n }\n this.sizeComponent();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent() {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleStartEl = this.draghandleStart.nativeElement;\n const dragHandleEndEl = this.draghandleEnd.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n this.resetStyles([track, selectionEl, dragHandleStartEl, dragHandleEndEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new RangeSliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleStartEl);\n model.positionHandle(dragHandleEndEl);\n model.positionSelection(dragHandleStartEl, selectionEl);\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(data) {\n if (this.isDragged !== data.value && this.sliderSelection && this.draghandleStart && this.draghandleEnd) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = data.target;\n if (data.value) {\n this.renderer.addClass(sliderSelection, PRESSED);\n this.renderer.addClass(draghandle, PRESSED);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED);\n this.renderer.removeClass(draghandle, PRESSED);\n }\n this.isDragged = data.value;\n }\n }\n getProps() {\n return {\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValueRange(this.max, this.min, this.value),\n vertical: this.vertical,\n buttons: false\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandleStart.nativeElement && args.relatedTarget !== this.draghandleEnd.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n}\nRangeSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nRangeSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderComponent, selector: \"kendo-rangeslider\", inputs: { value: \"value\" }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent) }\n ], viewQueries: [{ propertyName: \"draghandleStart\", first: true, predicate: [\"draghandleStart\"], descendants: true, static: true }, { propertyName: \"draghandleEnd\", first: true, predicate: [\"draghandleEnd\"], descendants: true, static: true }], exportAs: [\"kendoRangeSlider\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n\n
    \n
    \n
      \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n `, isInline: true, components: [{ type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: [\"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoRangeSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent) }\n ],\n selector: 'kendo-rangeslider',\n template: `\n \n\n
    \n
    \n
      \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { value: [{\n type: Input\n }], draghandleStart: [{\n type: ViewChild,\n args: ['draghandleStart', { static: true }]\n }], draghandleEnd: [{\n type: ViewChild,\n args: ['draghandleEnd', { static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-switch-messages-base\", inputs: { on: \"on\", off: \"off\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-switch-messages-base'\n }]\n }], propDecorators: { on: [{\n type: Input\n }], off: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSwitchMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSwitchMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSwitchMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSwitchMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSwitchMessagesDirective, selector: \"[kendoSwitchLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSwitchMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective)\n }\n ],\n selector: '[kendoSwitchLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FOCUSED$4 = 'k-focus';\nconst DEFAULT_SIZE$7 = 'medium';\nconst DEFAULT_THUMB_ROUNDED = 'full';\nconst DEFAULT_TRACK_ROUNDED = 'full';\n/**\n * Represents the [Kendo UI Switch component for Angular]({% slug overview_switch %}).\n */\nclass SwitchComponent {\n constructor(renderer, hostElement, localizationService, injector, changeDetector, ngZone) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n this.injector = injector;\n this.changeDetector = changeDetector;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the Switch is disabled ([see example]({% slug disabled_switch %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Switch is in its read-only state ([see example]({% slug readonly_switch %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Switch.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.initialized = false;\n this.hostClickSubscription = new Subscription;\n this._checked = false;\n this._size = 'medium';\n this._trackRounded = 'full';\n this._thumbRounded = 'full';\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n if (this.isFocused) {\n return;\n }\n this.focused = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = (event) => {\n const relatedTarget = event && event.relatedTarget;\n if (this.hostElement.nativeElement.contains(relatedTarget)) {\n return;\n }\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n this.keyDownHandler = this.keyDownHandler.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n }\n /**\n * Sets the value of the Switch when it is initially displayed.\n */\n set checked(value) {\n this.setHostClasses(value);\n this._checked = value;\n }\n get checked() {\n return this._checked;\n }\n /**\n * Specifies the width and height of the Switch.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$7;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the border radius of the Switch thumb.\n *\n * The possible values are:\n * * `full` (default)\n * * `small`\n * * `medium`\n * * `large`\n * * `none`\n */\n set thumbRounded(thumbRounded) {\n const newThumbRounded = thumbRounded ? thumbRounded : DEFAULT_THUMB_ROUNDED;\n this.handleThumbClasses(newThumbRounded);\n this._thumbRounded = newThumbRounded;\n }\n get thumbRounded() {\n return this._thumbRounded;\n }\n /**\n * Specifies the border radius of the Switch track.\n *\n * The possible values are:\n * * `full` (default)\n * * `small`\n * * `medium`\n * * `large`\n * * `none`\n */\n set trackRounded(trackRounded) {\n const newTrackRounded = trackRounded ? trackRounded : DEFAULT_TRACK_ROUNDED;\n this.handleTrackClasses(newTrackRounded);\n this._trackRounded = newTrackRounded;\n }\n get trackRounded() {\n return this._trackRounded;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get ieClass() {\n return browser && browser.msie;\n }\n get ariaDisabled() {\n return this.disabled ? true : undefined;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get onLabelMessage() {\n return this.onLabel || this.localizationService.get('on');\n }\n /**\n * @hidden\n */\n get offLabelMessage() {\n return this.offLabel || this.localizationService.get('off');\n }\n get isEnabled() {\n return !this.disabled && !this.readonly;\n }\n ngOnInit() {\n if (this.hostElement) {\n const wrapper = this.hostElement.nativeElement;\n this.renderer.removeAttribute(wrapper, \"tabindex\");\n }\n this.localizationChangeSubscription = this.localizationService\n .changes\n .pipe(skip(1))\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.control = this.injector.get(NgControl, null);\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);\n }\n ngAfterViewInit() {\n const wrapper = this.hostElement.nativeElement;\n this.attachHostClickHandler();\n if (!this.checked && !wrapper.classList.contains('k-switch-off')) {\n this.renderer.addClass(wrapper, 'k-switch-off');\n }\n this.handleClasses(this.size, 'size');\n this.handleTrackClasses(this.trackRounded);\n this.handleThumbClasses(this.thumbRounded);\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.hostClickSubscription) {\n this.hostClickSubscription.unsubscribe();\n }\n }\n /**\n * Focuses the Switch.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.track) {\n return;\n }\n this.track.nativeElement.focus();\n }\n /**\n * Blurs the Switch.\n */\n blur() {\n if (!this.track) {\n return;\n }\n this.track.nativeElement.blur();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.checked = value === null ? false : value;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n keyDownHandler(e) {\n const keyCode = e.keyCode;\n if (this.isEnabled && (keyCode === Keys.Space || keyCode === Keys.Enter)) {\n this.changeValue(!this.checked);\n e.preventDefault();\n }\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.isEnabled) {\n this.changeValue(!this.checked);\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n changeValue(value) {\n if (this.checked !== value) {\n this.ngZone.run(() => {\n this.checked = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const wrapper = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(wrapper, FOCUSED$4);\n }\n else {\n this.renderer.removeClass(wrapper, FOCUSED$4);\n }\n this.isFocused = value;\n }\n }\n attachHostClickHandler() {\n this.ngZone.runOutsideAngular(() => {\n this.hostClickSubscription.add(this.renderer.listen(this.hostElement.nativeElement, 'click', this.clickHandler));\n });\n }\n setHostClasses(value) {\n const wrapper = this.hostElement.nativeElement;\n if (value) {\n this.renderer.removeClass(wrapper, 'k-switch-off');\n this.renderer.addClass(wrapper, 'k-switch-on');\n }\n else {\n this.renderer.removeClass(wrapper, 'k-switch-on');\n this.renderer.addClass(wrapper, 'k-switch-off');\n }\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('switch', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleTrackClasses(value) {\n var _a, _b;\n const elem = (_a = this.hostElement) === null || _a === void 0 ? void 0 : _a.nativeElement;\n const track = (_b = this.track) === null || _b === void 0 ? void 0 : _b.nativeElement;\n if (!elem || !track) {\n return;\n }\n const classes = getStylingClasses('switch', 'rounded', this.trackRounded, value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n this.renderer.removeClass(track, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n this.renderer.addClass(track, classes.toAdd);\n }\n }\n handleThumbClasses(value) {\n var _a;\n const thumb = (_a = this.thumb) === null || _a === void 0 ? void 0 : _a.nativeElement;\n if (!thumb) {\n return;\n }\n const classes = getStylingClasses('switch', 'rounded', this.thumbRounded, value);\n if (classes.toRemove) {\n this.renderer.removeClass(thumb, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(thumb, classes.toAdd);\n }\n }\n}\nSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SwitchComponent, selector: \"kendo-switch\", inputs: { focusableId: \"focusableId\", onLabel: \"onLabel\", offLabel: \"offLabel\", checked: \"checked\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", size: \"size\", thumbRounded: \"thumbRounded\", trackRounded: \"trackRounded\", tabIndex: \"tabIndex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-ie\": \"this.ieClass\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"class.k-switch\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent)\n }\n ], viewQueries: [{ propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true, static: true }, { propertyName: \"thumb\", first: true, predicate: [\"thumb\"], descendants: true, static: true }], exportAs: [\"kendoSwitch\"], ngImport: i0, template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedSwitchMessagesDirective, selector: \"[kendoSwitchLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSwitch',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent)\n }\n ],\n selector: 'kendo-switch',\n template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { focusableId: [{\n type: Input\n }], onLabel: [{\n type: Input\n }], offLabel: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], thumbRounded: [{\n type: Input\n }], trackRounded: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ieClass: [{\n type: HostBinding,\n args: ['class.k-ie']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-switch']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], track: [{\n type: ViewChild,\n args: ['track', { static: true }]\n }], thumb: [{\n type: ViewChild,\n args: ['thumb', { static: true }]\n }] } });\n\n/**\n * Represents the [Kendo UI TextBox directive]({% slug overview_textbox %}) for the Inputs components for Angular.\n * Used to style the textbox of any `input` element.\n *\n * @example\n * ```ts-no-run\n * \n * \n * \n * ```\n */\nclass TextBoxDirective {\n constructor(renderer, inputElement, ngZone) {\n this.renderer = renderer;\n this.inputElement = inputElement;\n this.ngZone = ngZone;\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n }\n /**\n * @hidden\n */\n set value(text) {\n if (!this.inputElement) {\n return;\n }\n this.inputElement.nativeElement.value = (text === undefined || text === null) ? '' : text;\n this.onValueChange.emit();\n }\n /**\n * @hidden\n */\n get value() {\n return this.inputElement.nativeElement.value;\n }\n get id() {\n return this.inputElement.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.inputElement.nativeElement, 'id', id);\n }\n ngAfterViewInit() {\n const input = this.inputElement.nativeElement;\n this.listeners = [\n this.renderer.listen(input, 'focus', () => this.onFocus.emit()),\n this.renderer.listen(input, 'blur', () => this.onBlur.emit())\n ];\n this.ngZone.runOutsideAngular(() => {\n this.renderer.listen(input, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n });\n });\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n }\n}\nTextBoxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: { value: \"value\" }, host: { properties: { \"class.k-textbox\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-input-md\": \"this.hostClasses\", \"class.k-rounded-md\": \"this.hostClasses\", \"class.k-input-solid\": \"this.hostClasses\" } }, providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective)\n }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoTextBox]',\n providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective)\n }]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-input-md']\n }, {\n type: HostBinding,\n args: ['class.k-rounded-md']\n }, {\n type: HostBinding,\n args: ['class.k-input-solid']\n }], value: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI TextArea directive for the Inputs components for Angular]({% slug overview_textarea %}).\n * Provides floating labels to `textarea` elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass TextAreaDirective {\n constructor(renderer, element, zone, changeDetector, injector, rtl) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.injector = injector;\n this.elementClasses = true;\n this.autofillClass = true;\n /**\n * Fires each time the textarea value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Specifies if the `textarea` element will resize its height automatically\n * ([see example]({% slug overview_textarea %}#toc-auto-resizing)).\n *\n * @default false\n */\n this.autoSize = false;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.direction = rtl ? 'rtl' : 'ltr';\n }\n get id() {\n return this.element.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.element.nativeElement, 'id', id);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.elementValue = value;\n this.resize();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.setElementProperty('disabled', isDisabled);\n }\n ngOnInit() {\n const element = this.element.nativeElement;\n this.zone.runOutsideAngular(() => {\n this.listeners = [\n this.renderer.listen(element, 'focus', this.handleFocus.bind(this)),\n this.renderer.listen(element, 'blur', this.handleBlur.bind(this)),\n this.renderer.listen(element, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n })\n ];\n if (isDocumentAvailable() && this.autoSize) {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n this.inputSubscription = fromEvent(element, 'input')\n .subscribe(this.handleInput.bind(this));\n });\n this.control = this.injector.get(NgControl, null);\n }\n ngOnChanges(changes) {\n const element = this.element.nativeElement;\n if (changes.value) {\n this.elementValue = this.value;\n }\n if (changes.autoSize) {\n if (this.autoSize) {\n this.initialHeight = element.offsetHeight;\n this.renderer.setStyle(element, 'resize', 'none');\n }\n else {\n this.renderer.setStyle(element, 'overflow-y', 'auto');\n this.renderer.setStyle(element, 'resize', 'both');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n this.zone.onStable.pipe(take(1)).subscribe(() => this.resize());\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n if (this.inputSubscription) {\n this.inputSubscription.unsubscribe();\n }\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n get elementValue() {\n if (this.element) {\n return this.element.nativeElement.value;\n }\n return '';\n }\n set elementValue(value) {\n this.setElementProperty('value', (value === undefined || value === null) ? '' : value);\n }\n setElementProperty(name, value) {\n if (this.element) {\n this.renderer.setProperty(this.element.nativeElement, name, value);\n }\n }\n resize() {\n if (!this.autoSize) {\n return;\n }\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, 'overflow-y', 'hidden');\n element.style.height = `${this.initialHeight}px`;\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n handleInput() {\n const value = this.elementValue;\n this.value = value;\n if (this.control || hasObservers(this.onValueChange) || hasObservers(this.valueChange)) {\n this.zone.run(() => {\n this.ngChange(value);\n this.onValueChange.emit(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n this.resize();\n }\n handleFocus() {\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur() {\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n this.changeDetector.markForCheck();\n });\n }\n }\n}\nTextAreaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextAreaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaDirective, selector: \"textarea[kendoTextArea]\", inputs: { autoSize: \"autoSize\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-textarea\": \"this.elementClasses\", \"class.k-input\": \"this.elementClasses\", \"class.k-input-md\": \"this.elementClasses\", \"class.k-rounded-md\": \"this.elementClasses\", \"class.k-input-solid\": \"this.elementClasses\", \"class.k-autofill\": \"this.autofillClass\", \"attr.dir\": \"this.direction\" } }, providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective)\n }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective)\n }],\n selector: 'textarea[kendoTextArea]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { elementClasses: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-input-md']\n }, {\n type: HostBinding,\n args: ['class.k-rounded-md']\n }, {\n type: HostBinding,\n args: ['class.k-input-solid']\n }], autofillClass: [{\n type: HostBinding,\n args: ['class.k-autofill']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], valueChange: [{\n type: Output\n }], autoSize: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst createMaxValidator = (maxValue) => {\n return (c) => {\n if (!isPresent(maxValue) || !isPresent(c.value) || c.value <= maxValue) {\n return null;\n }\n return {\n maxError: {\n maxValue: maxValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst createMinValidator = (minValue) => {\n return (c) => {\n if (!isPresent(minValue) || !isPresent(c.value) || c.value >= minValue) {\n return null;\n }\n return {\n minError: {\n minValue: minValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-min';\n/**\n * @hidden\n */\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-max';\n/**\n * @hidden\n */\nconst POINT = \".\";\n/**\n * @hidden\n */\nconst INITIAL_SPIN_DELAY = 500;\n/**\n * @hidden\n */\nconst SPIN_DELAY = 50;\n/**\n * @hidden\n */\nconst EXPONENT_REGEX = /[eE][\\-+]?([0-9]+)/;\n\n/**\n * @hidden\n */\nconst numericRegex = (options) => {\n const { autoCorrect, decimals, min } = options;\n let separator = options.separator;\n if (separator === POINT) {\n separator = '\\\\' + separator;\n }\n const signPattern = autoCorrect && min !== null && min >= 0 ? '' : '-?';\n let numberPattern;\n if (decimals === 0) {\n numberPattern = '\\\\d*';\n }\n else {\n numberPattern = `(?:(?:\\\\d+(${separator}\\\\d*)?)|(?:${separator}\\\\d*))?`;\n }\n return new RegExp(`^${signPattern}${numberPattern}$`);\n};\n/**\n * @hidden\n */\nconst decimalPart = (value) => {\n return value >= 0 ? Math.floor(value) : Math.ceil(value);\n};\n/**\n * @hidden\n */\nconst noop = (_) => { }; // eslint-disable-line no-empty\n/**\n * @hidden\n */\nconst defined = (value) => {\n return typeof value !== 'undefined';\n};\n/**\n * @hidden\n */\nconst isNumber = (value) => {\n return !isNaN(value) && value !== null;\n};\n/**\n * @hidden\n */\nfunction pad(value, digits) {\n const count = digits - String(value).length;\n let result = value;\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = parseFloat(value + padString);\n }\n return result;\n}\n/**\n * @hidden\n */\nconst getDeltaFromMouseWheel = (e) => {\n let delta = 0;\n if (e.wheelDelta) {\n delta = e.wheelDelta / 120;\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n }\n else if (e.detail) {\n delta = Math.round(-e.detail / 3);\n }\n return delta;\n};\n/**\n * @hidden\n */\nconst getCaretPosition = (element) => element.selectionStart;\n/**\n * @hidden\n */\nconst extractSignificantNumericChars = (formattedString, separator) => {\n const significantCharacters = `${separator}0123456789-`;\n return formattedString.split('').reduce((acc, curr) => significantCharacters.includes(curr) ? ++acc : acc, 0);\n};\n/**\n * @hidden\n */\nconst isRightClick = (event) => {\n const isRightClickIE = event.button && event.button === 2;\n const isRightClickOther = event.which && event.which === 3;\n return isRightClickIE || isRightClickOther;\n};\n\n/**\n * @hidden\n */\nvar ArrowDirection;\n(function (ArrowDirection) {\n ArrowDirection[ArrowDirection[\"Down\"] = -1] = \"Down\";\n ArrowDirection[ArrowDirection[\"None\"] = 0] = \"None\";\n ArrowDirection[ArrowDirection[\"Up\"] = 1] = \"Up\";\n})(ArrowDirection || (ArrowDirection = {}));\n\n/**\n * @hidden\n */\nclass NumericTextBoxMessages extends ComponentMessages {\n}\nNumericTextBoxMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nNumericTextBoxMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxMessages, selector: \"kendo-numerictextbox-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-numerictextbox-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedNumericTextBoxMessagesDirective extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedNumericTextBoxMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedNumericTextBoxMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedNumericTextBoxMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedNumericTextBoxMessagesDirective, selector: \"[kendoNumericTextBoxLocalizedMessages]\", providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedNumericTextBoxMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective)\n }\n ],\n selector: '[kendoNumericTextBoxLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PARSABLE_OPTIONS = ['min', 'max', 'step', 'decimals'];\nconst PARSABLE_DEFAULTS = {\n decimals: null,\n max: null,\n min: null,\n step: 1\n};\nconst FOCUSED$3 = 'k-focus';\nconst DEFAULT_SIZE$6 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).\n */\nclass NumericTextBoxComponent {\n constructor(intl, renderer, localizationService, injector, ngZone, changeDetector, hostElement) {\n this.intl = intl;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.injector = injector;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the NumericTextBox is in its read-only state ([see example]({% slug readonly_numerictextbox %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the `input` element of the NumericTextBox.\n */\n this.title = '';\n /**\n * Specifies whether the value will be auto-corrected based on the minimum and maximum values\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.autoCorrect = false;\n /**\n * Specifies the number of decimals that the user can enter when the input is focused\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.decimals = null;\n /**\n * Specifies the value that is used to increment or decrement the component value\n * ([see example]({% slug predefinedsteps_numerictextbox %})).\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered\n * ([see example]({% slug spinbuttons_numerictextbox %})).\n */\n this.spinners = true;\n /**\n * Determines whether the built-in minimum or maximum validators are enforced when a form is validated.\n *\n * > The 4.2.0 Angular version introduces the `min` and `max` validation directives. As a result, even if you set `rangeValidation`\n * to `false`, the built-in Angular validators will be executed.\n */\n this.rangeValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Determines whether the value of the NumericTextBox will be changed via scrolling. Defaults to `true`.\n *\n * @default true\n */\n this.changeValueOnScroll = true;\n /**\n * Determines whether the whole value will be selected when the NumericTextBox is clicked. Defaults to `true`.\n */\n this.selectOnFocus = true;\n /**\n * Specifies the value of the NumericTextBox\n * ([see example]({% slug formats_numerictextbox %})).\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.ArrowDirection = ArrowDirection;\n /**\n * @hidden\n */\n this.arrowDirection = ArrowDirection.None;\n this.hostClasses = true;\n this.inputValue = '';\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this._format = \"n2\";\n this.isPasted = false;\n this.mouseDown = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.ngChange = noop;\n this.ngTouched = noop;\n this.ngValidatorChange = noop;\n this.domEvents = [];\n /**\n * @hidden\n */\n this.increasePress = (e) => {\n this.arrowPress(ArrowDirection.Up, e);\n };\n /**\n * @hidden\n */\n this.decreasePress = (e) => {\n this.arrowPress(ArrowDirection.Down, e);\n };\n /**\n * @hidden\n */\n this.releaseArrow = () => {\n clearTimeout(this.spinTimeout);\n if (this.arrowDirection !== ArrowDirection.None) {\n this.arrowDirection = ArrowDirection.None;\n this.changeDetector.detectChanges();\n }\n };\n /**\n * @hidden\n */\n this.handlePaste = () => {\n this.isPasted = true;\n };\n /**\n * @hidden\n */\n this.handleInput = () => {\n const input = this.numericInput.nativeElement;\n let { selectionStart, selectionEnd, value: inputValue } = input;\n if (this.pressedKey === Keys.NumpadDecimal) {\n inputValue = this.replaceNumpadDotValue();\n }\n if (this.isPasted) {\n inputValue = this.formatInputValue(this.intl.parseNumber(inputValue));\n }\n if (!this.isValid(inputValue)) {\n input.value = this.inputValue;\n this.setSelection(selectionStart - 1, selectionEnd - 1);\n return;\n }\n const parsedValue = this.intl.parseNumber(inputValue);\n let value = this.restrictDecimals(parsedValue);\n if (this.autoCorrect) {\n const limited = this.limitInputValue(value);\n value = limited.value;\n selectionStart = limited.selectionStart;\n selectionEnd = limited.selectionEnd;\n }\n if (parsedValue !== value || this.hasTrailingZeros(inputValue) || !this.focused) {\n this.setInputValue(value);\n this.setSelection(selectionStart, selectionEnd);\n }\n else {\n this.inputValue = inputValue;\n }\n if (this.isPasted) {\n input.value = this.inputValue;\n }\n this.updateValue(value);\n this.previousSelection = null;\n this.isPasted = false;\n };\n /**\n * @hidden\n */\n this.handleDragEnter = () => {\n if (!this.focused && !this.isDisabled) {\n this.setInputValue(this.value, true);\n }\n };\n /**\n * @hidden\n */\n this.handleMouseDown = () => {\n this.mouseDown = true;\n };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n if (!this.focused) {\n this.focused = true;\n if (!this.isDisabled) {\n const shouldSelectAll = this.selectOnFocus || !this.mouseDown;\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (shouldSelectAll) {\n this.selectAll();\n }\n else {\n this.selectCaret();\n }\n }, 0);\n });\n }\n }\n this.mouseDown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n //blur is thrown before input when dragging the input text in IE\n if (this.inputValue !== this.elementValue) {\n this.handleInput();\n }\n this.setInputValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleKeyDown = (e) => {\n if (this.isDisabled) {\n return;\n }\n let step;\n if (e.keyCode === Keys.ArrowDown) {\n step = -1;\n }\n else if (e.keyCode === Keys.ArrowUp) {\n step = 1;\n }\n if (step && this.step) {\n e.preventDefault();\n this.addStep(step);\n }\n const input = this.numericInput.nativeElement;\n this.previousSelection = {\n end: input.selectionEnd,\n start: input.selectionStart\n };\n this.pressedKey = e.keyCode;\n };\n /**\n * @hidden\n */\n this.handleWheel = (e) => {\n if (this.focused && !this.isDisabled && this.changeValueOnScroll) {\n e.preventDefault();\n const delta = getDeltaFromMouseWheel(e);\n this.addStep(delta);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies the number format which is used when the NumericTextBox is not focused\n * ([see example]({% slug formats_numerictextbox %})).\n * If `format` is set to `null` or `undefined`, the default format will be used.\n */\n get format() {\n const format = this._format;\n return format !== null && format !== undefined ? format : 'n2';\n }\n set format(value) {\n this._format = value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * The size property specifies padding of the NumericTextBox internal input element\n * ([see example]({% slug appearance_numerictextbox %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$6;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the NumericTextBox\n * ([see example]({% slug appearance_numerictextbox %}#toc-rounded)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the NumericTextBox\n * ([see example]({% slug appearance_numerictextbox %}#toc-fillMode)).\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get disableClass() {\n return this.disabled;\n }\n ngOnInit() {\n this.subscriptions = this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n this.ngZone.runOutsideAngular(() => {\n this.domEvents.push(this.renderer.listen(this.hostElement.nativeElement, 'mousewheel', this.handleWheel.bind(this)));\n this.domEvents.push(this.renderer.listen(this.hostElement.nativeElement, 'DOMMouseScroll', this.handleWheel.bind(this)));\n });\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(PARSABLE_OPTIONS, changes, false)) {\n this.parseOptions(PARSABLE_OPTIONS.filter(option => changes[option]));\n }\n this.verifySettings();\n if (anyChanged(['min', 'max', 'rangeValidation'], changes, false)) {\n this.minValidateFn = this.rangeValidation ? createMinValidator(this.min) : noop;\n this.maxValidateFn = this.rangeValidation ? createMaxValidator(this.max) : noop;\n this.ngValidatorChange();\n }\n if (anyChanged(['autoCorrect', 'decimals', 'min'], changes)) {\n delete this.numericRegex;\n }\n if (anyChanged(['value', 'format'], changes, false)) {\n this.verifyValue(this.value);\n this.value = this.restrictModelValue(this.value);\n if (!this.focused || (this.intl.parseNumber(this.elementValue) !== this.value)) {\n this.setInputValue();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.spinTimeout);\n this.domEvents.forEach(unbindHandler => unbindHandler());\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.ngValidatorChange = fn;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n let restrictedValue = this.restrictModelValue(value);\n this.value = restrictedValue;\n this.setInputValue();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * Focuses the NumericTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n invokeElementMethod(this.numericInput, 'focus');\n }\n /**\n * Blurs the NumericTextBox.\n */\n blur() {\n invokeElementMethod(this.numericInput, 'blur');\n }\n /**\n * Notifies the `NumericTextBoxComponent` that the input value should be changed.\n * Can be used to update the input after setting the component properties directly.\n */\n notifyValueChange() {\n this.setInputValue();\n }\n /**\n * @hidden\n */\n get incrementTitle() {\n return this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementTitle() {\n return this.localizationService.get('decrement');\n }\n get decimalSeparator() {\n const numberSymbols = this.intl.numberSymbols();\n return numberSymbols.decimal;\n }\n get elementValue() {\n return this.numericInput.nativeElement.value;\n }\n set elementValue(value) {\n this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);\n }\n get focused() {\n return this.isFocused;\n }\n get hasDecimals() {\n return this.decimals !== null && this.decimals >= 0;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const wrap = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(wrap, FOCUSED$3);\n }\n else {\n this.renderer.removeClass(wrap, FOCUSED$3);\n }\n this.isFocused = value;\n }\n }\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n arrowPress(direction, e) {\n e.preventDefault();\n if (this.isDisabled || isRightClick(e)) {\n return;\n }\n if (!mobileOS) {\n this.focused = true;\n this.focus();\n }\n if (this.arrowDirection !== direction) {\n this.arrowDirection = direction;\n this.changeDetector.detectChanges();\n }\n if (this.step) {\n this.spin(direction, INITIAL_SPIN_DELAY);\n }\n else {\n this.setInputValue();\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n replaceNumpadDotValue() {\n let value = this.inputValue || \"\";\n if (this.previousSelection) {\n const input = this.numericInput.nativeElement;\n const { selectionStart, selectionEnd } = input;\n const { start, end } = this.previousSelection;\n input.value = value = value.substring(0, start) + this.decimalSeparator + value.substring(end);\n this.setSelection(selectionStart, selectionEnd);\n }\n return value;\n }\n isValid(value) {\n if (!this.numericRegex) {\n this.numericRegex = numericRegex({\n autoCorrect: this.autoCorrect,\n decimals: this.decimals,\n min: this.min,\n separator: this.decimalSeparator\n });\n }\n return this.numericRegex.test(value);\n }\n spin(step, timeout) {\n clearTimeout(this.spinTimeout);\n this.spinTimeout = window.setTimeout(() => {\n this.spin(step, SPIN_DELAY);\n }, timeout);\n this.addStep(step);\n }\n addStep(step) {\n let value = add(this.value || 0, this.step * step);\n value = this.limitValue(value);\n value = this.restrictDecimals(value);\n this.setInputValue(value);\n this.updateValue(value);\n }\n setSelection(start, end) {\n if (this.focused) {\n invokeElementMethod(this.numericInput, 'setSelectionRange', start, end);\n }\n }\n limitValue(value) {\n let result = value;\n if (!this.isInRange(value)) {\n if (isNumber(this.max) && value > this.max) {\n result = this.max;\n }\n if (isNumber(this.min) && value < this.min) {\n result = this.min;\n }\n }\n return result;\n }\n limitInputValue(value) {\n let { selectionStart, selectionEnd, value: enteredValue } = this.numericInput.nativeElement;\n let limitedValue = value;\n let selectToEnd = false;\n if (!this.isInRange(value)) {\n const lengthChange = enteredValue.length - String(this.inputValue).length;\n const { min, max } = this;\n const hasMax = isNumber(max);\n const hasMin = isNumber(min);\n let padLimit, replaceNext;\n let correctedValue = value;\n if (selectionStart === 0 && this.inputValue.substr(1) === enteredValue) {\n return {\n selectionEnd: selectionEnd,\n selectionStart: selectionStart,\n value: null\n };\n }\n if (hasMax && value > max) {\n if (value > 0) {\n replaceNext = true;\n }\n else {\n padLimit = max;\n }\n }\n else if (hasMin && value < min) {\n if (value > 0) {\n padLimit = min;\n }\n else {\n replaceNext = true;\n }\n }\n if (padLimit) {\n const paddedValue = this.tryPadValue(value, padLimit);\n if (paddedValue && decimalPart(value) !== decimalPart(padLimit)) {\n correctedValue = paddedValue;\n selectToEnd = true;\n }\n }\n else if (replaceNext) {\n if (this.inputValue && selectionStart !== enteredValue.length) {\n correctedValue = parseFloat(enteredValue.substr(0, selectionStart) +\n enteredValue.substr(selectionStart + lengthChange));\n }\n }\n limitedValue = this.limitValue(correctedValue);\n selectToEnd = (selectToEnd || limitedValue !== correctedValue) && this.previousSelection &&\n (this.previousSelection.end - this.previousSelection.start + lengthChange) > 0;\n }\n return {\n selectionEnd: selectToEnd ? String(limitedValue).length : selectionEnd,\n selectionStart: selectionStart,\n value: limitedValue\n };\n }\n tryPadValue(value, limit) {\n const limitLength = String(Math.floor(limit)).length;\n const zeroPadded = pad(value, limitLength);\n const zeroPaddedNext = pad(value, limitLength + 1);\n let result;\n if (this.isInRange(zeroPadded)) {\n result = zeroPadded;\n }\n else if (this.isInRange(zeroPaddedNext)) {\n result = zeroPaddedNext;\n }\n return result;\n }\n isInRange(value) {\n return !isNumber(value) || ((!isNumber(this.min) || this.min <= value) && (!isNumber(this.max) || value <= this.max));\n }\n restrictModelValue(value) {\n let result = this.restrictDecimals(value, true);\n if (this.autoCorrect && this.limitValue(result) !== result) {\n result = null;\n }\n return result;\n }\n restrictDecimals(value, round) {\n let result = value;\n if (value && this.hasDecimals) {\n const decimals = this.decimals;\n const stringValue = String(value);\n if (round || EXPONENT_REGEX.test(stringValue)) {\n result = toFixedPrecision(value, decimals);\n }\n else {\n const parts = stringValue.split(POINT);\n let fraction = parts[1];\n if (fraction && fraction.length > decimals) {\n fraction = fraction.substr(0, decimals);\n result = parseFloat(`${parts[0]}${POINT}${fraction}`);\n }\n }\n }\n return result;\n }\n formatInputValue(value) {\n let stringValue = Object.is(value, -0) ? '-0' : String(value);\n const exponentMatch = EXPONENT_REGEX.exec(stringValue);\n if (exponentMatch) {\n stringValue = value.toFixed(limitPrecision(parseInt(exponentMatch[1], 10)));\n }\n return stringValue.replace(POINT, this.decimalSeparator);\n }\n formatValue(value, focused) {\n let formattedValue;\n if (value === null || !defined(value) || value === '') {\n formattedValue = '';\n }\n else if (focused && !this.readonly) {\n formattedValue = this.formatInputValue(value);\n }\n else {\n formattedValue = this.intl.formatNumber(value, this.format);\n }\n return formattedValue;\n }\n setInputValue(value = this.value, focused = this.focused) {\n const formattedValue = this.formatValue(value, focused);\n this.elementValue = formattedValue;\n this.inputValue = formattedValue;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.min !== null && this.max !== null && this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (isDevMode() && value && typeof value !== 'number') {\n throw new Error(`The NumericTextBox component requires value of type Number and ${JSON.stringify(value)} was set.`);\n }\n }\n parseOptions(options) {\n for (let idx = 0; idx < options.length; idx++) {\n const name = options[idx];\n const value = this[name];\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n const valid = !isNaN(parsed);\n if (isDevMode() && !valid && value !== '') {\n throw new Error('The NumericTextBox component requires value of type Number or a String representing ' +\n `a number for the ${name} property and ${JSON.stringify(value)} was set.`);\n }\n this[name] = valid ? parsed : PARSABLE_DEFAULTS[name];\n }\n }\n }\n intlChange() {\n delete this.numericRegex;\n if (this.numericInput && (!this.focused || !this.isValid(this.elementValue))) {\n this.setInputValue();\n }\n }\n hasTrailingZeros(inputValue) {\n if (this.hasDecimals && this.focused) {\n const fraction = inputValue.split(this.decimalSeparator)[1];\n return fraction && fraction.length > this.decimals && fraction.lastIndexOf('0') === fraction.length - 1;\n }\n }\n selectAll() {\n this.setInputValue();\n this.setSelection(0, this.inputValue.length);\n }\n selectCaret() {\n const caretPosition = getCaretPosition(this.numericInput.nativeElement);\n const formattedValue = this.elementValue;\n const partialValue = formattedValue.substring(0, caretPosition);\n this.setInputValue();\n if (partialValue.length) {\n const significantCharsInFormattedValue = extractSignificantNumericChars(partialValue, this.decimalSeparator);\n const adjustedSignificantChars = this.adjustSignificantChars(formattedValue, significantCharsInFormattedValue);\n this.setSelection(adjustedSignificantChars, adjustedSignificantChars);\n }\n else {\n this.setSelection(0, 0);\n }\n }\n numberOfLeadingZeroes(formattedValue) {\n const separatorIndex = formattedValue.indexOf(this.decimalSeparator);\n const matchedLeadingZeroes = formattedValue.match(/^[^1-9]*?(0+)/);\n if (matchedLeadingZeroes) {\n const lengthOfMatch = matchedLeadingZeroes[0].length;\n const lengthOfLeadingZeroesMatch = matchedLeadingZeroes[1].length;\n return lengthOfMatch === separatorIndex ? lengthOfLeadingZeroesMatch - 1 : lengthOfLeadingZeroesMatch;\n }\n return 0;\n }\n adjustSignificantChars(formattedValue, significantChars) {\n const leadingZeroes = this.numberOfLeadingZeroes(formattedValue);\n if (leadingZeroes > 0) {\n return Math.max(0, significantChars - leadingZeroes);\n }\n return significantChars;\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nNumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$2.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", autoCorrect: \"autoCorrect\", format: \"format\", max: \"max\", min: \"min\", decimals: \"decimals\", placeholder: \"placeholder\", step: \"step\", spinners: \"spinners\", rangeValidation: \"rangeValidation\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", changeValueOnScroll: \"changeValueOnScroll\", selectOnFocus: \"selectOnFocus\", value: \"value\", maxlength: \"maxlength\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-disabled\": \"this.disableClass\", \"class.k-input\": \"this.hostClasses\", \"class.k-numerictextbox\": \"this.hostClasses\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }\n ], viewQueries: [{ propertyName: \"numericInput\", first: true, predicate: [\"numericInput\"], descendants: true, static: true }], exportAs: [\"kendoNumericTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: \"[kendoNumericTextBoxLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoNumericTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }\n ],\n selector: 'kendo-numerictextbox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$2.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], format: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], decimals: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], step: [{\n type: Input\n }], spinners: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], changeValueOnScroll: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], value: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], numericInput: [{\n type: ViewChild,\n args: ['numericInput', { static: true }]\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disableClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-numerictextbox']\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass NumericTextBoxCustomMessagesComponent extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nNumericTextBoxCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericTextBoxCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\", providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent)\n }\n ],\n selector: 'kendo-numerictextbox-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nvar ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n // eslint-disable-next-line id-denylist\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nclass Result {\n constructor(value, rest, type = ResultType.Undefined) {\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(fn) {\n return new Result(fn(this.value), this.rest);\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(fn) {\n return fn(this.value, this.rest);\n }\n fold(s, _ /*we don't need it*/) {\n return s(this.value, this.rest);\n }\n concat(r) {\n return this.map((vs, _) => r.chain((v, __) => vs.concat([v])));\n }\n toString() {\n return `Result({ value: '${this.value}', rest: ${this.rest} })`;\n }\n}\n\n/**\n * @hidden\n */\nclass Stream {\n constructor(input = [], control = []) {\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n eof() {\n return this.inputCursor >= this.input.length;\n }\n // Get the first value from the input.\n next() {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n }\n peek() {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n }\n eat_input() {\n this.inputCursor++;\n }\n eat_control() {\n this.controlCursor++;\n }\n eat() {\n this.inputCursor++;\n this.controlCursor++;\n }\n}\n\nconst toArray = (value) => (value || '').split('');\nconst ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nclass Parser {\n constructor(parse) {\n this.parse = parse;\n }\n run(input, control = '') {\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(f) {\n return new Parser(stream => this.parse(stream).map(f));\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(f) {\n return new Parser(stream => this.parse(stream).chain((v, s) => f(v).run(s)));\n }\n isLiteral(c) {\n return this.run(c).type === ResultType.Literal;\n }\n}\n/**\n * @hidden\n */\nconst mask = ({ prompt, promptPlaceholder }) => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n});\n/**\n * @hidden\n */\nconst literal = _token => new Parser(stream => {\n // let {char, control} = stream.peek();\n let char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n});\n/**\n * @hidden\n */\nconst unmask = prompt => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n});\n/**\n * @hidden\n */\nconst unliteral = _token => new Parser(stream => {\n if (stream.eof()) {\n return new Result('', stream);\n }\n const { char } = stream.peek();\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n});\n/**\n * @hidden\n */\nconst token = (rules, creator) => new Parser(stream => {\n let { char } = stream.next();\n const rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n});\n/**\n * @hidden\n */\nconst rawMask = ({ prompt, promptPlaceholder }) => new Parser(stream => {\n let { char } = stream.next();\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n});\n/**\n * @hidden\n */\nconst rawLiteral = includeLiterals => new Parser(stream => {\n let { char } = stream.next();\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n});\n\n/**\n * @hidden\n */\nconst always = value => new Parser(stream => new Result(value, stream));\n/**\n * @hidden\n */\nconst append = (p1, p2) => p1.chain(vs => p2.map(v => vs.concat([v])));\n/**\n * @hidden\n */\nconst sequence = list => list.reduce((acc, parser) => append(acc, parser), always([]));\n/**\n * @hidden\n */\nconst greedy = parser => new Parser(stream => {\n let result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n});\n\n/**\n * @hidden\n */\nclass MaskingService {\n constructor() {\n this.rules = {};\n this.prompt = \"_\";\n this.mask = \"\";\n this.promptPlaceholder = \" \";\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n update({ mask = '', prompt = '', promptPlaceholder = ' ', rules = {}, includeLiterals = false }) {\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n }\n validationValue(maskedValue = '') {\n let value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n rawValue(maskedValue = '') {\n let value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n /**\n * @hidden\n */\n maskRaw(rawValue = '') {\n let value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(masked => {\n value = masked.join('');\n });\n return value;\n }\n maskInput(input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n }\n maskInRange(pasted, oldValue, start, end) {\n let value = '';\n let selection = end;\n const beforeChange = oldValue.split('').slice(0, start);\n const afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(masked => {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection,\n value\n };\n }\n maskRemoved(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const unchanged = input.split('').slice(splitPoint);\n const changed = input.split('').slice(0, splitPoint).join('');\n const take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(masked => {\n selection = this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection,\n value\n };\n }\n adjustPosition(input, selection) {\n const caretChar = input[selection];\n const isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n }\n maskInserted(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(unmasked => {\n selection = unmasked.join('').length;\n const unchanged = control.slice(selection);\n return sequence(this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(masked => {\n value = masked.join('');\n });\n return {\n selection,\n value\n };\n }\n get maskTokenCreator() {\n const { prompt, promptPlaceholder } = this;\n return {\n literal: rule => literal(rule),\n mask: rule => mask({ prompt, promptPlaceholder })(rule)\n };\n }\n get unmaskTokenCreator() {\n return {\n literal: rule => unliteral(rule),\n mask: rule => unmask(this.prompt)(rule)\n };\n }\n get rawTokenCreator() {\n const { prompt, promptPlaceholder, includeLiterals } = this;\n return {\n literal: _ => rawLiteral(includeLiterals),\n mask: _ => rawMask({ prompt, promptPlaceholder })\n };\n }\n get validationTokenCreator() {\n const { prompt } = this;\n return {\n literal: _ => rawLiteral(false),\n mask: _ => rawMask({ prompt, promptPlaceholder: '' })\n };\n }\n tokenize() {\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.validationTokens = tokens;\n });\n }\n}\nMaskingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMaskingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService, decorators: [{\n type: Injectable\n }] });\n\nconst resolvedPromise = Promise.resolve(null);\nconst FOCUSED$2 = 'k-focus';\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI MaskedTextBox component for Angular]({% slug overview_maskedtextbox %}).\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public value: string = \"9580128055807792\";\n * public mask: string = \"0000-0000-0000-0000\";\n * }\n * ```\n */\nclass MaskedTextBoxComponent {\n constructor(service, renderer, hostElement, ngZone, injector, changeDetector, rtl) {\n this.service = service;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.injector = injector;\n this.changeDetector = changeDetector;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the MaskedTextBox is disabled ([see example]({% slug disabled_maskedtextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the MaskedTextBox is in its read-only state ([see example]({% slug readonly_maskedtextbox %})).\n */\n this.readonly = false;\n /**\n * Represents a prompt character for the masked value.\n * @default `_`\n */\n this.prompt = '_';\n /**\n * Indicates a character which represents an empty position in the raw value.\n * @default ' '\n */\n this.promptPlaceholder = ' ';\n /**\n * Indicates whether to include literals in the raw value ([see example]({% slug value_maskedtextbox %})).\n * @default false\n */\n this.includeLiterals = false;\n /**\n * Specifies if the mask should be shown on focus for empty value.\n */\n this.maskOnFocus = false;\n /**\n * Determines whether the built-in mask validator is enforced when a form is validated\n * ([see example]({% slug validation_maskedtextbox %})).\n * @default true\n */\n this.maskValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value changes.\n */\n this.valueChange = new EventEmitter();\n this.hostClasses = true;\n this.focusClick = false;\n this.defaultRules = {\n \"#\": /[\\d\\s\\+\\-]/,\n \"&\": /[\\S]/,\n \"0\": /[\\d]/,\n \"9\": /[\\d\\s]/,\n \"?\": /[a-zA-Z\\s]/,\n \"A\": /[a-zA-Z0-9]/,\n \"C\": /./,\n \"L\": /[a-zA-Z]/,\n \"a\": /[a-zA-Z0-9\\s]/\n };\n this.isPasted = false;\n this.selection = [0, 0];\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleFocus = () => {\n this.focused = true;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.service.maskRaw(this.value));\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => { this.setSelection(0, 0); }, 0);\n });\n }\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleClick = () => {\n if (this.focused && !this.focusClick) {\n this.focusClick = true;\n const { selectionStart, selectionEnd } = this.input.nativeElement;\n if (selectionStart === selectionEnd) {\n this.setFocusSelection();\n }\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n this.focusClick = false;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.maskedValue);\n }\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onTouched();\n this.onBlur.emit();\n });\n }\n };\n this.onChange = (_) => { };\n this.onTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = rtl ? 'rtl' : 'ltr';\n this.updateService();\n }\n /**\n * The size property specifies the padding of the MaskedTextBox internal input element\n * ([see example]({% slug appearance_maskedtextbox %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the MaskedTextBox\n * ([see example]({% slug appearance_maskedtextbox %}#toc-rounded)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the MaskedTexBox\n * ([see example]({% slug appearance_maskedtextbox %}#toc-fillMode)).\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Exposes the RegExp-based mask validation array ([see example]({% slug masks_maskedtextbox %})).\n */\n set rules(value) {\n this._rules = Object.assign({}, this.defaultRules, value);\n }\n get rules() {\n return this._rules || this.defaultRules;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n ngOnInit() {\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the MaskedTextBox is empty.\n */\n isEmpty() {\n if (this.input) {\n return !Boolean(this.input.nativeElement.value);\n }\n }\n /**\n * @hidden\n */\n handleDragDrop() {\n return false;\n }\n /**\n * Focuses the MaskedTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.focus();\n this.setFocusSelection();\n }\n /**\n * Blurs the MaskedTextBox.\n */\n blur() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.blur();\n }\n /**\n * @hidden\n */\n pasteHandler(e) {\n const { selectionStart, selectionEnd } = e.target;\n if (selectionEnd === selectionStart) {\n return;\n }\n this.isPasted = true;\n this.selection = [selectionStart, selectionEnd];\n }\n /**\n * @hidden\n */\n inputHandler(e) {\n const value = e.target.value;\n const [start, end] = this.selection;\n if (!this.mask) {\n this.updateValueWithEvents(value);\n this.isPasted = false;\n return;\n }\n let result;\n if (this.isPasted) {\n this.isPasted = false;\n const rightPart = this.maskedValue.length - end;\n const to = value.length - rightPart;\n result = this.service.maskInRange(value.slice(start, to), this.maskedValue, start, end);\n }\n else {\n result = this.service.maskInput(value, this.maskedValue || '', e.target.selectionStart);\n }\n this.updateInput(result.value, result.selection);\n this.updateValueWithEvents(result.value);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.value) {\n this.value = this.normalizeValue();\n }\n if (!this.mask) {\n this.updateInput(this.value);\n return;\n }\n const next = this.extractChanges(changes);\n this.updateService(next);\n const maskedValue = this.service.maskRaw(this.value);\n this.updateInput(maskedValue, null, true);\n if (changes.includeLiterals || isChanged('promptPlaceholder', changes)) {\n resolvedPromise.then(() => {\n this.updateValueWithEvents(this.maskedValue);\n });\n }\n }\n /**\n * @hidden\n * Writes a new value to the element.\n */\n writeValue(value) {\n this.value = this.normalizeValue(value);\n this.updateInput(this.service.maskRaw(this.value));\n if (this.includeLiterals) {\n this.updateValue(this.maskedValue);\n }\n }\n /**\n * @hidden\n * Sets the function that will be called when a `change` event is triggered.\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * @hidden\n * Sets the function that will be called when a `touch` event is triggered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n validate(_) {\n if (this.maskValidation === false || !this.mask) {\n return null;\n }\n if (!this.service.validationValue(this.maskedValue)) {\n return null;\n }\n if (this.maskedValue.indexOf(this.prompt) !== -1) {\n return {\n patternError: {\n mask: this.mask,\n maskedValue: this.maskedValue,\n value: this.value\n }\n };\n }\n return null;\n }\n /**\n * @hidden\n */\n updateValueWithEvents(maskedValue) {\n this.updateValue(maskedValue);\n if (hasObservers(this.valueChange)) {\n this.valueChange.emit(this.value);\n }\n }\n updateValue(value) {\n if (this.mask && !this.service.validationValue(value) && !this.includeLiterals) {\n this.value = '';\n }\n else {\n this.value = this.service.rawValue(value);\n }\n this.onChange(this.value);\n }\n updateInput(maskedValue = '', selection, isFromOnChanges) {\n if (isFromOnChanges && maskedValue === this.maskedValue) {\n return;\n }\n this.maskedValue = maskedValue;\n const value = this.maskOnFocus && !this.focused && this.emptyMask ? '' : maskedValue;\n this.renderer.setProperty(this.input.nativeElement, \"value\", value);\n if (selection !== undefined) {\n this.setSelection(selection, selection);\n }\n }\n extractChanges(changes) {\n return Object.keys(changes).filter(key => key !== 'rules').reduce((obj, key) => {\n obj[key] = changes[key].currentValue;\n return obj;\n }, {});\n }\n updateService(extra) {\n const config = Object.assign({\n includeLiterals: this.includeLiterals,\n mask: this.mask,\n prompt: this.prompt,\n promptPlaceholder: this.promptPlaceholder,\n rules: this.rules\n }, extra);\n this.service.update(config);\n }\n setSelection(start = this.selection[0], end = this.selection[1]) {\n if (this.focused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n get emptyMask() {\n return this.service.maskRaw() === this.maskedValue;\n }\n setFocusSelection() {\n const selectionStart = this.input.nativeElement.selectionStart;\n const index = this.maskedValue ? this.maskedValue.indexOf(this.prompt) : 0;\n if (index >= 0 && index < selectionStart) {\n this.selection = [index, index];\n this.setSelection();\n }\n }\n get focused() {\n return this.isFocused;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(element, FOCUSED$2);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$2);\n }\n this.isFocused = value;\n }\n }\n normalizeValue(value = this.value) {\n const present = isPresent(value);\n if (present && typeof value !== 'string') {\n if (isDevMode()) {\n throw new Error('The MaskedTextBox component supports only string values.');\n }\n return String(value);\n }\n return present ? value : '';\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nMaskedTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxComponent, deps: [{ token: MaskingService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MaskedTextBoxComponent, selector: \"kendo-maskedtextbox\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", mask: \"mask\", value: \"value\", rules: \"rules\", prompt: \"prompt\", promptPlaceholder: \"promptPlaceholder\", includeLiterals: \"includeLiterals\", maskOnFocus: \"maskOnFocus\", maskValidation: \"maskValidation\", tabindex: \"tabindex\", tabIndex: \"tabIndex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { listeners: { \"paste\": \"pasteHandler($event)\", \"input\": \"inputHandler($event)\" }, properties: { \"attr.dir\": \"this.direction\", \"class.k-input\": \"this.hostClasses\", \"class.k-maskedtextbox\": \"this.hostClasses\", \"class.k-disabled\": \"this.hostDisabledClass\" } }, providers: [\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent)\n }\n ], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], exportAs: [\"kendoMaskedTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMaskedTextBox',\n providers: [\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent)\n }\n ],\n selector: 'kendo-maskedtextbox',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: MaskingService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], mask: [{\n type: Input\n }], value: [{\n type: Input\n }], rules: [{\n type: Input\n }], prompt: [{\n type: Input\n }], promptPlaceholder: [{\n type: Input\n }], includeLiterals: [{\n type: Input\n }], maskOnFocus: [{\n type: Input\n }], maskValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-maskedtextbox']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], pasteHandler: [{\n type: HostListener,\n args: ['paste', ['$event']]\n }], inputHandler: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass SlidersCommonModule {\n}\nSlidersCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSlidersCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, declarations: [SliderTicksComponent,\n LabelTemplateDirective], imports: [CommonModule, DraggableModule, EventsModule, ResizeSensorModule], exports: [LabelTemplateDirective,\n SliderTicksComponent,\n DraggableModule,\n EventsModule,\n ResizeSensorModule] });\nSlidersCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, imports: [[CommonModule, DraggableModule, EventsModule, ResizeSensorModule], DraggableModule,\n EventsModule,\n ResizeSensorModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SliderTicksComponent,\n LabelTemplateDirective\n ],\n exports: [\n LabelTemplateDirective,\n SliderTicksComponent,\n DraggableModule,\n EventsModule,\n ResizeSensorModule\n ],\n imports: [CommonModule, DraggableModule, EventsModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SliderCustomMessagesComponent extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSliderCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSliderCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderCustomMessagesComponent, selector: \"kendo-slider-messages\", providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent)\n }\n ],\n selector: 'kendo-slider-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Slider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { SliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, SliderModule], // import Slider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass SliderModule {\n}\nSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, declarations: [SliderComponent,\n SliderCustomMessagesComponent,\n LocalizedSliderMessagesDirective], imports: [CommonModule, SlidersCommonModule], exports: [SliderComponent,\n SliderCustomMessagesComponent,\n LabelTemplateDirective,\n LocalizedSliderMessagesDirective] });\nSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, imports: [[CommonModule, SlidersCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LocalizedSliderMessagesDirective\n ],\n exports: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LabelTemplateDirective,\n LocalizedSliderMessagesDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass RangeSliderCustomMessagesComponent extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nRangeSliderCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRangeSliderCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderCustomMessagesComponent, selector: \"kendo-rangeslider-messages\", providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent)\n }\n ],\n selector: 'kendo-rangeslider-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RangeSlider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { RangeSliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, RangeSliderModule], // import RangeSlider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RangeSliderModule {\n}\nRangeSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRangeSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, declarations: [RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective], imports: [CommonModule, SlidersCommonModule], exports: [RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective,\n LabelTemplateDirective] });\nRangeSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, imports: [[CommonModule, SlidersCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective\n ],\n exports: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective,\n LabelTemplateDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SwitchCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSwitchCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSwitchCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SwitchCustomMessagesComponent, selector: \"kendo-switch-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent)\n }\n ],\n selector: 'kendo-switch-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Switch component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Switch module\n * import { SwitchModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, SwitchModule], // import Switch module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass SwitchModule {\n}\nSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, declarations: [SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective], imports: [CommonModule, EventsModule, ResizeSensorModule], exports: [SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective] });\nSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, imports: [[CommonModule, EventsModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n exports: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n imports: [CommonModule, EventsModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the NumericTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the NumericTextBox module\n * import { NumericTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NumericTextBoxModule], // import NumericTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass NumericTextBoxModule {\n}\nNumericTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNumericTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, declarations: [LocalizedNumericTextBoxMessagesDirective,\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule], exports: [NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent] });\nNumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n LocalizedNumericTextBoxMessagesDirective,\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n exports: [\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the MaskedTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MaskedTextBox module\n * import { MaskedTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MaskedTextBoxModule], // import MaskedTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass MaskedTextBoxModule {\n}\nMaskedTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule, EventsModule], exports: [MaskedTextBoxComponent] });\nMaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MaskedTextBoxComponent],\n exports: [MaskedTextBoxComponent],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * @hidden\n *\n * Returns true if the used browser is Safari.\n */\nconst isSafari = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.safari) || (mobileOS && mobileOS.browser === 'mobilesafari');\n};\n/**\n * @hidden\n *\n * Checks if input is Japanese IME\n */\nconst isJapanese = (input) => {\n const japaneseRegex = /[\\u3000-\\u303F]|[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\uFF00-\\uFFEF]|[\\u4E00-\\u9FAF]|[\\u2605-\\u2606]|[\\u2190-\\u2195]|\\u203B/g;\n return japaneseRegex.test(input);\n};\n\n/**\n * Specifies the adornments in the suffix container ([see examples]({% slug adornments_textbox %}#toc-suffixadornments)).\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextBoxSuffixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTextBoxSuffixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxSuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxSuffixTemplateDirective, selector: \"[kendoTextBoxSuffixTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxSuffixTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxSuffixTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Specifies the adornments in the prefix container ([see examples]({% slug adornments_textbox %}#toc-prefixadornments)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextBoxPrefixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTextBoxPrefixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxPrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxPrefixTemplateDirective, selector: \"[kendoTextBoxPrefixTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxPrefixTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxPrefixTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass TextBoxMessages extends ComponentMessages {\n}\nTextBoxMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTextBoxMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxMessages, selector: \"kendo-textbox-messages-base\", inputs: { clear: \"clear\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-textbox-messages-base'\n }]\n }], propDecorators: { clear: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedTextBoxMessagesDirective extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedTextBoxMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTextBoxMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedTextBoxMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedTextBoxMessagesDirective, selector: \"[kendoTextBoxLocalizedMessages]\", providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTextBoxMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective)\n }\n ],\n selector: '[kendoTextBoxLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FOCUSED$1 = 'k-focus';\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\nclass TextBoxComponent {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the `title` attribute of the `input` element of the TextBox.\n */\n this.title = '';\n /**\n * Sets the disabled state of the component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the `tabindex` of the TextBox.\n *\n * @default 0\n */\n this.tabindex = 0;\n /**\n * Provides a value for the TextBox.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextBox is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Specifies when the Success icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * `boolean`—The Success icon is displayed, if the condition given by the developer is met.\n *\n * `initial`—The Success icon will be displayed when the component state is neither `invalid` nor `touched` or `dirty`.\n *\n * @default false\n */\n this.showSuccessIcon = false;\n /**\n * Specifies when the Error icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * * `initial`—The Error icon will be displayed when the component state is\n * `invalid` and `touched` or `dirty`.\n * * `boolean`—The Error icon is displayed, if the condition given by the developer is met.\n *\n * @default false\n */\n this.showErrorIcon = false;\n /**\n * Specifies whether a Clear button will be rendered.\n *\n * @default false\n */\n this.clearButton = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_textbox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the TextBox component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is isFocused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextBox component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically || (this.focusChangedProgrammatically && this.clearButtonClicked)) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n const target = ev.target;\n const isBrowserSafari = isSafari(navigator.userAgent);\n const incomingValue = isBrowserSafari && isJapanese(target.value) ? ev.data : target.value;\n const [caretStart, caretEnd] = [target.selectionStart, target.selectionEnd];\n this.updateValue(incomingValue);\n if (isBrowserSafari) {\n target.setSelectionRange(caretStart, caretEnd);\n }\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the padding of the TextBox internal input element\n * ([see example]({% slug appearance_textbox %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the TextBox\n * ([see example]({% slug appearance_textbox %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the TextBox\n * ([see example]({% slug appearance_textbox %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n this.checkClearButton();\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper && !this.clearButtonClicked) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled || changes.readonly || changes.value) {\n this.checkClearButton();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * Focuses the TextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextBox.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n /**\n * @hidden\n */\n clearTitle() {\n return this.localizationService.get('clear');\n }\n /**\n * @hidden\n */\n checkClearButton() {\n this.showClearButton =\n !this.disabled &&\n !this.readonly &&\n this.clearButton &&\n !!this.value;\n }\n /**\n * @hidden\n */\n clearValue(ev) {\n if (ev) {\n ev.preventDefault();\n }\n this.clearButtonClicked = true;\n this.input.nativeElement.value = '';\n this.input.nativeElement.focus();\n this.updateValue('');\n this.checkClearButton();\n this.clearButtonClicked = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.checkClearButton();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n /**\n * @hidden\n */\n showSuccessInitial() {\n if (!this.control) {\n return false;\n }\n const { valid, dirty, touched } = this.control;\n return valid && (dirty || touched);\n }\n /**\n * @hidden\n */\n get successIconClasses() {\n return this.successIcon\n ? `${this.successIcon}`\n : `k-input-validation-icon k-icon k-i-check`;\n }\n /**\n * @hidden\n */\n get errorIconClasses() {\n return this.errorIcon\n ? `${this.errorIcon}`\n : `k-input-validation-icon k-icon k-i-warning`;\n }\n /**\n * @hidden\n */\n get clearButtonClasses() {\n return this.clearButtonIcon\n ? this.clearButtonIcon\n : `k-icon k-i-x`;\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrorIcon === 'initial'\n ? this.showErrorsInitial()\n : this.showErrorIcon;\n }\n /**\n * @hidden\n */\n get isSuccessful() {\n return this.showSuccessIcon === 'initial'\n ? this.showSuccessInitial()\n : this.showSuccessIcon;\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.checkClearButton();\n this.changeDetector.markForCheck();\n });\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED$1);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$1);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxComponent, selector: \"kendo-textbox\", inputs: { focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", value: \"value\", selectOnFocus: \"selectOnFocus\", showSuccessIcon: \"showSuccessIcon\", showErrorIcon: \"showErrorIcon\", clearButton: \"clearButton\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", clearButtonIcon: \"clearButtonIcon\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", tabIndex: \"tabIndex\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", inputFocus: \"inputFocus\", inputBlur: \"inputBlur\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\", \"class.k-textbox\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }\n ], queries: [{ propertyName: \"suffixTemplate\", first: true, predicate: TextBoxSuffixTemplateDirective, descendants: true }, { propertyName: \"prefixTemplate\", first: true, predicate: TextBoxPrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], exportAs: [\"kendoTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedTextBoxMessagesDirective, selector: \"[kendoTextBoxLocalizedMessages]\" }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }\n ],\n selector: 'kendo-textbox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], value: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], showSuccessIcon: [{\n type: Input\n }], showErrorIcon: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], clearButtonIcon: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], inputFocus: [{\n type: Output\n }], inputBlur: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], suffixTemplate: [{\n type: ContentChild,\n args: [TextBoxSuffixTemplateDirective, { static: false }]\n }], prefixTemplate: [{\n type: ContentChild,\n args: [TextBoxPrefixTemplateDirective, { static: false }]\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass TextBoxCustomMessagesComponent extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTextBoxCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTextBoxCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxCustomMessagesComponent, selector: \"kendo-textbox-messages\", providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent)\n }\n ],\n selector: 'kendo-textbox-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass InputSeparatorComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nInputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nInputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: InputSeparatorComponent, selector: \"kendo-input-separator, kendo-textbox-separator\", host: { properties: { \"class.k-input-separator\": \"this.hostClass\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputSeparatorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-input-separator, kendo-textbox-separator',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-separator']\n }] } });\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n InputSeparatorComponent,\n TextAreaDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,\n TextAreaDirective], exports: [InputSeparatorComponent,\n TextAreaDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextBox module\n * import { TextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextBoxModule], // import TextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass TextBoxModule {\n}\nTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, declarations: [TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule], exports: [TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective] });\nTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective\n ],\n exports: [\n TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * Sets the `title` attribute of the internal textarea input element of the component.\n */\n this.title = '';\n /**\n * Sets the disabled state of the TextArea component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TextArea component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Provides a value for the TextArea component.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextArea is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Fires each time the user focuses the internal textarea element of the component.\n * This event is useful when you need to distinguish between focusing the textarea element and focusing one of its adornments.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the internal textarea element gets blurred.\n * This event is useful when adornments are used, in order to distinguish between blurring the textarea element and blurring the whole TextArea component.\n */\n this.inputBlur = new EventEmitter();\n this.subscriptions = new Subscription();\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n}\nTextFieldsBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextFieldsBase, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextFieldsBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextFieldsBase, selector: \"kendo-textfield-base\", inputs: { title: \"title\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", selectOnFocus: \"selectOnFocus\", placeholder: \"placeholder\" }, outputs: { inputFocus: \"inputFocus\", inputBlur: \"inputBlur\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\", \"attr.dir\": \"this.direction\" } }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextFieldsBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-textfield-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], value: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], inputFocus: [{\n type: Output\n }], inputBlur: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nconst resizeClasses = {\n 'vertical': 'k-resize-vertical',\n 'horizontal': 'k-resize-horizontal',\n 'both': 'k-resize-both',\n 'none': 'k-resize-none',\n 'auto': 'k-resize-none'\n};\nconst FOCUSED = 'k-focus';\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the [Kendo UI TextArea component for Angular]({% slug overview_textarea %}).\n */\nclass TextAreaComponent extends TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n super(localizationService, ngZone, changeDetector, renderer, injector, hostElement);\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.hostClasses = true;\n /**\n * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify\n * their position in relation to the textarea element.\n *\n * The possible values are:\n * * `vertical`(Default) —TextArea sections are placed from top to bottom.\n * * `horizontal`—TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.\n */\n this.flow = 'vertical';\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Configures the resize behavior of the TextArea.\n *\n * The possible values are:\n * * `vertical`(Default)—The TextArea component can be resized only vertically.\n * * `horizontal`—The TextArea component can be resized only horizontally.\n * * `both`—The TextArea component can be resized in both (horizontal and vertical) directions.\n * * `auto`—Specifies whether the TextArea component will adjust its height automatically, based on the content.\n * * `none`—The TextArea cannot be resized.\n *\n */\n this.resizable = 'vertical';\n /**\n * Fires each time the user focuses the TextArea component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is focused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextArea component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed or the component is blurred\n * ([see example]({% slug overview_textarea %}#toc-events)).\n * When the component value is changed programmatically or via its form control binding, the valueChange event is not emitted.\n */\n this.valueChange = new EventEmitter();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n let incomingValue = ev.target.value;\n this.updateValue(incomingValue);\n this.resize();\n };\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get flowCol() {\n return this.flow === 'vertical';\n }\n get flowRow() {\n return this.flow === 'horizontal';\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * The size property specifies the padding of the internal textarea element\n * ([see example]({% slug appearance_textarea %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the TextArea\n * ([see example]({% slug appearance_textarea %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the TextArea\n * ([see example]({% slug appearance_textarea %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n this.handleFlow();\n });\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n if (isDocumentAvailable() && this.resizable === 'auto') {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngOnChanges(changes) {\n const hostElement = this.hostElement.nativeElement;\n const element = this.input.nativeElement;\n if (changes.flow) {\n this.handleFlow();\n }\n if (changes.resizable) {\n if (this.resizable === 'auto') {\n this.renderer.removeClass(element, '\\!k-overflow-y-auto');\n this.initialHeight = element.offsetHeight;\n }\n else {\n this.renderer.addClass(element, '\\!k-overflow-y-auto');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n if (changes.cols) {\n if (isPresent(changes.cols.currentValue)) {\n this.renderer.setStyle(hostElement, 'width', 'auto');\n }\n else {\n this.renderer.removeStyle(hostElement, 'width');\n }\n }\n }\n ngAfterViewChecked() {\n this.resize();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get resizableClass() {\n return resizeClasses[this.resizable];\n }\n /**\n * Focuses the TextArea component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextArea component.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n resize() {\n if (this.resizable !== 'auto') {\n return;\n }\n const element = this.input.nativeElement;\n this.renderer.setStyle(element, 'height', `${this.initialHeight}px`);\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED);\n }\n else {\n this.renderer.removeClass(element, FOCUSED);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleFlow() {\n const isVertical = this.flow === 'vertical';\n const hostElement = this.hostElement.nativeElement;\n const element = this.input.nativeElement;\n const suffix = hostElement.children[1];\n this.renderer[isVertical ? 'addClass' : 'removeClass'](element, '\\!k-flex-none');\n if (suffix) {\n this.renderer[isVertical ? 'removeClass' : 'addClass'](suffix, '\\!k-align-items-start');\n }\n }\n}\nTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaComponent, selector: \"kendo-textarea\", inputs: { focusableId: \"focusableId\", flow: \"flow\", rows: \"rows\", cols: \"cols\", maxlength: \"maxlength\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", resizable: \"resizable\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"class.k-textarea\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.!k-flex-col\": \"this.flowCol\", \"class.!k-flex-row\": \"this.flowRow\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }\n ], exportAs: [\"kendoTextArea\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextArea',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }\n ],\n selector: 'kendo-textarea',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], flowCol: [{\n type: HostBinding,\n args: ['class.\\!k-flex-col']\n }], flowRow: [{\n type: HostBinding,\n args: ['class.\\!k-flex-row']\n }], flow: [{\n type: Input\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], resizable: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextAreaSuffixComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nTextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaSuffixComponent, selector: \"kendo-textarea-suffix\", host: { properties: { \"class.k-input-suffix\": \"this.hostClass\" } }, exportAs: [\"kendoTextAreaSuffix\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextAreaSuffix',\n selector: 'kendo-textarea-suffix',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-suffix']\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextArea component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextArea module\n * import { TextAreaModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextAreaModule], // import TextArea module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass TextAreaModule {\n}\nTextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, declarations: [TextAreaComponent,\n TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule], exports: [TextAreaComponent,\n EventsModule,\n TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective] });\nTextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TextAreaComponent,\n TextAreaSuffixComponent\n ],\n exports: [\n TextAreaComponent,\n EventsModule,\n TextAreaSuffixComponent,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }] });\n\n// eslint-disable max-line-length\n/**\n * @hidden\n */\nconst PALETTEPRESETS = {\n basic: {\n colors: '000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7',\n columns: 10\n },\n office: {\n colors: 'ffffff, 000000, e6e6e6, 435569, 4371c4, ed7e32, a5a4a5, febf04, 5a9bd5, 71ae48, f2f2f3, 7f7f7f, d1cece, d5dde3, dae1f4, fce5d4, deeded, fff2cc, deeaf6, e1efd9, d7d8d8, 585959, aeabab, adbaca, b4c5e7, f6caac, dbdbdb, ffe498, bcd6ee, c5e0b2, bfbfc0, 3f3f3f, 767070, 8595b1, 8fabdb, f5b183, c9c8c9, fed965, 9bc4e5, a8d08d, a5a5a6, 262625, 393939, 334050, 2e5496, c45a11, 7b7b7a, bf9000, 2f75b5, 548235, 7f7f7f, 0b0c0c, 161616, 222a34, 203764, 843d0b, 525252, 7f6000, 1d4d79, 375623',\n columns: 10\n },\n apex: {\n colors: 'ffffff, 000000, c9c2d1, 69676d, ceb966, 9cb084, 6bb1c9, 6585cf, 7e6bc9, a379bb, f2f2f2, 7f7f7f, f4f2f5, e0e0e2, f5f1e0, ebefe6, e1eff4, e0e6f5, e5e1f4, ece4f1, d8d8d8, 595959, e9e6ec, c2c1c5, ebe3c1, d7dfcd, c3dfe9, c1ceeb, cbc3e9, dac9e3, bfbfbf, 3f3f3f, dedae3, a4a3a8, e1d5a3, c3cfb5, a6d0de, a2b5e2, b1a6de, c7aed6, a5a5a5, 262626, 9688a5, 4e4d51, ae9638, 758c5a, 3d8da9, 365bb0, 533da9, 7d4d99, 7f7f7f, 0c0c0c, 635672, 343336, 746425, 4e5d3c, 295e70, 243c75, 372970, 533366',\n columns: 10\n },\n austin: {\n colors: 'ffffff, 000000, caf278, 3e3d2d, 94c600, 71685a, ff6700, 909465, 956b43, fea022, f2f2f2, 7f7f7f, f4fce4, dddcd0, efffc0, e3e1dc, ffe0cb, e8e9df, ece1d6, feecd2, d8d8d8, 595959, e9f9c9, bbb9a1, dfff82, c8c3ba, ffc299, d2d4c0, dac3ad, fed9a6, bfbfbf, 3f3f3f, dff7ae, ada598, cfff43, ada598, ffa365, bcbfa1, c8a585, fec67a, a5a5a5, 262626, a9ea25, 2e2d21, 6f9400, 544e43, bf4d00, 6c6f4b, 6f5032, d77b00, 7f7f7f, 0c0c0c, 74a50f, 1f1e16, 4a6300, 38342d, 7f3300, 484a32, 4a3521, 8f5200',\n columns: 10\n },\n clarity: {\n colors: 'ffffff, 292934, f3f2dc, d2533c, 93a299, ad8f67, 726056, 4c5a6a, 808da0, 79463d, f2f2f2, e7e7ec, e7e5b9, f6dcd8, e9ecea, eee8e0, e4dedb, d8dde3, e5e8ec, e9d6d3, d8d8d8, c4c4d1, d5d185, edbab1, d3d9d6, ded2c2, c9beb8, b2bcc8, ccd1d9, d3aea7, bfbfbf, 8a8aa3, aca73b, e4978a, bec7c1, cdbba3, af9e94, 8c9bac, b2bac6, bd857c, a5a5a5, 56566e, 56531d, a43925, 6b7c72, 866b48, 554840, 39434f, 5c697b, 5a342d, 7f7f7f, 3b3b4b, 22210b, 6d2619, 47534c, 594730, 39302b, 262d35, 3d4652, 3c231e',\n columns: 10\n },\n slipstream: {\n colors: 'ffffff, 000000, b4dcfa, 212745, 4e67c8, 5eccf3, a7ea52, 5dceaf, ff8021, f14124, f2f2f2, 7f7f7f, 8bc9f7, c7cce4, dbe0f4, def4fc, edfadc, def5ef, ffe5d2, fcd9d3, d8d8d8, 595959, 4facf3, 909aca, b8c2e9, beeafa, dbf6b9, beebdf, ffcca6, f9b3a7, bfbfbf, 3f3f3f, 0d78c9, 5967af, 94a3de, 9ee0f7, caf297, 9de1cf, ffb279, f68d7b, a5a5a5, 262626, 063c64, 181d33, 31479f, 11b2eb, 81d319, 34ac8b, d85c00, c3260c, 7f7f7f, 0c0c0c, 021828, 101322, 202f6a, 0b769c, 568c11, 22725c, 903d00, 821908',\n columns: 10\n },\n metro: {\n colors: 'ffffff, 000000, d6ecff, 4e5b6f, 7fd13b, ea157a, feb80a, 00addc, 738ac8, 1ab39f, f2f2f2, 7f7f7f, a7d6ff, d9dde4, e5f5d7, fad0e4, fef0cd, c5f2ff, e2e7f4, c9f7f1, d8d8d8, 595959, 60b5ff, b3bcca, cbecb0, f6a1c9, fee29c, 8be6ff, c7d0e9, 94efe3, bfbfbf, 3f3f3f, 007dea, 8d9baf, b2e389, f272af, fed46b, 51d9ff, aab8de, 5fe7d5, a5a5a5, 262626, 003e75, 3a4453, 5ea226, af0f5b, c58c00, 0081a5, 425ea9, 138677, 7f7f7f, 0c0c0c, 00192e, 272d37, 3f6c19, 750a3d, 835d00, 00566e, 2c3f71, 0c594f',\n columns: 10\n },\n flow: {\n colors: 'ffffff, 000000, dbf5f9, 04617b, 0f6fc6, 009dd9, 0bd0d9, 10cf9b, 7cca62, a5c249, f2f2f2, 7f7f7f, b2e9f2, b4ecfc, c7e2fa, c4eeff, c9fafc, c9faed, e4f4df, edf2da, d8d8d8, 595959, 76d9e8, 6adafa, 90c6f6, 89deff, 93f5f9, 94f6db, cae9c0, dbe6b6, bfbfbf, 3f3f3f, 21b2c8, 20c8f7, 59a9f2, 4fceff, 5df0f6, 5ff2ca, b0dfa0, c9da91, a5a5a5, 262626, 105964, 02485c, 0b5394, 0075a2, 089ca2, 0b9b74, 54a838, 7e9532, 7f7f7f, 0c0c0c, 062328, 01303d, 073763, 004e6c, 05686c, 07674d, 387025, 546321',\n columns: 10\n },\n hardcover: {\n colors: 'ffffff, 000000, ece9c6, 895d1d, 873624, d6862d, d0be40, 877f6c, 972109, aeb795, f2f2f2, 7f7f7f, e1dca5, f2e0c6, f0d0c9, f6e6d5, f5f2d8, e7e5e1, fbc7bc, eef0e9, d8d8d8, 595959, d0c974, e6c28d, e2a293, eeceaa, ece5b2, cfccc3, f78f7a, dee2d4, bfbfbf, 3f3f3f, a29a36, daa454, d4735e, e6b681, e2d88c, b7b2a5, f35838, ced3bf, a5a5a5, 262626, 514d1b, 664515, 65281a, a2641f, a39428, 655f50, 711806, 879464, 7f7f7f, 0c0c0c, 201e0a, 442e0e, 431b11, 6c4315, 6d621a, 433f35, 4b1004, 5a6243',\n columns: 10\n },\n trek: {\n colors: 'ffffff, 000000, fbeec9, 4e3b30, f0a22e, a5644e, b58b80, c3986d, a19574, c17529, f2f2f2, 7f7f7f, f7e09e, e1d6cf, fcecd5, eddfda, f0e7e5, f3eae1, ece9e3, f5e3d1, d8d8d8, 595959, f3cc5f, c4ad9f, f9d9ab, dcc0b6, e1d0cc, e7d5c4, d9d4c7, ebc7a3, bfbfbf, 3f3f3f, d29f0f, a78470, f6c781, cba092, d2b9b2, dbc1a7, c6bfab, e1ac76, a5a5a5, 262626, 694f07, 3a2c24, c87d0e, 7b4b3a, 926255, a17242, 7b7153, 90571e, 7f7f7f, 0c0c0c, 2a1f03, 271d18, 855309, 523226, 614138, 6b4c2c, 524b37, 603a14',\n columns: 10\n },\n verve: {\n colors: 'ffffff, 000000, d2d2d2, 666666, ff388c, e40059, 9c007f, 68007f, 005bd3, 00349e, f2f2f2, 7f7f7f, bdbdbd, e0e0e0, ffd7e8, ffc6dc, ffb8f1, f1b2ff, c3dcff, b8cfff, d8d8d8, 595959, 9d9d9d, c1c1c1, ffafd1, ff8eba, ff71e4, e365ff, 87baff, 72a0ff, bfbfbf, 3f3f3f, 696969, a3a3a3, ff87ba, ff5597, ff2ad7, d519ff, 4b98ff, 2b71ff, a5a5a5, 262626, 343434, 4c4c4c, e90062, ab0042, 75005f, 4e005f, 00449e, 002676, 7f7f7f, 0c0c0c, 151515, 333333, 9b0041, 72002c, 4e003f, 34003f, 002d69, 00194f',\n columns: 10\n },\n monochrome: {\n colors: '000000, 1a1a1a, 333333, 4d4d4d, 666666, 808080, 999999, b3b3b3, cccccc, e6e6e6, f2f2f2, ffffff',\n columns: 12\n },\n accessible: {\n colors: 'black, grey, darkred, red, darkorange, gold, green, blue, darkblue, purple, white, darkgrey, saddlebrown, pink, orange, yellow, lightgreen, lightskyblue, lightblue, mediumpurple',\n columns: 10\n }\n};\n\n;\n\n/**\n * Arguments for the `cancel` event of the ColorPicker and FlatColorPicker components.\n */\nclass ColorPickerCancelEvent extends PreventableEvent {\n constructor(originalEvent) {\n super();\n this.originalEvent = originalEvent;\n }\n}\n\n/**\n * Arguments for the `close` event of the ColorPicker component.\n */\nclass ColorPickerCloseEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `open` event of the ColorPicker component.\n */\nclass ColorPickerOpenEvent extends PreventableEvent {\n}\n\n/**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * Provides information about the current active color and gives the option to prevent the opening of the popup.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public handleActiveColorClick(event: ActiveColorClickEvent): void {\n * event.preventOpen();\n *\n * console.log('Open prevented:', event.isOpenPrevented());\n * console.log('Current color:', event.color);\n * }\n * }\n * ```\n */\nclass ActiveColorClickEvent {\n /**\n * @hidden\n * @param color Represents the current value of the ColorPicker.\n */\n constructor(color) {\n this.color = color;\n this.openPrevented = false;\n }\n /**\n * Prevents the opening of the popup.\n */\n preventOpen() {\n this.openPrevented = true;\n }\n /**\n * Returns `true` if the popup opening is prevented by any of its subscribers.\n *\n * @returns - Returns `true` if the open action was prevented. Otherwise, returns `false`.\n */\n isOpenPrevented() {\n return this.openPrevented;\n }\n}\n\n/**\n * @hidden\n *\n * Returns the hex or rgba string representation of the color.\n */\nconst parseColor = (value, format, opacityEnabled = false, safe = true) => {\n const allowedFormats = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(`Unsupported color output format '${format}'. The available options are 'hex', 'rgba' or 'name'.`);\n }\n if (!isPresent(value)) {\n return;\n }\n if (format === 'name') {\n return nameFormat(value, safe);\n }\n const parsedColor = parseColor$1(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n const parsedColorResult = format === 'hex' ? getHexValue(parsedColor, opacityEnabled) : parsedColor.toCssRgba();\n return parsedColorResult;\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nconst getHSV = (value, safe = true) => {\n const parsed = parseColor$1(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nconst getRGBA = (value, safe = true) => {\n const parsed = parseColor$1(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromHSV = (hsva, format = 'rgba', opacityEnabled = false) => {\n const hue = fitIntoBounds(hsva.h, 0, 359.9);\n const saturation = fitIntoBounds(hsva.s, 0, 1);\n const value = fitIntoBounds(hsva.v, 0, 1);\n const alpha = fitIntoBounds(hsva.a, 0, 1);\n const color = Color.fromHSV(hue, saturation, value, alpha);\n return format === 'hex' ? getHexValue(color, opacityEnabled) : color.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the HEX value.\n */\nconst getHexValue = (color, opacity) => {\n return opacity && color.a < 1 ? color.toCss({ alpha: true }) : color.toCss();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue`, assuming the `value`, `saturation` and `alpha` have value of `1`.\n */\nconst getColorFromHue = (hue) => {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromRGBA = (rgba) => {\n const red = fitIntoBounds(rgba.r, 0, 255);\n const green = fitIntoBounds(rgba.g, 0, 255);\n const blue = fitIntoBounds(rgba.b, 0, 255);\n const alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n/**\n *\n * @hidden\n */\nfunction nameFormat(value, safe) {\n value = value.toLowerCase().trim();\n if (isPresent(namedColors[value])) {\n return value;\n }\n if (parseColor$1(value, safe)) {\n value = parseColor$1(value, safe).toHex();\n }\n const key = Object.keys(namedColors).find(key => namedColors[key] === value);\n if (!key && !safe) {\n throw new Error(`The provided color ${value} is not supported for 'format=\"name\"' property.To display ${value} color, the component 'format' property should be set to 'hex' or 'rgba' `);\n }\n return key;\n}\n/**\n * @hidden\n *\n * Returns the RGB object representation of the color based on the background color.\n */\nconst getRGBFromRGBA = (foregroundColor, backgroundColor) => {\n const r1 = fitIntoBounds(foregroundColor.r, 0, 255);\n const g1 = fitIntoBounds(foregroundColor.g, 0, 255);\n const b1 = fitIntoBounds(foregroundColor.b, 0, 255);\n const a1 = fitIntoBounds(foregroundColor.a, 0, 1);\n const r2 = fitIntoBounds(backgroundColor.r, 0, 255);\n const g2 = fitIntoBounds(backgroundColor.g, 0, 255);\n const b2 = fitIntoBounds(backgroundColor.b, 0, 255);\n return {\n r: Math.round(((1 - a1) * r2) + (a1 * r1)),\n g: Math.round(((1 - a1) * g2) + (a1 * g1)),\n b: Math.round(((1 - a1) * b2) + (a1 * b1))\n };\n};\n/**\n * @hidden\n *\n * Returns the relative luminance.\n */\nconst getLuminance = (rgb) => {\n let a = [rgb.r, rgb.g, rgb.b].map(function (v) {\n v /= 255;\n return v <= 0.03928\n ? v / 12.92\n : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n};\n/**\n * @hidden\n *\n * Returns the color contrast.\n */\nconst getContrast = (luminance1, luminance2) => {\n const brightest = Math.max(luminance1, luminance2);\n const darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05)\n / (darkest + 0.05);\n};\n/**\n * @hidden\n *\n * Returns the color contrast from two RGBA colors.\n */\nconst getContrastFromTwoRGBAs = (a, b) => {\n return getContrast(getLuminance(getRGBFromRGBA(a, b)), getLuminance(getRGBFromRGBA(b, { r: 0, g: 0, b: 0, a: 1 })));\n};\n\n/**\n * @hidden\n */\nconst bezierCommand = (controlPointCalc) => (point, i, a) => {\n // start control point\n const [cpsX, cpsY] = controlPointCalc(a[i - 1], a[i - 2], point);\n // end control point\n const [cpeX, cpeY] = controlPointCalc(point, a[i - 1], a[i + 1], true);\n return `C ${cpsX},${cpsY} ${cpeX},${cpeY} ${point[0]},${point[1]}`;\n};\n/**\n * @hidden\n */\nconst controlPoint = (lineCalc) => (current, previous, next, reverse) => {\n // when 'current' is the first or last point of the array\n // 'previous' and 'next' are undefined\n // replace with 'current'\n const p = previous || current;\n const n = next || current;\n const smooth = 0.1;\n // properties of the line between previous and next\n const l = lineCalc(p, n);\n // If is end-control-point, add PI to the angle to go backward\n const angle = l.angle + (reverse ? Math.PI : 0);\n const length = l.length * smooth;\n // The control point position is relative to the current point\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n return [x, y];\n};\n/**\n * @hidden\n */\nconst line = (pointA, pointB) => {\n const lengthX = pointB[0] - pointA[0];\n const lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX)\n };\n};\n/**\n * @hidden\n */\nconst d = (points, command) => {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n const d = points.reduce((acc, point, i, a) => i === 0 ?\n // if first point\n `M ${point[0]},${point[1]}` :\n // else\n `${acc} ${command(point, i, a)}`, '');\n return d;\n};\n/**\n * @hidden\n *\n * Render the svg element.\n *\n * @param points (array) Represents the points coordinates as an array of tuples.\n * @param command (function) The command that is used (bezierCommand, lineCommand).\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) a svg path command.\n * @output (string) a Svg element\n */\nconst svgPath = (points, command) => {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n const d = points.reduce((acc, point, i, a) => i === 0 ?\n // if first point\n `M ${point[0]},${point[1]}` :\n // else\n `${acc} ${command(point, i, a)}`, '');\n return d;\n};\n\n/**\n * @hidden\n */\nclass ColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n}\nColorPickerLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorPickerLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * @hidden\n */\nconst DEFAULT_OUTPUT_FORMAT = 'rgba';\n/**\n * @hidden\n */\nconst DEFAULT_GRADIENT_BACKGROUND_COLOR = 'rgba(255, 0, 0, 1)';\n/**\n * @hidden\n */\nconst DRAGHANDLE_MOVE_SPEED = 5;\n/**\n * @hidden\n */\nconst AAA_RATIO = 7.0;\n/**\n * @hidden\n */\nconst AA_RATIO = 4.5;\n/**\n * @hidden\n */\nconst DEFAULT_PRESET$1 = 'office';\n/**\n * @hidden\n */\nconst DEFAULT_ACCESSIBLE_PRESET$1 = 'accessible';\n/**\n * @hidden\n */\nconst STEP_COUNT = 16;\n\n/**\n * @hidden\n */\nclass FlatColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, colorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.colorPickerLocalization = colorPickerLocalization;\n }\n get(shortKey) {\n if (this.colorPickerLocalization) {\n return this.colorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nFlatColorPickerLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: ColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFlatColorPickerLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: ColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass FlatColorPickerService {\n getPaletteSettings(settings, format) {\n const defaultPreset = (format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n const settingsPalette = settings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n return {\n palette: settingsPalette || defaultPreset,\n tileSize: settings.tileSize || 24,\n columns: settings.columns || presetColumns || 10\n };\n }\n paletteTileLayout(tileSize) {\n if (typeof tileSize === 'number') {\n return { width: tileSize, height: tileSize };\n }\n return {\n width: tileSize.width ? tileSize.width : tileSize.height,\n height: tileSize.height ? tileSize.height : tileSize.width\n };\n }\n}\nFlatColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFlatColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FlatColorPickerHeaderComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClasses = true;\n this.viewChange = new EventEmitter();\n this.valuePaneClick = new EventEmitter();\n this.clearButtonClick = new EventEmitter();\n }\n onViewButtonClick(view) {\n this.activeView = view;\n this.viewChange.emit(view);\n }\n get viewButtons() {\n return this.views && this.views.indexOf('gradient') >= 0 && this.views.indexOf('palette') >= 0;\n }\n getViewButtonIcon(view) {\n return view === 'gradient' ? 'k-i-color-canvas' : 'k-i-palette';\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n}\nFlatColorPickerHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerHeaderComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: { clearButton: \"clearButton\", activeView: \"activeView\", views: \"views\", preview: \"preview\", value: \"value\", selection: \"selection\" }, outputs: { viewChange: \"viewChange\", valuePaneClick: \"valuePaneClick\", clearButtonClick: \"clearButtonClick\" }, host: { properties: { \"class.k-coloreditor-header\": \"this.hostClasses\", \"class.k-hstack\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"clearButtonElement\", first: true, predicate: [\"clearButton\"], descendants: true, read: ElementRef }, { propertyName: \"viewButtonsCollection\", predicate: [\"viewButtons\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerHeaderComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerHeader]',\n template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-header']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], clearButton: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], preview: [{\n type: Input\n }], value: [{\n type: Input\n }], selection: [{\n type: Input\n }], viewChange: [{\n type: Output\n }], valuePaneClick: [{\n type: Output\n }], clearButtonClick: [{\n type: Output\n }], viewButtonsCollection: [{\n type: ViewChildren,\n args: ['viewButtons', { read: ElementRef }]\n }], clearButtonElement: [{\n type: ViewChild,\n args: ['clearButton', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ColorGradientLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.flatColorPickerLocalization = flatColorPickerLocalization;\n }\n get(shortKey) {\n if (this.flatColorPickerLocalization) {\n return this.flatColorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nColorGradientLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: FlatColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorGradientLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: FlatColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FlatColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ColorContrastSvgComponent {\n constructor() {\n this.hostClass = true;\n }\n ngAfterViewInit() {\n this.metrics = this.wrapper.getBoundingClientRect();\n this.oldA = this.hsva.value.a;\n this.oldH = this.hsva.value.h;\n this.hsva.subscribe((value) => {\n if (value.h !== this.oldH || value.a !== this.oldA) {\n this.oldH = value.h;\n this.oldA = value.a;\n this.setPaths();\n }\n });\n }\n ngOnChanges(changes) {\n if (isPresent(changes.backgroundColor) && this.metrics) {\n this.setPaths();\n }\n }\n setPaths() {\n const bezierCommandCalc = bezierCommand(controlPoint(line));\n this.paths = [svgPath(this.getPaths(AA_RATIO, STEP_COUNT), bezierCommandCalc),\n svgPath(this.getPaths(AA_RATIO, STEP_COUNT, true), bezierCommandCalc),\n svgPath(this.getPaths(AAA_RATIO, STEP_COUNT), bezierCommandCalc),\n svgPath(this.getPaths(AAA_RATIO, STEP_COUNT, true), bezierCommandCalc)];\n }\n findValue(contrast, saturation, low, high, comparer) {\n const mid = (low + high) / 2;\n const hsva = Object.assign({}, this.hsva.value, { s: saturation / this.metrics.width, v: 1 - mid / this.metrics.height });\n const currentContrast = getContrastFromTwoRGBAs(getRGBA(getColorFromHSV(hsva)), getRGBA(this.backgroundColor || ''));\n if (low + 0.5 > high) {\n if (currentContrast < contrast + 1 && currentContrast > contrast - 1) {\n return mid;\n }\n else {\n return null;\n }\n }\n if (comparer(currentContrast, contrast)) {\n return this.findValue(contrast, saturation, low, high - (high - low) / 2, comparer);\n }\n return this.findValue(contrast, saturation, low + (high - low) / 2, high, comparer);\n }\n getPaths(contrast, stepCount, reversed = false) {\n const points = [];\n for (let i = 0; i <= this.metrics.width; i += this.metrics.width / stepCount) {\n const value = this.findValue(contrast, i, 0, this.metrics.height, reversed ? ((a, b) => a < b) : ((a, b) => a > b));\n if (value !== null) {\n points.push([i, value]);\n }\n }\n return points;\n }\n}\nColorContrastSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorContrastSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColorContrastSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorContrastSvgComponent, selector: \"[kendoColorContrastSvg]\", inputs: { wrapper: \"wrapper\", hsva: \"hsva\", backgroundColor: \"backgroundColor\" }, host: { properties: { \"class.k-color-contrast-svg\": \"this.hostClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorContrastSvgComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoColorContrastSvg]',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-color-contrast-svg']\n }], wrapper: [{\n type: Input\n }], hsva: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColorInputComponent {\n constructor(host, renderer, localizationService) {\n this.host = host;\n this.renderer = renderer;\n this.localizationService = localizationService;\n /**\n * The id of the hex input.\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets whether the alpha slider will be shown.\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorInput.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorInput.\n */\n this.readonly = false;\n /**\n * Emits a parsed rgba string color.\n */\n this.valueChange = new EventEmitter();\n this.colorInputClass = true;\n /**\n * The rgba inputs values.\n */\n this.rgba = {};\n this.subscriptions = new Subscription();\n }\n /**\n * Indicates whether any of the inputs are focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n const activeElement = document.activeElement;\n return this.host.nativeElement.contains(activeElement);\n }\n /**\n * Indicates whether any of the rgba inputs have value.\n */\n get rgbaInputValid() {\n return Object.keys(this.rgba).every(key => isPresent(this.rgba[key]));\n }\n ngAfterViewInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (isPresent(changes.value) && !this.isFocused) {\n this.hex = parseColor(this.value, 'hex', this.opacity);\n this.rgba = getRGBA(this.value);\n this.rgba.a = parseColor(this.value, 'rgba', this.opacity) ? this.rgba.a : 1;\n }\n }\n get formatButtonTitle() {\n return this.localizationService.get('formatButton');\n }\n handleRgbaValueChange() {\n const color = getColorFromRGBA(this.rgba);\n if (!this.rgbaInputValid || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(this.value);\n this.hex = parseColor(color, 'hex', this.opacity);\n this.valueChange.emit(color);\n }\n handleHexValueChange(hex) {\n this.hex = hex;\n const color = parseColor(hex, 'rgba', this.opacity);\n if (!isPresent(color) || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(color);\n this.valueChange.emit(color);\n }\n handleRgbaInputBlur() {\n if (!this.rgbaInputValid) {\n this.rgba = getRGBA(this.value);\n }\n }\n handleHexInputBlur() {\n this.hex = parseColor(this.value, 'hex', this.opacity);\n }\n toggleFormatView() {\n this.formatView = this.formatView === 'hex' ? 'rgba' : 'hex';\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n this.subscriptions.add(this.renderer.listen(this.toggleFormatButton.nativeElement, 'click', () => this.toggleFormatView()));\n }\n}\nColorInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorInputComponent, selector: \"kendo-colorinput\", inputs: { focusableId: \"focusableId\", formatView: \"formatView\", value: \"value\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-colorgradient-inputs\": \"this.colorInputClass\", \"class.k-hstack\": \"this.colorInputClass\" } }, viewQueries: [{ propertyName: \"opacityInput\", first: true, predicate: [\"opacityInput\"], descendants: true }, { propertyName: \"hexInput\", first: true, predicate: [\"hexInput\"], descendants: true, read: ElementRef }, { propertyName: \"blueInput\", first: true, predicate: [\"blueInput\"], descendants: true, read: ElementRef }, { propertyName: \"toggleFormatButton\", first: true, predicate: [\"toggleFormatButton\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n
    \n
    \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-colorinput',\n template: `\n
    \n \n
    \n
    \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { focusableId: [{\n type: Input\n }], formatView: [{\n type: Input\n }], value: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], colorInputClass: [{\n type: HostBinding,\n args: ['class.k-colorgradient-inputs']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], opacityInput: [{\n type: ViewChild,\n args: ['opacityInput', { static: false }]\n }], hexInput: [{\n type: ViewChild,\n args: ['hexInput', { read: ElementRef, static: false }]\n }], blueInput: [{\n type: ViewChild,\n args: ['blueInput', { read: ElementRef, static: false }]\n }], toggleFormatButton: [{\n type: ViewChild,\n args: ['toggleFormatButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ContrastValidationComponent {\n constructor(localization) {\n this.localization = localization;\n }\n get passMessage() {\n return this.localization.get('passContrast');\n }\n get failMessage() {\n return this.localization.get('failContrast');\n }\n get contrastText() {\n let ratio = this.type === 'AA' ? AA_RATIO : AAA_RATIO;\n return `${this.type}: ${ratio.toFixed(1)}`;\n }\n}\nContrastValidationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastValidationComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContrastValidationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContrastValidationComponent, selector: \"[kendoContrastValidation]\", inputs: { type: \"type\", pass: \"pass\", value: \"value\" }, ngImport: i0, template: `\n {{contrastText}}\n \n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastValidationComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoContrastValidation]',\n template: `\n {{contrastText}}\n \n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { type: [{\n type: Input\n }], pass: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ContrastComponent {\n constructor(localization) {\n this.localization = localization;\n }\n get formatedRatio() {\n return this.contrastRatio.toFixed(2);\n }\n get contrastRatioText() {\n return `${this.localization.get('contrastRatio')}: ${this.value ? this.formatedRatio : 'n/a'}`;\n }\n get satisfiesAACondition() {\n return this.contrastRatio >= AA_RATIO;\n }\n get satisfiesAAACondition() {\n return this.contrastRatio >= AAA_RATIO;\n }\n get contrastRatio() {\n let contrast = getContrastFromTwoRGBAs(getRGBA(this.value), getRGBA(this.ratio));\n return contrast;\n }\n}\nContrastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContrastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContrastComponent, selector: \"[kendoContrastTool]\", inputs: { value: \"value\", ratio: \"ratio\" }, ngImport: i0, template: `\n
    \n {{contrastRatioText}}\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: ContrastValidationComponent, selector: \"[kendoContrastValidation]\", inputs: [\"type\", \"pass\", \"value\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoContrastTool]',\n template: `\n
    \n {{contrastRatioText}}\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { value: [{\n type: Input\n }], ratio: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPickerMessages extends ComponentMessages {\n}\nColorPickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nColorPickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerMessages, selector: \"kendo-colorpicker-messages-base\", inputs: { colorPaletteNoColor: \"colorPaletteNoColor\", colorGradientNoColor: \"colorGradientNoColor\", flatColorPickerNoColor: \"flatColorPickerNoColor\", colorPickerNoColor: \"colorPickerNoColor\", colorGradientHandle: \"colorGradientHandle\", clearButton: \"clearButton\", hueSliderHandle: \"hueSliderHandle\", opacitySliderHandle: \"opacitySliderHandle\", hexInputPlaceholder: \"hexInputPlaceholder\", redInputPlaceholder: \"redInputPlaceholder\", greenInputPlaceholder: \"greenInputPlaceholder\", blueInputPlaceholder: \"blueInputPlaceholder\", alphaInputPlaceholder: \"alphaInputPlaceholder\", passContrast: \"passContrast\", failContrast: \"failContrast\", contrastRatio: \"contrastRatio\", previewColor: \"previewColor\", revertSelection: \"revertSelection\", gradientView: \"gradientView\", paletteView: \"paletteView\", formatButton: \"formatButton\", applyButton: \"applyButton\", cancelButton: \"cancelButton\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-colorpicker-messages-base'\n }]\n }], propDecorators: { colorPaletteNoColor: [{\n type: Input\n }], colorGradientNoColor: [{\n type: Input\n }], flatColorPickerNoColor: [{\n type: Input\n }], colorPickerNoColor: [{\n type: Input\n }], colorGradientHandle: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], hueSliderHandle: [{\n type: Input\n }], opacitySliderHandle: [{\n type: Input\n }], hexInputPlaceholder: [{\n type: Input\n }], redInputPlaceholder: [{\n type: Input\n }], greenInputPlaceholder: [{\n type: Input\n }], blueInputPlaceholder: [{\n type: Input\n }], alphaInputPlaceholder: [{\n type: Input\n }], passContrast: [{\n type: Input\n }], failContrast: [{\n type: Input\n }], contrastRatio: [{\n type: Input\n }], previewColor: [{\n type: Input\n }], revertSelection: [{\n type: Input\n }], gradientView: [{\n type: Input\n }], paletteView: [{\n type: Input\n }], formatButton: [{\n type: Input\n }], applyButton: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedColorPickerMessagesDirective extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedColorPickerMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedColorPickerMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedColorPickerMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\", providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedColorPickerMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective)\n }\n ],\n selector: '[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nlet serial$3 = 0;\n/**\n * The ColorGradient component enables smooth color transitions and provides options for selecting specific colors over the drag handle.\n * The ColorGradient is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nclass ColorGradientComponent {\n constructor(host, ngZone, renderer, cdr, localizationService) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.id = `k-colorgradient-${serial$3++}`;\n /**\n * Defines whether the alpha slider will be displayed.\n *\n * @default true\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorGradient.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorGradient.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies whether the ColorGradient should display a 'Clear color' button.\n *\n * @default false\n */\n this.clearButton = false;\n /**\n * Determines the delay time (in milliseconds) before the value is changed on handle drag. A value of 0 indicates no delay.\n *\n * @default 0\n */\n this.delay = 0;\n /**\n * Specifies the output format of the ColorGradientComponent.\n * The input value may be in a different format, but it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `rgba`\n * * `hex`\n */\n this.format = DEFAULT_OUTPUT_FORMAT;\n /**\n * Fires each time the user selects a new color.\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.backgroundColor = DEFAULT_GRADIENT_BACKGROUND_COLOR;\n /**\n * @hidden\n *\n * Represents the currently selected `hue`, `saturation`, `value`, and `alpha` values.\n * The values are initially set in `ngOnInit` or in `ngOnChanges` and are\n * updated on moving the drag handle or the sliders.\n */\n this.hsva = new BehaviorSubject({});\n this._tabindex = 0;\n this.listeners = [];\n this.hueSliderTouched = false;\n this.alphaSliderTouched = false;\n this.updateValues = new Subject();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get readonlyAttribute() {\n return this.readonly;\n }\n get disabledClass() {\n return this.disabled;\n }\n get gradientId() {\n return this.id;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Enables the color contrast tool. Accepts the background color that will be compared to the selected value.\n * The tool will calculate the contrast ratio between the two colors.\n */\n set contrastTool(value) {\n this._contrastTool = parseColor(value, this.format, this.opacity);\n }\n get contrastTool() {\n return this._contrastTool;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n if (isPresent(value)) {\n const tabindex = Number(value);\n this._tabindex = !isNaN(tabindex) ? tabindex : 0;\n }\n else {\n // Allows removal of the tabindex attribute\n this._tabindex = value;\n }\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Indicates whether the ColorGradient or any of its content is focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n return this.host.nativeElement === document.activeElement || this.host.nativeElement.contains(document.activeElement);\n }\n /**\n * @hidden\n */\n get alphaSliderValue() {\n // setting the initial value to undefined to force the slider to recalculate the height of the slider track on the next cdr run\n if (!(isPresent(this.hsva.value) && isPresent(this.hsva.value.a))) {\n return;\n }\n return this.hsva.value.a * 100;\n }\n get gradientRect() {\n return this.gradientWrapper.nativeElement.getBoundingClientRect();\n }\n /**\n * @hidden\n */\n get contrastToolVisible() {\n return this.contrastTool && this.contrastTool.length > 0;\n }\n ngAfterViewInit() {\n this.updateUI();\n this.cdr.detectChanges();\n this.addEventListeners();\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes) && !this.isFocused) {\n this.updateUI();\n }\n if (isChanged('delay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.listeners.forEach(removeListener => removeListener());\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.unsubscribeChanges();\n }\n /**\n * Focuses the component.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n this.gradientDragHandle.nativeElement.focus();\n }\n /**\n * @hidden\n */\n reset() {\n this.handleValueChange(undefined);\n this.updateUI();\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (this.disabled || this.readonly || !isPresent(args.originalEvent)) {\n return;\n }\n this.focus();\n args.originalEvent.preventDefault();\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.changePosition(args);\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n }\n /**\n * @hidden\n */\n onKeyboardAction(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (args.key && args.key.indexOf('Arrow') !== -1) {\n args.preventDefault();\n const dragHandleElement = this.gradientDragHandle.nativeElement;\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n let keyboardMoveX = 0;\n let keyboardMoveY = 0;\n switch (args.key) {\n case 'ArrowRight':\n keyboardMoveX = DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowLeft':\n keyboardMoveX = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowUp':\n keyboardMoveY = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowDown':\n keyboardMoveY = DRAGHANDLE_MOVE_SPEED;\n break;\n default: break;\n }\n const newY = parseInt(dragHandleElement.style.top, 10) + keyboardMoveY;\n const newX = parseInt(dragHandleElement.style.left, 10) + keyboardMoveX;\n this.renderer.setStyle(dragHandleElement, 'top', `${newY}px`);\n this.renderer.setStyle(dragHandleElement, 'left', `${newX}px`);\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n }\n /**\n * @hidden\n */\n changePosition(position) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.gradientDragHandle.nativeElement.focus();\n const gradientRect = this.gradientRect;\n const newX = position.clientX - gradientRect.left;\n const newY = position.clientY - gradientRect.top;\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n /**\n * @hidden\n */\n handleHueSliderChange(hue) {\n const hsva = this.hsva.value;\n hsva.h = hue;\n this.hsva.next(hsva);\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.backgroundColor = getColorFromHue(hue);\n this.setBackgroundColor(this.backgroundColor);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.hueSliderTouched = true;\n }\n /**\n * @hidden\n */\n handleAlphaSliderChange(alpha) {\n const hsva = this.hsva.value;\n hsva.a = alpha / 100;\n this.hsva.next(hsva);\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.alphaSliderTouched = true;\n }\n /**\n * @hidden\n */\n handleInputsValueChange(color) {\n const parsed = parseColor(color, this.format, this.opacity);\n if (this.value !== parsed) {\n this.handleValueChange(parsed);\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n if (isPresent(this.gradientWrapper)) {\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get colorGradientHandleTitle() {\n return this.localizationService.get('colorGradientHandle');\n }\n /**\n * @hidden\n */\n get colorGradientHandleAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.opacity);\n return `${this.value ? parsed : this.localizationService.get('colorGradientHandle')}`;\n }\n /**\n * @hidden\n */\n get hueSliderTitle() {\n return this.localizationService.get('hueSliderHandle');\n }\n /**\n * @hidden\n */\n get opacitySliderTitle() {\n return this.localizationService.get('opacitySliderHandle');\n }\n /**\n * @hidden\n */\n get clearButtonTitle() {\n return this.localizationService.get('clearButton');\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n moveDragHandle(positionX, positionY) {\n const gradientRect = this.gradientRect;\n const gradientRectWidth = gradientRect.width;\n const gradientRectHeight = gradientRect.height;\n const top = fitIntoBounds(positionY, 0, gradientRectHeight);\n const left = fitIntoBounds(positionX, 0, gradientRectWidth);\n this.setDragHandleElementPosition(top, left);\n const hsva = this.hsva.value;\n hsva.s = left / gradientRectWidth;\n hsva.v = 1 - top / gradientRectHeight;\n this.hsva.next(hsva);\n this.updateValues.next(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.setAlphaSliderBackground(getColorFromHSV(Object.assign(Object.assign({}, this.hsva.value), { a: 1 }), this.format, this.opacity));\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setDragHandleElementPosition(top, left) {\n const dragHandle = this.gradientDragHandle.nativeElement;\n this.renderer.setStyle(dragHandle, 'top', `${top}px`);\n this.renderer.setStyle(dragHandle, 'left', `${left}px`);\n }\n setAlphaSliderBackground(backgroundColor) {\n if (!isPresent(this.alphaSlider)) {\n return;\n }\n const sliderTrack = this.alphaSlider.track.nativeElement;\n this.renderer.setStyle(sliderTrack, 'background', `linear-gradient(to top, transparent, ${backgroundColor})`);\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.opacity);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorGradientNoColor')}`);\n }\n setBackgroundColor(color) {\n this.renderer.setStyle(this.hsvRectangle.nativeElement, 'background', color);\n }\n updateUI() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.hueSliderTouched || this.alphaSliderTouched) {\n this.hueSliderTouched = false;\n this.alphaSliderTouched = false;\n return;\n }\n this.hsva.next(this.value ? getHSV(this.value) : { h: 0, s: 0, v: 1, a: 1 });\n const gradientRect = this.gradientRect;\n const top = (1 - this.hsva.value.v) * gradientRect.height;\n const left = this.hsva.value.s * gradientRect.width;\n this.setDragHandleElementPosition(top, left);\n this.backgroundColor = getColorFromHue(this.hsva.value.h);\n this.setBackgroundColor(this.backgroundColor);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.setHostElementAriaLabel();\n }\n addEventListeners() {\n this.ngZone.runOutsideAngular(() => {\n const focusOutListener = this.renderer.listen(this.host.nativeElement, 'focusout', (event) => {\n if (!containsFocus(this.host.nativeElement, event.relatedTarget) && isUntouched(this.host)) {\n this.ngZone.run(() => this.notifyNgTouched());\n }\n });\n const keydownListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keydown', (event) => {\n this.onKeyboardAction(event);\n });\n const keyupListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keyup', () => {\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n if (!this.readonly && !this.disabled) {\n this.ngZone.run(() => this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity)));\n }\n });\n const dragHandleFocusInListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusin', () => {\n this.renderer.addClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n const dragHandleFocusOutListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusout', () => {\n this.renderer.removeClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n this.listeners.push(focusOutListener, keydownListener, keyupListener, dragHandleFocusInListener, dragHandleFocusOutListener);\n });\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.updateValues.pipe(throttleTime(this.delay)).subscribe(value => {\n this.handleValueChange(value);\n });\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n}\nColorGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorGradientComponent, selector: \"kendo-colorgradient\", inputs: { id: \"id\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", clearButton: \"clearButton\", delay: \"delay\", value: \"value\", contrastTool: \"contrastTool\", tabindex: \"tabindex\", format: \"format\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-colorgradient\": \"this.hostClasses\", \"attr.aria-readonly\": \"this.readonlyAttribute\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.id\": \"this.gradientId\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabindex\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ], viewQueries: [{ propertyName: \"gradientDragHandle\", first: true, predicate: [\"gradientDragHandle\"], descendants: true, read: ElementRef }, { propertyName: \"inputs\", first: true, predicate: [\"inputs\"], descendants: true }, { propertyName: \"alphaSlider\", first: true, predicate: [\"alphaSlider\"], descendants: true }, { propertyName: \"gradientWrapper\", first: true, predicate: [\"gradientWrapper\"], descendants: true }, { propertyName: \"hsvRectangle\", first: true, predicate: [\"hsvRectangle\"], descendants: true }], exportAs: [\"kendoColorGradient\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n
    \n `, isInline: true, styles: [\"\\n .k-clear-color {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n .k-colorgradient-slider.k-align-self-end {\\n height: 140px;\\n }\\n\\n .k-color-contrast-svg {\\n position: absolute;\\n overflow: visible;\\n pointer-events: none;\\n left: 0px;\\n top: 0px;\\n }\\n \"], components: [{ type: ColorContrastSvgComponent, selector: \"[kendoColorContrastSvg]\", inputs: [\"wrapper\", \"hsva\", \"backgroundColor\"] }, { type: SliderComponent, selector: \"kendo-slider\", inputs: [\"focusableId\", \"dragHandleTitle\", \"incrementTitle\", \"animate\", \"decrementTitle\", \"showButtons\", \"value\", \"tabIndex\"], exportAs: [\"kendoSlider\"] }, { type: ColorInputComponent, selector: \"kendo-colorinput\", inputs: [\"focusableId\", \"formatView\", \"value\", \"opacity\", \"disabled\", \"readonly\"], outputs: [\"valueChange\"] }, { type: ContrastComponent, selector: \"[kendoContrastTool]\", inputs: [\"value\", \"ratio\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorGradient',\n selector: 'kendo-colorgradient',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ],\n template: `\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n
    \n `,\n styles: [`\n .k-clear-color {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n .k-colorgradient-slider.k-align-self-end {\n height: 140px;\n }\n\n .k-color-contrast-svg {\n position: absolute;\n overflow: visible;\n pointer-events: none;\n left: 0px;\n top: 0px;\n }\n `]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorgradient']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], gradientId: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], id: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], delay: [{\n type: Input\n }], value: [{\n type: Input\n }], contrastTool: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], format: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], gradientDragHandle: [{\n type: ViewChild,\n args: ['gradientDragHandle', { read: ElementRef, static: false }]\n }], inputs: [{\n type: ViewChild,\n args: ['inputs', { static: false }]\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider', { static: false }]\n }], gradientWrapper: [{\n type: ViewChild,\n args: ['gradientWrapper', { static: false }]\n }], hsvRectangle: [{\n type: ViewChild,\n args: ['hsvRectangle', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPaletteLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.flatColorPickerLocalization = flatColorPickerLocalization;\n }\n get(shortKey) {\n if (this.flatColorPickerLocalization) {\n return this.flatColorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nColorPaletteLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: FlatColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: FlatColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FlatColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ColorPaletteService {\n constructor() {\n this.colorRows = [];\n }\n setColorMatrix(palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (let start = 0; start < palette.length; start += columns) {\n const row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n }\n getCellCoordsFor(color) {\n if (!isPresent(color)) {\n return;\n }\n for (let row = 0; row < this.colorRows.length; row++) {\n for (let col = 0; col < this.colorRows[row].length; col++) {\n if (this.colorRows[row][col] === color) {\n return { row, col };\n }\n }\n }\n }\n getColorAt(cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n }\n getNextCell(current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n const row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n const col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row, col };\n }\n clampIndex(index, max) {\n const minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n}\nColorPaletteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService, decorators: [{\n type: Injectable\n }] });\n\nconst DEFAULT_TILE_SIZE = 24;\nconst DEFAULT_COLUMNS_COUNT = 10;\nconst DEFAULT_PRESET = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET = 'accessible';\nlet serial$2 = 0;\n/**\n * The ColorPalette component provides a set of predefined palette presets and enables you to implement a custom color palette.\n * The ColorPalette is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nclass ColorPaletteComponent {\n constructor(host, service, cdr, renderer, localizationService, ngZone) {\n this.host = host;\n this.service = service;\n this.cdr = cdr;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.id = `k-colorpalette-${serial$2++}`;\n /**\n * Specifies the output format of the ColorPaletteComponent.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `hex`\n * * `rgba`\n * * `name`\n */\n this.format = 'hex';\n /**\n * Sets the disabled state of the ColorPalette.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorPalette.\n */\n this.readonly = false;\n /**\n * Specifies the size of a color cell.\n *\n * The possible values are:\n * * (Default) `tileSize = 24`\n * * `{ width: number, height: number }`\n */\n this.tileSize = { width: DEFAULT_TILE_SIZE, height: DEFAULT_TILE_SIZE };\n /**\n * Fires each time the color selection is changed.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user selects a cell with the mouse or presses `Enter`.\n *\n * @hidden\n */\n this.cellSelection = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.uniqueId = guid();\n this._tabindex = 0;\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get paletteId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the number of columns that will be displayed.\n * Defaults to `10`.\n */\n set columns(value) {\n const minColumnsCount = 1;\n this._columns = value > minColumnsCount ? value : minColumnsCount;\n }\n get columns() {\n return this._columns;\n }\n /**\n * The color palette that will be displayed.\n *\n * The supported values are:\n * * The name of the predefined palette preset (for example, `office`, `basic`, and `apex`).\n * * A string with comma-separated colors.\n * * A string array.\n */\n set palette(value) {\n if (!isPresent(value)) {\n value = DEFAULT_PRESET;\n }\n if (typeof value === 'string' && isPresent(PALETTEPRESETS[value])) {\n this.columns = this.columns || PALETTEPRESETS[value].columns;\n value = PALETTEPRESETS[value].colors;\n }\n const colors = (typeof value === 'string') ? value.split(',') : value;\n this._palette = colors.map(color => parseColor(color, this.format, false, false));\n }\n get palette() {\n return this._palette;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * @hidden\n */\n get tileLayout() {\n if (typeof this.tileSize !== 'number') {\n return this.tileSize;\n }\n return { width: this.tileSize, height: this.tileSize };\n }\n /**\n * @hidden\n */\n get colorRows() {\n return this.service.colorRows;\n }\n /**\n * @hidden\n */\n get hostTabindex() { return this.tabindex; }\n /**\n * @hidden\n */\n get disabledClass() { return this.disabled; }\n /**\n * @hidden\n */\n get readonlyAttribute() { return this.readonly; }\n ngOnInit() {\n if (this.colorRows.length === 0) {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET : DEFAULT_ACCESSIBLE_PRESET;\n this.palette = this.palette || defaultPreset;\n this.setRows();\n }\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n if (this.value) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.selectCell(this.value);\n });\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (changes.palette || changes.columns) {\n this.setRows();\n }\n if (changes.palette || changes.value || changes.columns) {\n this.selectCell(this.value);\n this.setHostElementAriaLabel();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const isRTL = this.direction === 'rtl';\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.handleCellNavigation(0, 1);\n break;\n case Keys.ArrowUp:\n this.handleCellNavigation(0, -1);\n break;\n case Keys.ArrowRight:\n this.handleCellNavigation(isRTL ? -1 : 1, 0);\n break;\n case Keys.ArrowLeft:\n this.handleCellNavigation(isRTL ? 1 : -1, 0);\n break;\n case Keys.Enter:\n this.handleEnter();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleHostBlur() {\n this.notifyNgTouched();\n this.handleCellFocusOnBlur();\n }\n /**\n * @hidden\n */\n handleCellSelection(value, focusedCell) {\n if (this.readonly) {\n return;\n }\n this.selectedCell = focusedCell;\n this.focusedCell = this.selectedCell;\n this.focusInComponent = true;\n const parsedColor = parseColor(value, this.format, false, false);\n this.cellSelection.emit(parsedColor);\n this.handleValueChange(parsedColor);\n if (this.selection !== parsedColor) {\n this.selection = parsedColor;\n this.selectionChange.emit(parsedColor);\n }\n if (focusedCell) {\n this.activeCellId = `k-${this.selectedCell.row}-${this.selectedCell.col}-${this.uniqueId}`;\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.selectCell(value);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Clears the color value of the ColorPalette.\n */\n reset() {\n this.focusedCell = null;\n if (isPresent(this.value)) {\n this.handleValueChange(undefined);\n }\n this.selectedCell = undefined;\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n handleCellFocusOnBlur() {\n this.focusInComponent = false;\n this.focusedCell = this.selectedCell;\n }\n selectCell(value) {\n this.selectedCell = this.service.getCellCoordsFor(value);\n this.focusedCell = this.selectedCell;\n }\n setRows() {\n if (!isPresent(this.palette)) {\n return;\n }\n this.columns = this.columns || DEFAULT_COLUMNS_COUNT;\n this.service.setColorMatrix(this.palette, this.columns);\n }\n handleCellNavigation(horizontalStep, verticalStep) {\n if (this.readonly) {\n return;\n }\n this.focusedCell = this.service.getNextCell(this.focusedCell, horizontalStep, verticalStep);\n this.focusInComponent = true;\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorPaletteNoColor')}`);\n }\n handleEnter() {\n if (!isPresent(this.focusedCell)) {\n return;\n }\n const selectedColor = this.service.getColorAt(this.focusedCell);\n this.handleCellSelection(selectedColor, this.focusedCell);\n }\n}\nColorPaletteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteComponent, deps: [{ token: i0.ElementRef }, { token: ColorPaletteService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nColorPaletteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: { id: \"id\", format: \"format\", value: \"value\", columns: \"columns\", palette: \"palette\", tabindex: \"tabindex\", disabled: \"disabled\", readonly: \"readonly\", tileSize: \"tileSize\" }, outputs: { selectionChange: \"selectionChange\", valueChange: \"valueChange\", cellSelection: \"cellSelection\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\", \"blur\": \"handleHostBlur()\" }, properties: { \"attr.dir\": \"this.direction\", \"attr.id\": \"this.paletteId\", \"attr.tabindex\": \"this.hostTabindex\", \"class.k-colorpalette\": \"this.hostClasses\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.readonlyAttribute\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ], exportAs: [\"kendoColorPalette\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPalette',\n selector: 'kendo-colorpalette',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ],\n template: `\n \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ColorPaletteService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], paletteId: [{\n type: HostBinding,\n args: ['attr.id']\n }], id: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], palette: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tileSize: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellSelection: [{\n type: Output\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpalette']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], handleHostBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n\n/**\n * @hidden\n */\nclass FlatColorPickerActionButtonsComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClasses = true;\n this.actionButtonClick = new EventEmitter();\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n onActionButtonClick(type, ev) {\n let args = {\n target: type,\n originalEvent: ev\n };\n this.actionButtonClick.emit(args);\n }\n}\nFlatColorPickerActionButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerActionButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", outputs: { actionButtonClick: \"actionButtonClick\" }, host: { properties: { \"class.k-coloreditor-footer\": \"this.hostClasses\", \"class.k-actions\": \"this.hostClasses\", \"class.k-hstack\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"lastButton\", first: true, predicate: [\"last\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n {{getText('cancelButton')}}\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerActionButtons]',\n template: `\n {{getText('cancelButton')}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-footer']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], actionButtonClick: [{\n type: Output\n }], lastButton: [{\n type: ViewChild,\n args: ['last', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass FocusOnDomReadyDirective {\n constructor(host, ngZone) {\n this.host = host;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n this.focusOnNextTick();\n }\n focusOnNextTick() {\n this.ngZone.runOutsideAngular(() => setTimeout(() => this.host.nativeElement.focus()));\n }\n}\nFocusOnDomReadyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusOnDomReadyDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFocusOnDomReadyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusOnDomReadyDirective, selector: \"[kendoFocusOnDomReady]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusOnDomReadyDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFocusOnDomReady]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\n/**\n * Represents the [Kendo UI FlatColorPicker component for Angular]({% slug overview_flatcolorpicker %}).\n *\n * The FlatColorPicker is a powerful tool which allows the user to choose colors through palettes with predefined sets of colors and\n * through a gradient that renders an hsv canvas. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass FlatColorPickerComponent {\n constructor(host, service, localizationService, cdr, renderer, ngZone) {\n this.host = host;\n this.service = service;\n this.localizationService = localizationService;\n this.cdr = cdr;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.hostClasses = true;\n /**\n * Sets the read-only state of the FlatColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the FlatColorPicker.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the FlatColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the FlatColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and a color preview pane.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * initial state i.e. to the current value.\n *\n * @default true\n */\n this.preview = true;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Specifies the views that will be rendered. Default value is gradient and palette.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Fires each time the component value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * The event is emitted on preview pane or on 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * @hidden\n */\n this.actionButtonClick = new EventEmitter();\n this._tabindex = 0;\n this._gradientSettings = { opacity: true, delay: 0 };\n this._paletteSettings = {};\n this.subscriptions = new Subscription();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * Specifies the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Configures the gradient view.\n */\n set gradientSettings(value) {\n Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Configures the palette view.\n */\n set paletteSettings(value) {\n Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n ngOnInit() {\n this.selection = this.value;\n this._paletteSettings = this.service.getPaletteSettings(this._paletteSettings, this.format);\n this.setActiveView();\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n this.initDomEvents();\n this.setSizingVariables();\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes)) {\n this.selection = this.value;\n this.setHostElementAriaLabel();\n }\n if (isChanged('paletteSettings', changes)) {\n this.setSizingVariables();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get headerHasContent() {\n return this.preview || this.views.length > 1 || this.clearButton;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Focuses the wrapper of the FlatColorPicker.\n */\n focus() {\n if (this.disabled && this.focused) {\n return;\n }\n this.host.nativeElement.focus();\n this.focused = true;\n }\n /**\n * Blurs the wrapper of the FlatColorPicker.\n */\n blur() {\n if (!this.focused) {\n return;\n }\n this.notifyNgTouched();\n this.host.nativeElement.blur();\n this.focused = false;\n }\n /**\n * Clears the value of the FlatColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this.value = undefined;\n this.notifyNgChanged(undefined);\n this.setHostElementAriaLabel();\n }\n /**\n * @hidden\n */\n onViewChange(view) {\n if (this.activeView === view) {\n return;\n }\n this.activeView = view;\n this.activeViewChange.emit(view);\n if (this.activeView === 'gradient') {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.gradient.gradientDragHandle.nativeElement.focus();\n });\n });\n }\n }\n /**\n * @hidden\n */\n onClearButtonClick() {\n this.resetInnerComponentValue();\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n // eslint-disable-next-line no-unused-expressions\n this.preview ? this.changeCurrentValue(color) : this.setFlatColorPickerValue(color);\n }\n /**\n * @hidden\n */\n onAction(ev) {\n // eslint-disable-next-line no-unused-expressions\n ev.target === 'apply' ? this.setFlatColorPickerValue(this.selection) : this.resetSelection(ev.originalEvent);\n this.actionButtonClick.emit();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n resetSelection(ev) {\n const eventArgs = new ColorPickerCancelEvent(ev);\n this.cancel.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.selection = this.value;\n }\n this.notifyNgTouched();\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.gradientSettings.opacity);\n const ariaLabelValue = `${this.value ? parsed : this.localizationService.get('flatColorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n setSizingVariables() {\n const paletteTileSize = this.service.paletteTileLayout(this.paletteSettings.tileSize);\n const value = `--kendo-color-preview-columns: ${this.paletteSettings.columns};\n --kendo-color-preview-width: ${paletteTileSize.width}px;\n --kendo-color-preview-height: ${paletteTileSize.height}px;`;\n this.host.nativeElement.querySelector('.k-coloreditor-views.k-vstack').setAttribute('style', value);\n }\n changeCurrentValue(color) {\n this.selection = color;\n this.notifyNgTouched();\n }\n resetInnerComponentValue() {\n this.selection = null;\n if (this.gradient) {\n this.gradient.reset();\n return;\n }\n this.palette.reset();\n }\n setFlatColorPickerValue(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setActiveView() {\n if (!isPresent(this.activeView)) {\n this.activeView = this.views[0];\n return;\n }\n if (isDevMode() && this.views.indexOf(this.activeView) === -1) {\n throw new Error(\"Invalid configuration: The current activeView is not present in the views collection\");\n }\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n let hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focus', () => {\n this.focused = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'blur', () => {\n this.focused = false;\n this.notifyNgTouched();\n }));\n });\n }\n}\nFlatColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: FlatColorPickerService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: { readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", tabindex: \"tabindex\", clearButton: \"clearButton\", preview: \"preview\", actionsLayout: \"actionsLayout\", activeView: \"activeView\", views: \"views\", gradientSettings: \"gradientSettings\", paletteSettings: \"paletteSettings\" }, outputs: { valueChange: \"valueChange\", cancel: \"cancel\", activeViewChange: \"activeViewChange\", actionButtonClick: \"actionButtonClick\" }, host: { properties: { \"class.k-flatcolorpicker\": \"this.hostClasses\", \"class.k-coloreditor\": \"this.hostClasses\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabindex\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"gradient\", first: true, predicate: [\"gradient\"], descendants: true }, { propertyName: \"palette\", first: true, predicate: [\"palette\"], descendants: true }, { propertyName: \"footer\", first: true, predicate: [\"footer\"], descendants: true }], exportAs: [\"kendoFlatColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n`, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: [\"clearButton\", \"activeView\", \"views\", \"preview\", \"value\", \"selection\"], outputs: [\"viewChange\", \"valuePaneClick\", \"clearButtonClick\"] }, { type: ColorGradientComponent, selector: \"kendo-colorgradient\", inputs: [\"id\", \"opacity\", \"disabled\", \"readonly\", \"clearButton\", \"delay\", \"value\", \"contrastTool\", \"tabindex\", \"format\"], outputs: [\"valueChange\"], exportAs: [\"kendoColorGradient\"] }, { type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: [\"id\", \"format\", \"value\", \"columns\", \"palette\", \"tabindex\", \"disabled\", \"readonly\", \"tileSize\"], outputs: [\"selectionChange\", \"valueChange\", \"cellSelection\"], exportAs: [\"kendoColorPalette\"] }, { type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", outputs: [\"actionButtonClick\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FocusOnDomReadyDirective, selector: \"[kendoFocusOnDomReady]\" }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoFlatColorPicker',\n selector: 'kendo-flatcolorpicker',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ],\n template: `\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n`\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FlatColorPickerService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-flatcolorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-coloreditor']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], cancel: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], actionButtonClick: [{\n type: Output\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], gradient: [{\n type: ViewChild,\n args: ['gradient', { static: false }]\n }], palette: [{\n type: ViewChild,\n args: ['palette', { static: false }]\n }], footer: [{\n type: ViewChild,\n args: ['footer', { static: false }]\n }] } });\n\nconst DOM_FOCUS_EVENTS = ['focus', 'blur'];\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).\n *\n * The ColorPicker is a powerful tool for choosing colors from Gradient and Palette views\n * which are rendered in its popup. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass ColorPickerComponent {\n constructor(host, popupService, cdr, localizationService, ngZone, renderer) {\n this.host = host;\n this.popupService = popupService;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.hostClasses = true;\n this.role = 'listbox';\n /**\n * Specifies the views that will be rendered in the popup.\n * By default both the gradient and palette views will be rendered.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Sets the read-only state of the ColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the ColorPicker.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the ColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the ColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and color preview panes.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * previous state i.e. to the current value.\n *\n * @default false\n */\n this.preview = false;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n *\n * The possible values are:\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time ColorPicker is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ColorPicker is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * Fires on preview pane or 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * The [ActiveColorClickEvent]({% slug api_inputs_activecolorclickevent %}) event provides the option to prevent the popup opening.\n */\n this.activeColorClick = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Indicates whether the ColorPicker wrapper is focused.\n */\n this.isFocused = false;\n this._tabindex = 0;\n this._popupSettings = { animate: true };\n this._paletteSettings = {};\n this._gradientSettings = { opacity: true, delay: 0 };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = new Subscription();\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n this.domFocusListener = (event) => event.stopImmediatePropagation();\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get focusedClass() {\n return this.isFocused;\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n set view(view) {\n this.views = [view];\n }\n get view() {\n return (this.views && this.views.length > 0) ? this.views[0] : null;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the ColorPicker.\n */\n set popupSettings(value) {\n this._popupSettings = Object.assign(this._popupSettings, value);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Configures the palette that is displayed in the ColorPicker popup.\n */\n set paletteSettings(value) {\n this._paletteSettings = Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n /**\n * Configures the gradient that is displayed in the ColorPicker popup.\n */\n set gradientSettings(value) {\n this._gradientSettings = Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * The size property specifies the padding of the ColorPicker internal elements\n * ([see example]({% slug appearance_colorpicker %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Indicates whether the ColorPicker popup is open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * @hidden\n */\n get iconStyles() {\n if (this.iconClass) {\n return this.iconClass;\n }\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n }\n ngOnInit() {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n const settingsPalette = this._paletteSettings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n this._paletteSettings = {\n palette: settingsPalette || defaultPreset,\n tileSize: this._paletteSettings.tileSize || 24,\n columns: this._paletteSettings.columns || presetColumns || 10\n };\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.setHostElementAriaLabel();\n this.handleHostId();\n this.initDomEvents();\n }\n ngOnChanges(changes) {\n if (changes.format && changes.format.currentValue === 'name') {\n this.activeView = 'palette';\n }\n if (this.activeView === 'gradient' && this.gradientSettings.opacity) {\n this.format = 'rgba';\n this.value = parseColor(this.value, this.format, this.gradientSettings.opacity);\n }\n if (isChanged('value', changes)) {\n this.setHostElementAriaLabel();\n }\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n this.handleDomEvents('remove', DOM_FOCUS_EVENTS);\n }\n /**\n * @hidden\n */\n handleCancelEvent(ev) {\n this.cancel.emit(ev);\n }\n /**\n * @hidden\n */\n togglePopup() {\n this.focus();\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleWrapperClick(event) {\n if (this.disabled) {\n return;\n }\n this.focus();\n if (closest$1(event.target, (element) => element === this.activeColor.nativeElement)) {\n const event = new ActiveColorClickEvent(this.value);\n this.activeColorClick.emit(event);\n if (!event.isOpenPrevented() || this.isOpen) {\n this.toggleWithEvents(!this.isOpen);\n }\n return;\n }\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * Focuses the wrapper of the ColorPicker.\n */\n focus() {\n this.isFocused = true;\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleWrapperFocus() {\n if (this.isFocused) {\n return;\n }\n this.ngZone.run(() => {\n this.focus();\n this.onFocus.emit();\n });\n }\n /**\n * Blurs the ColorPicker.\n */\n blur() {\n this.isFocused = false;\n this.host.nativeElement.blur();\n this.notifyNgTouched();\n }\n /**\n * @hidden\n */\n handleWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.ngZone.run(() => {\n this.onBlur.emit();\n this.isFocused = false;\n });\n }\n /**\n * Clears the value of the ColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this._value = undefined;\n this.setHostElementAriaLabel();\n this.notifyNgChanged(undefined);\n }\n /**\n * Toggles the popup of the ColorPicker.\n * Does not trigger the `open` and `close` events of the component.\n *\n * @param open An optional parameter. Specifies whether the popup will be opened or closed.\n */\n toggle(open) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.cdr.markForCheck();\n this.closePopup();\n open = isPresent(open) ? open : !this.isOpen;\n if (open) {\n this.openPopup();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n const parsedColor = parseColor(color, this.format, this.gradientSettings.opacity);\n const valueChange = parsedColor !== this.value;\n if (valueChange) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.setHostElementAriaLabel();\n this.notifyNgChanged(parsedColor);\n }\n }\n /**\n * @hidden\n */\n handlePopupBlur(event) {\n if (this.popupBlurInvalid(event)) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n this.toggleWithEvents(false);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n handleWrapperKeyDown(event) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {\n event.preventDefault();\n this.ngZone.run(() => {\n this.toggleWithEvents(true);\n });\n }\n }\n /**\n * @hidden\n */\n handlePopupKeyDown(event) {\n if (event.keyCode === Keys.Escape) {\n this.toggleWithEvents(false);\n this.host.nativeElement.focus();\n }\n if (event.keyCode === Keys.Tab) {\n const currentElement = event.shiftKey ? this.firstFocusableElement.nativeElement : this.lastFocusableElement.nativeElement;\n const nextElement = event.shiftKey ? this.lastFocusableElement.nativeElement : this.firstFocusableElement.nativeElement;\n if (event.target === currentElement) {\n event.preventDefault();\n nextElement.focus();\n }\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n setHostElementAriaLabel() {\n const ariaLabelValue = `${this.value ? this.value : this.localizationService.get('colorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n handleClasses(value, input) {\n const elem = this.host.nativeElement;\n const classes = getStylingClasses('picker', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n popupBlurInvalid(ev) {\n const focusInFlatColorPickerElement = this.popupRef.popupElement.contains(ev.relatedTarget);\n const hostClicked = closest$1(ev.relatedTarget, (element) => element === this.host.nativeElement);\n return hostClicked || focusInFlatColorPickerElement;\n }\n toggleWithEvents(open) {\n const sameState = this.isOpen === open;\n if (this.disabled || this.readonly || sameState) {\n return;\n }\n let eventArgs;\n if (open) {\n eventArgs = new ColorPickerOpenEvent();\n this.open.emit(eventArgs);\n }\n else {\n eventArgs = new ColorPickerCloseEvent();\n this.close.emit(eventArgs);\n }\n if (!eventArgs.isDefaultPrevented()) {\n this.toggle(open);\n }\n if (open) {\n this.focusFirstElement();\n }\n }\n focusFirstElement() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.flatColorPicker) {\n const gradient = this.flatColorPicker.gradient;\n const elementToFocus = gradient ? gradient.gradientDragHandle :\n this.flatColorPicker.palette.host;\n elementToFocus.nativeElement.focus();\n }\n });\n }\n openPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.activeColor,\n animate: this.popupSettings.animate,\n appendTo: this.popupSettings.appendTo,\n popupAlign: popupPosition,\n anchorAlign: anchorPosition,\n popupClass: 'k-colorpicker-popup',\n content: this.popupTemplate,\n positionMode: 'absolute'\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.toggleWithEvents(false);\n if (!this.isOpen) {\n this.host.nativeElement.focus({\n preventScroll: true\n });\n }\n });\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n get firstFocusableElement() {\n if (!this.flatColorPicker.header || (this.views.length <= 1 && !this.flatColorPicker.clearButton)) {\n const gradient = this.flatColorPicker.gradient;\n return gradient ? gradient.gradientDragHandle : this.flatColorPicker.palette.host;\n }\n return this.views.length > 1 ? this.flatColorPicker.header.viewButtonsCollection.toArray()[0] : this.flatColorPicker.header.clearButtonElement;\n }\n get lastFocusableElement() {\n if (this.preview) {\n return this.flatColorPicker.footer.lastButton;\n }\n if (this.flatColorPicker.palette) {\n return this.flatColorPicker.palette.host;\n }\n const gradient = this.flatColorPicker.gradient;\n const inputs = gradient && gradient.inputs;\n if (gradient && inputs && inputs.formatView === 'hex') {\n return inputs.hexInput;\n }\n return this.gradientSettings.opacity ? inputs.opacityInput.numericInput : inputs.blueInput;\n }\n handleDomEvents(action, events) {\n const hostElement = this.host.nativeElement;\n events.forEach(ev => hostElement[`${action}EventListener`](ev, this.domFocusListener, true));\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n let hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n this.handleWrapperFocus();\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (event) => {\n const closestPopup = this.popupRef ?\n closest$1(event.relatedTarget, (element) => element === this.flatColorPicker.host.nativeElement) :\n false;\n const closestWrapper = closest$1(event.relatedTarget, (element) => element === this.host.nativeElement);\n if (!closestPopup && !closestWrapper) {\n this.handleWrapperBlur();\n }\n }));\n this.handleDomEvents('add', DOM_FOCUS_EVENTS);\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (event) => {\n this.handleWrapperKeyDown(event);\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'click', (event) => {\n this.ngZone.run(() => {\n this.handleWrapperClick(event);\n });\n }));\n });\n }\n handleHostId() {\n const hostElement = this.host.nativeElement;\n const existingId = hostElement.getAttribute('id');\n if (existingId) {\n this.focusableId = existingId;\n }\n else {\n const id = `k-${guid()}`;\n hostElement.setAttribute('id', id);\n this.focusableId = id;\n }\n }\n}\nColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerComponent, selector: \"kendo-colorpicker\", inputs: { views: \"views\", view: \"view\", activeView: \"activeView\", readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", popupSettings: \"popupSettings\", paletteSettings: \"paletteSettings\", gradientSettings: \"gradientSettings\", icon: \"icon\", iconClass: \"iconClass\", clearButton: \"clearButton\", tabindex: \"tabindex\", preview: \"preview\", actionsLayout: \"actionsLayout\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", cancel: \"cancel\", activeColorClick: \"activeColorClick\", activeViewChange: \"activeViewChange\" }, host: { properties: { \"class.k-colorpicker\": \"this.hostClasses\", \"class.k-icon-picker\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.aria-expanded\": \"this.ariaExpanded\", \"attr.tabindex\": \"this.hostTabindex\", \"attr.dir\": \"this.direction\", \"attr.role\": \"this.role\" } }, providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"activeColor\", first: true, predicate: [\"activeColor\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"flatColorPicker\", first: true, predicate: [\"flatColorPicker\"], descendants: true }], exportAs: [\"kendoColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: [\"readonly\", \"disabled\", \"format\", \"value\", \"tabindex\", \"clearButton\", \"preview\", \"actionsLayout\", \"activeView\", \"views\", \"gradientSettings\", \"paletteSettings\"], outputs: [\"valueChange\", \"cancel\", \"activeViewChange\", \"actionButtonClick\"], exportAs: [\"kendoFlatColorPicker\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPicker',\n selector: 'kendo-colorpicker',\n providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$3.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-icon-picker']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], views: [{\n type: Input\n }], view: [{\n type: Input\n }], activeView: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], activeColorClick: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], activeColor: [{\n type: ViewChild,\n args: ['activeColor', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], flatColorPicker: [{\n type: ViewChild,\n args: ['flatColorPicker', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ColorPickerCustomMessagesComponent extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nColorPickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerCustomMessagesComponent, selector: \"kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages\", providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PUBLIC_DIRECTIVES = [\n ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent\n];\nconst INTERNAL_DIRECTIVES = [\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ColorPicker.\n */\nclass ColorPickerModule {\n}\nColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent, ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent], imports: [SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule], exports: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent] });\nColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, imports: [[\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n INTERNAL_DIRECTIVES\n ],\n exports: [PUBLIC_DIRECTIVES],\n imports: [\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]\n }]\n }] });\n\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"checkbox\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass CheckBoxDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n }\n /**\n * The size property specifies the width and height of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('checkbox', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nCheckBoxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCheckBoxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckBoxDirective, selector: \"input[kendoCheckBox]\", inputs: { size: \"size\", rounded: \"rounded\" }, host: { properties: { \"class.k-checkbox\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoCheckBox]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-checkbox']\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the CheckBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the CheckBox module\n * import { CheckBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CheckBoxModule], // import CheckBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxDirective], imports: [CommonModule], exports: [CheckBoxDirective] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CheckBoxDirective],\n exports: [CheckBoxDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst DEFAULT_SIZE = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"radio\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass RadioButtonDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n validatePackage(packageMetadata);\n }\n /**\n * The size property specifies the width and height of the RadioButton\n * ([see example]({% slug appearance_radiobuttondirective %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n ngAfterViewInit() {\n // kept in sync with other inputs for easier refactoring\n // to a common base class\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('radio', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadioButtonDirective, selector: \"input[kendoRadioButton]\", inputs: { size: \"size\" }, host: { properties: { \"class.k-radio\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoRadioButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RadioButton directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the RadioButton module\n * import { RadioButtonModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, RadioButtonModule], // import RadioButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RadioButtonModule {\n}\nRadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, declarations: [RadioButtonDirective], imports: [CommonModule], exports: [RadioButtonDirective] });\nRadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [RadioButtonDirective],\n exports: [RadioButtonDirective],\n imports: [CommonModule]\n }]\n }] });\n\nlet serial$1 = 0;\n/**\n * Represents an error message that will be shown underneath\n * a Kendo control or native HTML form-bound component after a validation.\n */\nclass ErrorComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the alignment of the Error message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-error-${serial$1++}`;\n this.roleAttribute = 'alert';\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ErrorComponent, selector: \"kendo-formerror\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-error\": \"this.hostClass\", \"attr.role\": \"this.roleAttribute\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ErrorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formerror',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-error']\n }], align: [{\n type: Input\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nlet serial = 0;\n/**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\nclass HintComponent {\n constructor() {\n /**\n * Specifies the alignment of the Hint message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-hint-${serial++}`;\n this.hostClass = true;\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HintComponent, selector: \"kendo-formhint\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-hint\": \"this.hostClass\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formhint',\n template: `\n \n `\n }]\n }], propDecorators: { align: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-form-hint']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\n/**\n * Specifies a container for form-bound controls (Kendo controls or native HTML controls).\n * Applies styling and behavior rules.\n */\nclass FormFieldComponent {\n constructor(renderer, localizationService, hostElement) {\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.hostElement = hostElement;\n this.hostClass = true;\n /**\n *\n * Specifies when the Hint messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying hints when the form-bound component state is\n * `valid` or `untouched` and `pristine`.\n * * `always`—Allows full control over the visibility of the hints.\n *\n */\n this.showHints = 'initial';\n /**\n * Specifies the layout orientation of the form field.\n *\n * * The possible values are:\n *\n * * (Default) `vertical`\n * * `horizontal`\n */\n this.orientation = 'vertical';\n /**\n * Specifies when the Error messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying errors when the form-bound component state is\n * `invalid` and `touched` or `dirty`.\n * * `always`—Allows full control over the visibility of the errors.\n *\n */\n this.showErrors = 'initial';\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get errorClass() {\n if (!this.control) {\n return false;\n }\n return this.control.invalid && (this.control.touched || this.control.dirty);\n }\n get disabledClass() {\n if (!this.control) {\n return false;\n }\n // radiobutton group\n if (this.isRadioControl(this.control)) {\n return false;\n }\n return this.disabledControl() ||\n this.disabledElement() ||\n this.disabledKendoInput();\n }\n set formControls(formControls) {\n this.validateFormControl(formControls);\n this.control = formControls.first;\n }\n /**\n * @hidden\n */\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n /**\n * @hidden\n */\n get hasHints() {\n return this.showHints === 'always' ? true : this.showHintsInitial();\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrors === 'always' ? true : this.showErrorsInitial();\n }\n ngAfterViewInit() {\n this.setDescription();\n }\n ngAfterViewChecked() {\n this.updateDescription();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n disabledKendoInput() {\n return this.kendoInput && this.kendoInput.disabled;\n }\n disabledControl() {\n return this.control.disabled;\n }\n disabledElement() {\n const elements = this.controlElementRefs.toArray();\n return elements.every(e => e.nativeElement.hasAttribute('disabled'));\n }\n validateFormControl(formControls) {\n if (isDevMode() && formControls.length !== 1 && !this.isControlGroup(formControls)) {\n throw new Error('The `kendo-formfield` component should contain ' +\n 'only one control of type NgControl with a formControlName(https://angular.io/api/forms/FormControlName)' +\n 'or an ngModel(https://angular.io/api/forms/NgModel) binding.');\n }\n }\n isControlGroup(formControls) {\n if (!formControls.length) {\n return false;\n }\n const name = formControls.first.name;\n return formControls.toArray().every(c => c.name === name && (this.isRadioControl(c)));\n }\n isRadioControl(control) {\n return control.valueAccessor instanceof RadioControlValueAccessor;\n }\n updateDescription() {\n const controls = this.findControlElements();\n if (!controls) {\n return;\n }\n controls.forEach((control) => {\n if (this.errorChildren.length > 0 || this.hintChildren.length > 0) {\n const ariaIds = this.generateDescriptionIds(control);\n if (ariaIds !== '') {\n this.renderer.setAttribute(control, 'aria-describedby', ariaIds);\n }\n else {\n this.renderer.removeAttribute(control, 'aria-describedby');\n }\n }\n });\n }\n findControlElements() {\n if (!this.controlElementRefs) {\n return;\n }\n // if the control is KendoInput and has focusableId - dropdowns, dateinputs\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n return [this.hostElement.nativeElement.querySelector(`#${this.kendoInput.focusableId}`)];\n }\n return this.controlElementRefs.map(el => el.nativeElement);\n }\n generateDescriptionIds(control) {\n const ids = new Set();\n let errorAttribute = '';\n if (control.hasAttribute('aria-describedby')) {\n const attributes = control.getAttribute('aria-describedby').split(' ');\n errorAttribute = attributes.filter(attr => attr.includes('kendo-error-'))[0];\n attributes.forEach((attr) => {\n if (attr.includes('kendo-hint-') || attr.includes('kendo-error-')) {\n return;\n }\n ids.add(attr);\n });\n }\n this.hintChildren.forEach((hint) => {\n ids.add(hint.id);\n });\n if (this.hasErrors) {\n this.errorChildren.forEach((error) => {\n ids.add(error.id);\n });\n }\n else {\n ids.delete(errorAttribute);\n }\n return Array.from(ids).join(' ');\n }\n showHintsInitial() {\n if (!this.control) {\n return true;\n }\n const { valid, untouched, pristine } = this.control;\n return valid || (untouched && pristine);\n }\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n setDescription() {\n this.updateDescription();\n this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));\n this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));\n }\n}\nFormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FormFieldComponent, selector: \"kendo-formfield\", inputs: { showHints: \"showHints\", orientation: \"orientation\", showErrors: \"showErrors\" }, host: { properties: { \"class.k-form-field\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-form-field-error\": \"this.errorClass\", \"class.k-form-field-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }, { propertyName: \"formControls\", predicate: NgControl, descendants: true }, { propertyName: \"controlElementRefs\", predicate: NgControl, descendants: true, read: ElementRef }, { propertyName: \"errorChildren\", predicate: ErrorComponent, descendants: true }, { propertyName: \"hintChildren\", predicate: HintComponent, descendants: true }], ngImport: i0, template: `\n \n
    \n \n \n \n
    \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formfield',\n template: `\n \n
    \n \n \n \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-field']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], errorClass: [{\n type: HostBinding,\n args: ['class.k-form-field-error']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-form-field-disabled']\n }], formControls: [{\n type: ContentChildren,\n args: [NgControl, { descendants: true }]\n }], controlElementRefs: [{\n type: ContentChildren,\n args: [NgControl, { read: ElementRef, descendants: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], errorChildren: [{\n type: ContentChildren,\n args: [ErrorComponent, { descendants: true }]\n }], hintChildren: [{\n type: ContentChildren,\n args: [HintComponent, { descendants: true }]\n }], showHints: [{\n type: Input\n }], orientation: [{\n type: Input\n }], showErrors: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FormField, Error and Hint components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FormField module\n * import { FormFieldModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FormFieldModule], // import FormField module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FormFieldModule {\n}\nFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, declarations: [HintComponent, ErrorComponent, FormFieldComponent], imports: [CommonModule], exports: [HintComponent, ErrorComponent, FormFieldComponent] });\nFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [HintComponent, ErrorComponent, FormFieldComponent],\n exports: [HintComponent, ErrorComponent, FormFieldComponent],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { InputsModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, InputsModule], // import Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass InputsModule {\n}\nInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, imports: [CommonModule], exports: [TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule] });\nInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, imports: [[CommonModule], TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule\n ],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchComponent, SwitchCustomMessagesComponent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as intl from '@telerik/kendo-intl';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440833,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DOCS_URL = 'http://www.telerik.com/kendo-angular-ui/components/internationalization/troubleshooting/';\n/**\n * @hidden\n */\nconst errorSolutions = {\n 'NoCurrency': `Solution: ${DOCS_URL}#toc-no-currency`,\n 'NoCurrencyDisplay': `Solution: ${DOCS_URL}#toc-no-currency-display`,\n 'NoCurrencyRegion': `Solution: ${DOCS_URL}#toc-no-currency-region`,\n 'NoDateFieldNames': `Solution: ${DOCS_URL}#toc-no-date-filed-names`,\n 'NoFirstDay': `Solution: ${DOCS_URL}#toc-no-first-day`,\n 'NoGMTInfo': `Solution: ${DOCS_URL}#toc-no-gmt-info`,\n 'NoLocale': `Solution: ${DOCS_URL}#toc-no-locale`,\n 'NoValidCurrency': `Solution: ${DOCS_URL}#toc-no-valid-currency`,\n 'NoWeekData': `Solution: ${DOCS_URL}#toc-no-week-data`\n};\n\nfunction formatMessage(error) {\n const message = error.message;\n const errorSolution = errorSolutions[Object.keys(errorSolutions).filter(key => message.indexOf(key) === 0)[0]];\n return errorSolution ? `${message} ${errorSolution}` : message;\n}\nfunction intlMethod(fn) {\n return function (...values) {\n try {\n return fn.apply(null, values);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n };\n}\n/**\n * @hidden\n */\nconst dateFormatNames = intlMethod(intl.dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName = intlMethod(intl.dateFieldName);\n/**\n * @hidden\n */\nconst firstDay = intlMethod(intl.firstDay);\n/**\n * @hidden\n */\nconst format = intlMethod(intl.format);\n/**\n * @hidden\n */\nconst formatDate = intlMethod(intl.formatDate);\n/**\n * @hidden\n */\nconst formatNumber = intlMethod(intl.formatNumber);\n/**\n * @hidden\n */\nconst load = intlMethod(intl.load);\n/**\n * @hidden\n */\nconst numberSymbols = intlMethod(intl.numberSymbols);\n/**\n * @hidden\n */\nconst parseDate = intlMethod(intl.parseDate);\n/**\n * @hidden\n */\nconst parseNumber = intlMethod(intl.parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat = intlMethod(intl.splitDateFormat);\n/**\n * @hidden\n */\nconst toString = intlMethod(intl.toString);\n/**\n * @hidden\n */\nconst weekendRange = intlMethod(intl.weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData = (data) => intl.setData(data);\n/**\n * Retrieves the locale data for the specified locale.\n *\n * @params locale - The locale id.\n * @returns data - The locale data.\n */\nconst localeData = (locale) => {\n try {\n return intl.localeInfo(locale);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n};\n\nconst LOCALE_REGEX = /_/g;\n/**\n * @hidden\n */\nfunction cldrServiceFactory(localeId) {\n return new CldrIntlService(localeId);\n}\n/**\n * An abstract base class that implements\n * the Internationalization service methods\n * for the current locale.\n */\nclass IntlService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new EventEmitter();\n validatePackage(packageMetadata);\n }\n /**\n * Notifies that the service was changed.\n */\n notify() {\n this.changes.emit();\n }\n}\nIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, providedIn: 'root', useFactory: cldrServiceFactory, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], ctorParameters: function () { return []; } });\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@telerik/kendo-intl` package.\n */\nclass CldrIntlService extends IntlService {\n /**\n * Creates a new instance of the service with the ID of the specified locale.\n *\n * Note that the parts of the locale ID can be separated by either `_` (underscore)\n * or `-` (dash).\n *\n * @param localeId - The default locale ID.\n */\n constructor(localeId) {\n super();\n this.localeId = localeId;\n }\n /**\n * Gets or sets the current locale ID.\n */\n get localeId() {\n return this.locale;\n }\n set localeId(value) {\n // Angular locales use underscore, for example, en_US\n // while IETF BCP-47 specifies a dash.\n // https://tools.ietf.org/html/bcp47\n const locale = value.replace(LOCALE_REGEX, '-');\n if (locale !== this.locale) {\n this.locale = locale;\n this.notify();\n }\n }\n /**\n * Formats a string with placeholders such as\n * `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n format(format$1, ...values) {\n return format(format$1, values, this.localeId);\n }\n /**\n * Converts an object into a string based on the specified format.\n *\n * @param value - The value to format.\n * @param format - The format to use.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted object.\n */\n toString(value, format, localeId) {\n return toString(value, format, localeId || this.localeId);\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted date.\n */\n formatDate(value, format, localeId) {\n return formatDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Date` object based on the specified format.\n *\n * @param value - The string to convert.\n * @param format - The format strings or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed date.\n */\n parseDate(value, format, localeId) {\n return parseDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Number`.\n *\n * @param value - The string to convert.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed number.\n */\n parseNumber(value, format, localeId) {\n return parseNumber(value, localeId || this.localeId, format);\n }\n /**\n * Converts a `Number` into a string based on the specified format.\n *\n * @param value - The number to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted number.\n */\n formatNumber(value, format, localeId) {\n return formatNumber(value, format, localeId || this.localeId);\n }\n /**\n * Returns the date names from the current locale based on the option.\n *\n * The available `type` values are:\n * - `era`\n * - `year`\n * - `quarter`\n * - `month`\n * - `week`\n * - `day`\n * - `dayperiod`\n * - `hour`\n * - `minute`\n * - `second`\n * - `zone`\n *\n * The available `nameType` values are:\n * - `wide`\n * - `narrow`\n * - `short`\n *\n * @param options - Detailed configuration for the desired date field name.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n * @returns The localized date field name from the current locale based on the option.\n *\n * @example\n * ```\n * dateFieldName({ type: 'day' }); //returns 'day';\n * dateFieldName({ type: 'day', nameType: 'wide' }); //returns 'day';\n * dateFieldName({ type: 'month', nameType: 'short' }); //returns 'mo.';\n * dateFieldName({ type: 'month', nameType: 'wide' }); //returns 'month';\n * ```\n */\n dateFieldName(options, localeId) {\n return dateFieldName(options, localeId || this.localeId);\n }\n /**\n * Returns a localized date field name based on specific dateFieldName options.\n *\n * The available type values are:\n * - `day`\n * - `dayperiod`\n * - `months`\n * - `quarters`\n * - `eras`\n *\n * @param options - Detailed configuration for the desired date format.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n */\n dateFormatNames(options, localeId) {\n return dateFormatNames(localeId || this.localeId, options);\n }\n /**\n * Splits the date format into objects containing information about each part of the pattern.\n *\n * @param format The format string or options.\n * @param localeId The optional locale id. If not specified, the `\"en\"` locale id is used.\n * @returns The date format parts.\n */\n splitDateFormat(format, localeId) {\n return splitDateFormat(format, localeId || this.localeId);\n }\n /**\n * Returns the number symbols from the current locale based on the option.\n *\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The number symbols from the current locale.\n */\n numberSymbols(localeId) {\n return numberSymbols(localeId || this.localeId);\n }\n /**\n * Returns the first day index starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The index of the first day of the week (0 == Sunday).\n */\n firstDay(localeId) {\n return firstDay(localeId || this.localeId);\n }\n /**\n * Returns the start and end index of the locale weekend starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The the start and end index of the locale weekend (0 == Sunday).\n */\n weekendRange(localeId) {\n return weekendRange(localeId || this.localeId);\n }\n}\nCldrIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nCldrIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * Formats a date value to a string based on the requested format.\n * This pipe uses the [IntlService]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{date | kendoDate }}
    • \n *
    • {{milliseconds | kendoDate: 'M/dd/yyy' }}
    • \n *
    • {{stringDate | kendoDate: 'G' }}
    • \n *
    \n * ```\n */\nclass DatePipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - (Optional) The ID of the locale which will be used instead of the default one.\n * @return - The formatted date.\n */\n transform(value, format = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format, localeId);\n }\n return value;\n }\n normalize(value) {\n if (value && typeof value === 'string') {\n value = this.intlService.parseDate(value);\n }\n else if (value && isNumeric(value)) {\n value = new Date(parseFloat(value));\n }\n return value;\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, name: \"kendoDate\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoDate'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\n/**\n * Formats a number value to a string based on the requested format.\n * This pipe uses the [`IntlService`]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{decimal | kendoNumber:'c' }}
    • \n *
    • {{stringNumber | kendoNumber:'p' }}
    • \n *
    • {{int | kendoNumber:'##.00' }}
    • \n *
    \n * ```\n */\nclass NumberPipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Number` object into a string based on the specified format.\n * If no format is provided, the value is formatted as decimal number using the\n * [`\"n\"`](https://github.com/telerik/kendo-intl/blob/master/docs/num-formatting/index.md#standard) format.\n *\n * @param value - The numer that will be formatted.\n * @param format - The format string or options.\n * @param localeId - (Optional) The locale ID that will be used in place of the default one.\n * @return - The formatted number.\n */\n transform(value, format, localeId) {\n if (typeof value === 'string') {\n value = this.intlService.parseNumber(value);\n }\n if (value !== null && value !== undefined) {\n return this.intlService.formatNumber(value, format, localeId);\n }\n return value;\n }\n}\nNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, name: \"kendoNumber\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoNumber'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\nconst pipes = [\n DatePipe,\n NumberPipe\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}docs/ts/latest/guide/ngmodule.html)\n * definition for the Intl services.\n */\nclass IntlModule {\n}\nIntlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nIntlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, declarations: [DatePipe,\n NumberPipe], exports: [DatePipe,\n NumberPipe] });\nIntlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [pipes],\n exports: [pipes]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CldrIntlService, DatePipe, IntlModule, IntlService, NumberPipe, cldrServiceFactory, dateFieldName, dateFormatNames, firstDay, format, formatDate, formatNumber, load, localeData, numberSymbols, parseDate, parseNumber, setData, splitDateFormat, toString, weekendRange };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, InjectionToken, Inject, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skip, map, tap } from 'rxjs/operators';\n\n/**\n * A base class for a service that returns localized messages.\n *\n * For more information, refer to the section on [using the message service]({% slug messages_l10n %}#toc-using-the-message-service).\n */\nclass MessageService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new BehaviorSubject({ rtl: undefined });\n }\n /**\n * Notifies the components that the messages were changed.\n *\n * @param rtl - (Optional) A new value for the [text direction token]({% slug api_l10n_rtl %}).\n */\n notify(rtl) {\n this.changes.next({ rtl });\n }\n /**\n * Returns a localized message for the supplied key.\n *\n * @param _key - The message key. For example, `\"kendo.grid.noRecords\"`.\n * @return - The localized message for this key or `undefined` if not found.\n */\n get(_key) {\n return undefined;\n }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * Base class that acts as a component messages container.\n *\n * For internal use.\n * @hidden\n */\nclass ComponentMessages {\n get override() {\n return false;\n }\n ngOnChanges(changes) {\n this.register(changes);\n if (Object.keys(changes).some(field => !changes[field].isFirstChange())) {\n this.service.notifyChanges();\n }\n }\n ngOnInit() {\n this.subscription = this.service.changes.pipe(skip(1)).subscribe(() => this.register(this));\n }\n register(changes) {\n const keys = Object.keys(changes);\n keys.forEach(key => this.service.register(key, this[key], this.override));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nComponentMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComponentMessages, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nComponentMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComponentMessages, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComponentMessages, decorators: [{\n type: Directive,\n args: [{}]\n }] });\n\n/**\n * A token that specifies the text direction of Kendo UI for Angular components.\n *\n * @example\n * {% embed_file rtl/app.module.ts preview %}\n * {% embed_file rtl/app.component.ts %}\n * {% embed_file shared/main.ts hidden %}\n *\n */\nconst RTL = new InjectionToken(\"Kendo UI Right-to-Left token\");\n\n/**\n * Localization prefix for the component messages.\n *\n * For internal use.\n * @hidden\n */\nconst L10N_PREFIX = new InjectionToken('Localization key prefix');\n/**\n * Component localization service.\n *\n * For internal use.\n * @hidden\n */\nclass LocalizationService {\n constructor(prefix, messageService, _rtl) {\n this.prefix = prefix;\n this.messageService = messageService;\n this._rtl = _rtl;\n this.changes = new BehaviorSubject({ rtl: this._rtl });\n this.dictionary = {};\n if (messageService) {\n this.subscription = messageService.changes\n .pipe(map(({ rtl }) => rtl !== undefined ? rtl : this._rtl), tap(rtl => this._rtl = rtl))\n .subscribe(rtl => {\n this.dictionary = {};\n this.changes.next({ rtl });\n });\n }\n }\n get rtl() {\n return this._rtl;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n get(shortKey) {\n const key = this.key(shortKey);\n return this.dictionary[key];\n }\n register(shortKey, value, override = false) {\n const key = this.key(shortKey);\n let message = value;\n if (!override) {\n if (this.dictionary.hasOwnProperty(key)) {\n return;\n }\n message = this.defaultValue(key, value);\n }\n this.dictionary[key] = message;\n }\n notifyChanges() {\n this.changes.next({ rtl: this.rtl });\n }\n key(shortKey) {\n return this.prefix + '.' + shortKey;\n }\n defaultValue(key, value) {\n if (!this.messageService) {\n return value;\n }\n const alt = this.messageService.get(key);\n return (alt === undefined) ? value : alt;\n }\n}\nLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService, deps: [{ token: L10N_PREFIX }, { token: MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ComponentMessages, L10N_PREFIX, LocalizationService, MessageService, RTL };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Input, HostBinding, forwardRef, Component, NgModule, EventEmitter, isDevMode, Output, ContentChild, ViewChild } from '@angular/core';\nimport { isDocumentAvailable, guid, hasObservers, KendoInput } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgControl } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isUploadComponent = (component) => component.wrapper && (component.wrapper.tagName === 'KENDO-UPLOAD' || component.wrapper.tagName === 'KENDO-FILESELECT');\n/**\n * @hidden\n */\nconst isInputElement = (component) => component instanceof HTMLElement;\n/**\n * @hidden\n */\nconst inputElementHasAttr = (element, attribute) => element.hasAttribute(attribute);\n/**\n * @hidden\n */\nconst getWrappedNativeInput = (element) => element.querySelector('kendo-label > input, kendo-label > textarea, kendo-label > select');\n/**\n * @hidden\n */\nconst getRootElement = (element) => {\n if (!element) {\n return null;\n }\n let rootElement = element;\n while (rootElement.parentElement) {\n rootElement = rootElement.parentElement;\n }\n return rootElement;\n};\n\n/**\n * Represents the [Kendo UI Label directive for Angular]({% slug overview_label %}).\n * The Label associates a focusable Angular component or an HTML element\n * with a `label` tag by using the `[for]` property binding.\n *\n * To associate a component by using the `label` element, either:\n * * Set the `[for]` property binding to a\n * [template reference variable]({{ site.data.urls.angular['templatesyntax'] }}#template-reference-variables--var-), or\n * * Set the `[for]` property binding to an `id` HTML string value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n *
    \n * \n * \n *
    \n *\n *
    \n * \n * \n *
    \n *
    \n * `\n * })\n * class AppComponent { }\n * ```\n */\nclass LabelDirective {\n constructor(label, renderer, zone) {\n this.label = label;\n this.renderer = renderer;\n this.zone = zone;\n this.labelClass = true;\n this.handleClick = () => {\n const component = this.getFocusableComponent();\n if (!component) {\n return;\n }\n if (isUploadComponent(component)) {\n component.fileSelect.nativeElement.click();\n }\n if (component.focus) {\n component.focus();\n }\n };\n }\n get labelFor() {\n if (typeof this.for === 'string') {\n return this.for;\n }\n if (!isDocumentAvailable()) {\n return null;\n }\n const component = this.getFocusableComponent() || {};\n if (isInputElement(component) && !inputElementHasAttr(component, 'id')) {\n this.renderer.setAttribute(component, 'id', `k-${guid()}`);\n }\n return component.focusableId || component.id || null;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setAriaLabelledby();\n this.zone.runOutsideAngular(() => this.clickListener = this.renderer.listen(this.label.nativeElement, 'click', this.handleClick));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.clickListener) {\n this.clickListener();\n }\n }\n /**\n * @hidden\n */\n setAriaLabelledby() {\n if (!isDocumentAvailable()) {\n return;\n }\n const component = this.getFocusableComponent();\n if (component && component.focusableId) {\n const rootElement = getRootElement(this.label.nativeElement);\n const labelTarget = rootElement.querySelector(`#${component.focusableId}`);\n if (!labelTarget) {\n return;\n }\n const labelElement = this.label.nativeElement;\n const id = labelElement.id || `k-${guid()}`;\n if (!labelElement.getAttribute('id')) {\n this.renderer.setAttribute(labelElement, 'id', id);\n }\n this.renderer.setAttribute(labelTarget, 'aria-labelledby', id);\n }\n }\n getFocusableComponent() {\n const target = this.for;\n return target && target.focus !== undefined ? target : null;\n }\n}\nLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelDirective, selector: \"label[for]\", inputs: { for: \"for\" }, host: { properties: { \"attr.for\": \"this.labelFor\", \"class.k-label\": \"this.labelClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'label[for]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { for: [{\n type: Input\n }], labelFor: [{\n type: HostBinding,\n args: ['attr.for']\n }], labelClass: [{\n type: HostBinding,\n args: ['class.k-label']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-label-messages-base\", inputs: { optional: \"optional\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-label-messages-base'\n }]\n }], propDecorators: { optional: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoLabelLocalizedMessages],\n [kendoFloatingLabelLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug label_globalization %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-label-messages, kendo-floatinglabel-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-label-messages, kendo-floatinglabel-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst SHARED_DIRECTIVES = [\n LocalizedMessagesDirective,\n CustomMessagesComponent\n];\n/**\n * @hidden\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, declarations: [LocalizedMessagesDirective,\n CustomMessagesComponent], exports: [LocalizedMessagesDirective,\n CustomMessagesComponent] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-label',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441139,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass FloatingLabelInputAdapter {\n constructor(component, formControl) {\n this.component = component;\n const isObservableOrEventEmitter = (event) => event instanceof Observable || event instanceof EventEmitter;\n if (isObservableOrEventEmitter(component.onFocus)) {\n this.onFocus = component.onFocus;\n }\n if (isObservableOrEventEmitter(component.autoFillStart)) {\n this.autoFillStart = component.autoFillStart;\n }\n if (isObservableOrEventEmitter(component.autoFillEnd)) {\n this.autoFillEnd = component.autoFillEnd;\n }\n if (isObservableOrEventEmitter(component.onBlur)) {\n this.onBlur = component.onBlur;\n }\n if (formControl) {\n this.onValueChange = formControl.valueChanges;\n }\n else if (component.onValueChange) {\n this.onValueChange = component.onValueChange;\n }\n }\n get focusableId() {\n const component = this.component;\n if ('focusableId' in component) {\n return component.focusableId;\n }\n else if ('id' in component) {\n return component.id;\n }\n return \"\";\n }\n set focusableId(value) {\n const component = this.component;\n if ('focusableId' in component) {\n component.focusableId = value;\n }\n else if ('id' in component) {\n component.id = value;\n }\n }\n}\n\nconst isFunction = (x) => Object.prototype.toString.call(x) === '[object Function]';\n/**\n * Represents the [Kendo UI FloatingLabel component for Angular]({% slug overview_floatinglabel %}).\n * Provides floating labels to `input` elements.\n *\n * The FloatingLabel supports both Template and Reactive Forms and\n * [can contain Kendo UI for Angular Input components such as `kendo-combobox` and `kendo-numerictextbox`,\n * or HTML Input elements with the `kendoTextBox` directive applied]({% slug overview_floatinglabel %}#toc-implementing-floating-labels).\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public name = 'John';\n * }\n *\n * ```\n */\nclass FloatingLabelComponent {\n constructor(elementRef, renderer, changeDetectorRef, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\n this.localization = localization;\n this.hostClasses = true;\n /**\n * Fires after the floating label position is changed.\n */\n this.positionChange = new EventEmitter();\n /**\n * @hidden\n */\n this.focused = false;\n /**\n * @hidden\n */\n this.empty = true;\n /**\n * @hidden\n */\n this.invalid = false;\n /**\n * @hidden\n */\n this.labelId = `k-${guid()}`;\n this.autoFillStarted = false;\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, \"id\");\n }\n /**\n * Represents the current floating label position.\n */\n get labelPosition() {\n if (!this.empty) {\n return 'Out';\n }\n return this.focused ? 'Out' : 'In';\n }\n get focusedClass() {\n return this.focused;\n }\n get invalidClass() {\n return this.invalid;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n this.validateSetup();\n const control = new FloatingLabelInputAdapter(this.kendoInput || this.formControl.valueAccessor, this.formControl);\n this.addHandlers(control);\n this.setLabelFor(control);\n }\n ngAfterViewInit() {\n if (this.kendoInput) {\n this.setAriaLabelledby(this.kendoInput);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n subscribe(control, eventName, handler) {\n if (control[eventName] instanceof EventEmitter) {\n const subscription = control[eventName].subscribe(handler);\n if (!this.subscription) {\n this.subscription = subscription;\n }\n else {\n this.subscription.add(subscription);\n }\n }\n }\n updateState() {\n const empty = value => {\n // zero is not an empty value (e.g., NumericTextBox)\n if (value === 0 || value === false) {\n return false;\n }\n // empty arrays are an empty value (e.g., MultiSelect)\n if (Array.isArray(value) && !value.length) {\n return true;\n }\n return !value;\n };\n const formControl = this.formControl;\n if (formControl) {\n const valueAccessor = formControl.valueAccessor;\n if (isFunction(valueAccessor.isEmpty)) {\n this.empty = valueAccessor.isEmpty();\n }\n else {\n this.empty = empty(formControl.value);\n }\n this.invalid = formControl.invalid && (formControl.touched || formControl.dirty);\n }\n else {\n this.empty = isFunction(this.kendoInput.isEmpty) ?\n this.kendoInput.isEmpty() : empty(this.kendoInput.value);\n }\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n }\n this.changeDetectorRef.markForCheck();\n }\n setAriaLabelledby(component) {\n const componentId = component.focusableId || component.id;\n if (componentId) {\n const focusableElement = this.elementRef.nativeElement.querySelector(`#${componentId}`);\n this.renderer.setAttribute(focusableElement, 'aria-labelledby', this.labelId);\n }\n }\n setLabelFor(control) {\n const controlId = control.focusableId || control.id;\n if (this.id && controlId) {\n // input wins\n this.id = controlId;\n }\n else if (this.id) {\n control.focusableId = this.id;\n }\n else if (controlId) {\n this.id = controlId;\n }\n else {\n const id = `k-${guid()}`;\n control.focusableId = id;\n this.id = id;\n }\n }\n handleAutofill(control) {\n this.subscribe(control, 'autoFillStart', () => {\n this.autoFillStarted = true;\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n });\n this.subscribe(control, 'autoFillEnd', () => {\n if (this.autoFillStarted) {\n this.autoFillStarted = false;\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n }\n });\n }\n addHandlers(control) {\n const setFocus = (isFocused) => () => {\n this.focused = isFocused;\n this.updateState();\n if (!this.empty) {\n return;\n }\n if (hasObservers(this.positionChange)) {\n this.positionChange.emit(isFocused ? 'Out' : 'In');\n }\n };\n this.subscribe(control, 'onFocus', setFocus(true));\n this.subscribe(control, 'onBlur', setFocus(false));\n this.handleAutofill(control);\n const updateState = () => this.updateState();\n updateState();\n this.subscribe(control, 'onValueChange', updateState);\n }\n validateSetup() {\n if (!this.formControl && !this.kendoInput) {\n if (isDevMode()) {\n throw new Error(\"The FloatingLabelComponent requires a Kendo Input component\" +\n \" or a forms-bound component to function properly.\");\n }\n return;\n }\n }\n}\nFloatingLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingLabelComponent, selector: \"kendo-floatinglabel\", inputs: { labelCssStyle: \"labelCssStyle\", labelCssClass: \"labelCssClass\", id: \"id\", text: \"text\", optional: \"optional\" }, outputs: { positionChange: \"positionChange\" }, host: { properties: { \"class.k-floating-label-container\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"class.k-state-invalid\": \"this.invalidClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true }, { propertyName: \"formControl\", first: true, predicate: NgControl, descendants: true }], exportAs: [\"kendoFloatingLabel\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatinglabel',\n exportAs: 'kendoFloatingLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-floating-label-container']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-state-invalid']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], labelCssStyle: [{\n type: Input\n }], labelCssClass: [{\n type: Input\n }], id: [{\n type: Input\n }], text: [{\n type: Input\n }], optional: [{\n type: Input\n }], positionChange: [{\n type: Output\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [FloatingLabelComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingLabelModule], // import FloatingLabel module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FloatingLabelModule {\n}\nFloatingLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, declarations: [FloatingLabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [FloatingLabelComponent, SharedDirectivesModule] });\nFloatingLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, imports: [[CommonModule, SharedDirectivesModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [...COMPONENT_DIRECTIVES$1],\n exports: [...COMPONENT_DIRECTIVES$1, SharedDirectivesModule],\n imports: [CommonModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI Label component for Angular]({% slug label_basic %}).\n *\n * Associates a label with input elements or components.\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public name = 'John';\n * }\n *\n * ```\n */\nclass LabelComponent {\n constructor(elementRef, renderer, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.localization = localization;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'id');\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (this.for) {\n this.control = this.for;\n return;\n }\n const wrappedNativeInput = getWrappedNativeInput(this.elementRef.nativeElement);\n if (wrappedNativeInput) {\n if (!wrappedNativeInput.hasAttribute('id')) {\n this.renderer.setAttribute(wrappedNativeInput, 'id', `k-${guid()}`);\n }\n this.control = wrappedNativeInput;\n return;\n }\n this.control = this.kendoInput;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.labelDirective.setAriaLabelledby();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n}\nLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelComponent, selector: \"kendo-label\", inputs: { text: \"text\", for: \"for\", optional: \"optional\" }, host: { properties: { \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }], viewQueries: [{ propertyName: \"labelDirective\", first: true, predicate: LabelDirective, descendants: true, static: true }], exportAs: [\"kendoLabel\"], ngImport: i0, template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: LabelDirective, selector: \"label[for]\", inputs: [\"for\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-label',\n exportAs: 'kendoLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ],\n template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], text: [{\n type: Input\n }], for: [{\n type: Input\n }], optional: [{\n type: Input\n }], labelDirective: [{\n type: ViewChild,\n args: [LabelDirective, { static: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n LabelDirective,\n LabelComponent\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `LabelDirective`—The Label directive class.\n * - `LabelComponent`—The Label component class\n * - `FLoatingLabel`—The FloatingLabel component class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Label module\n * import { LabelModule } from '@progress/kendo-angular-label';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LabelModule], // import Label module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass LabelModule {\n}\nLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, declarations: [LabelDirective,\n LabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [LabelDirective,\n LabelComponent, FloatingLabelModule, SharedDirectivesModule] });\nLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, imports: [[CommonModule, SharedDirectivesModule], FloatingLabelModule, SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedDirectivesModule],\n declarations: [...COMPONENT_DIRECTIVES],\n exports: [...COMPONENT_DIRECTIVES, FloatingLabelModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, FloatingLabelComponent, FloatingLabelModule, LabelComponent, LabelDirective, LabelModule, LocalizedMessagesDirective, SharedDirectivesModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Optional, Injectable, isDevMode, Component, SkipSelf, Host, Input, ViewChild, HostBinding, ViewChildren, ContentChildren, EventEmitter, Output, ContentChild, HostListener, Inject, QueryList, NgZone, forwardRef, ElementRef, ViewEncapsulation, TemplateRef, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { Keys, PreventableEvent as PreventableEvent$1, isDocumentAvailable, hasObservers, EventsModule, DraggableModule, ResizeSensorModule, isChanged } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$2 from '@angular/animations';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\nimport { Subject, BehaviorSubject, Subscription, of } from 'rxjs';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { delay, takeUntil, map, tap, filter, switchMap, take } from 'rxjs/operators';\nimport * as i4 from '@progress/kendo-angular-progressbar';\nimport { ProgressBarModule } from '@progress/kendo-angular-progressbar';\nimport Draggable from '@telerik/kendo-draggable';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-layout',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1653579413,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the expand modes of the PanelBar.\n * By default, the expand mode is set to `multiple`.\n */\nvar PanelBarExpandMode;\n(function (PanelBarExpandMode) {\n /**\n * Allows you to expand only one item at a time.\n * When you expand an item, the item that was previously expanded is coll.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Single\"] = 0] = \"Single\";\n /**\n * Allows you to expand only one item at a time and requires you to set the `height` property.\n * The expanded area occupies the entire height of the PanelBar.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Full\"] = 1] = \"Full\";\n /**\n * The default mode of the PanelBar.\n * Allows you to expand more than one item at a time. Items can also be toggled.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Multiple\"] = 2] = \"Multiple\";\n /**\n * By default, the expand mode is set to `multiple`.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Default\"] = 2] = \"Default\";\n})(PanelBarExpandMode || (PanelBarExpandMode = {}));\n\n/**\n * Represents the content template of the declaratively initialized PanelBar items.\n * The content can be expanded or collapsed through the item.\n */\nclass PanelBarContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarContentDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanelBarContentDirective, selector: \"[kendoPanelBarContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: \"[kendoPanelBarContent]\"\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item title\n * ([more information and example]({% slug templates_panelbar %}#toc-customizing-the-appearance-of-the-title)).\n *\n * > The `kendoPanelBarItemTitle` directive overrides the PanelBarItem [title]({% slug api_layout_panelbaritemcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Item Title\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass PanelBarItemTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarItemTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemTitleDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarItemTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanelBarItemTitleDirective, selector: \"[kendoPanelBarItemTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTitle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nlet nextId$1 = 0;\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\nconst SHAPE_TO_ROUNDED = {\n rounded: 'large',\n circle: 'full'\n};\n/**\n * @hidden\n */\nconst parsePanelBarItems = (data) => {\n return data.map((item) => {\n if (!item.id) {\n item.id = `default-${nextId$1++}`;\n }\n if (item.children) {\n item.children = parsePanelBarItems(item.children);\n }\n return item;\n });\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isHorizontalArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight;\n/**\n * @hidden\n */\nconst isVerticalArrowKey = keyCode => keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\n/**\n * @hidden\n */\nconst isArrowKey = keyCode => isHorizontalArrowKey(keyCode) || isVerticalArrowKey(keyCode);\n/**\n * @hidden\n */\nconst isNavigationKey = keyCode => keyCode === Keys.PageUp || keyCode === Keys.PageDown ||\n keyCode === Keys.Home || keyCode === Keys.End;\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n */\nconst mapShapeToRounded = (shape) => SHAPE_TO_ROUNDED[shape] || 'none';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === 'number' && isFinite(value);\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nconst closestInScope = (target, predicate, scope, targetAttr) => {\n while (target && target !== scope && !predicate(target, targetAttr)) {\n target = target.parentNode;\n }\n if (target !== scope) {\n return target;\n }\n};\n/**\n * @hidden\n */\nconst itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);\nconst hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\n/**\n * @hidden\n */\nconst closestItem = (target, targetAttr, scope) => closestInScope(target, hasItemIndex, scope, targetAttr);\n\n/**\n * @hidden\n */\nlet nextPanelbarId = 0;\n/**\n * @hidden\n */\nclass PanelBarService {\n constructor() {\n this.parentSource = new Subject();\n this.keepContentSource = new BehaviorSubject(false);\n this.childSource = new Subject();\n this.parent$ = this.parentSource.asObservable();\n this.children$ = this.childSource.asObservable();\n this.keepContent$ = this.keepContentSource.asObservable();\n this.pbId = nextPanelbarId++;\n }\n onKeepContent(keepContent) {\n this.keepContentSource.next(keepContent);\n }\n onSelect(event) {\n this.childSource.next(event);\n }\n onFocus() {\n this.parentSource.next(true);\n }\n onBlur() {\n this.parentSource.next(false);\n }\n}\nPanelBarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPanelBarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nlet nextId = 0;\n/**\n * Represents the items of the PanelBar.\n */\nclass PanelBarItemComponent {\n constructor(parent, eventService, element, renderer) {\n this.parent = parent;\n this.eventService = eventService;\n this.element = element;\n this.renderer = renderer;\n /**\n * Allows the component to set the `\"id\"` property to each item.\n * Used to set the `id` attributes of the nested elements and to enable the WAI-ARIA support.\n */\n this.id = `default-${nextId++}`;\n /**\n * Defines the icon that will be rendered next to the title ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.icon = '';\n /**\n * Defines the icon that will be rendered next to the title by using a custom CSS class\n * ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.iconClass = '';\n /**\n * Defines the location of the image that will be displayed next to the title\n * ([see example]({% slug items_panelbar %}#toc-title-images)).\n */\n this.imageUrl = '';\n /**\n * When set to `true`, disables a PanelBar item ([see example]({% slug items_panelbar %}#toc-disabled-state)).\n */\n this.disabled = false;\n /**\n * Sets the selected state of a PanelBar item ([see example]({% slug items_panelbar %}#toc-selected-state)).\n */\n this.selected = false;\n this.keepContent = false;\n this.hasChildItems = false;\n this.hasItems = false;\n this.hasContent = false;\n this.state = \"inactive\";\n this.role = \"treeitem\";\n this.titleAttribute = null; // eslint-disable-line\n this.kItemClass = true;\n this.focused = false;\n this.wrapperFocused = false;\n this.subscriptions = new Subscription(() => { });\n this._expanded = false;\n this.subscriptions.add(eventService.parent$.subscribe(focused => this.onWrapperFocusChange(focused)));\n this.subscriptions.add(eventService.keepContent$.subscribe(keepContent => this.keepContent = keepContent));\n this.wrapperFocused = parent ? parent.focused : false;\n this.level = this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * When set to `true`, expands the PanelBar item ([see example]({% slug items_panelbar %}#toc-expanded-state)).\n */\n set expanded(value) {\n const activeState = this.animate ? \"active\" : \"activeWithoutAnimation\";\n this.state = value ? activeState : \"inactive\";\n if (!this.keepContent) {\n this.toggleExpandedChildAnimations(value);\n }\n this._expanded = value;\n }\n get expanded() {\n return this._expanded;\n }\n get animate() {\n return this.eventService.animate;\n }\n get kStateDefaultClass() {\n return !this.disabled;\n }\n get kStateDisabledClass() {\n return this.disabled;\n }\n get kStateExpandedClass() {\n return !this.disabled && this.expanded && (this.hasChildItems || this.hasContent);\n }\n get itemId() {\n return 'k-panelbar-' + this.eventService.pbId + '-item-' + this.id;\n }\n get ariaExpanded() {\n return (this.hasChildItems || this.hasContent) ? !this.disabled && this.expanded : null;\n }\n get ariaSelected() {\n return !this.disabled && this.selected;\n }\n get ariaDisabled() {\n return this.disabled ? true : null;\n }\n get headerClass() {\n return this.parent ? null : true;\n }\n get childClass() {\n return this.parent ? true : null;\n }\n /**\n * @hidden\n */\n get titleTemplate() {\n return this.titleTemplates.length > 0 ? this.titleTemplates.toArray()[0].templateRef : undefined;\n }\n /**\n * @hidden\n */\n headerHeight() {\n return this.element.nativeElement.offsetHeight - (this.contentWrapper ? this.contentWrapper.nativeElement.offsetHeight : 0);\n }\n ngOnInit() {\n this.addLevelClass();\n }\n ngAfterContentChecked() {\n this.hasItems = this.items && this.items.filter(item => !item.hidden).length > 0;\n this.hasChildItems = this.contentItems.filter(item => item !== this).length > 0 || this.hasItems;\n this.hasContent = (this.contentTemplate !== undefined && this.contentTemplate.length > 0) ||\n this.content !== undefined;\n this.validateConfiguration();\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n }\n else {\n this.childrenItems = this.contentItems.filter(item => item !== this);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onItemAction() {\n if (!this.disabled) {\n this.eventService.onSelect(this);\n }\n }\n /**\n * @hidden\n */\n onItemClick(e) {\n if (!isFocusable(e.target)) {\n this.onItemAction();\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n let icon = this.icon ? 'k-i-' + this.icon : null;\n return {\n [icon || this.iconClass]: true\n };\n }\n /**\n * @hidden\n */\n serialize() {\n return {\n content: this.content,\n disabled: this.disabled,\n expanded: this.expanded,\n focused: this.focused,\n icon: this.icon,\n iconClass: this.iconClass,\n id: this.id,\n imageUrl: this.imageUrl,\n selected: this.selected,\n title: this.title\n };\n }\n /**\n * @hidden\n */\n subTreeViewItems() {\n let subTree = [];\n this.viewChildItems.forEach(item => {\n subTree = subTree.concat(item.subTreeViewItems());\n subTree.push(item);\n });\n return subTree;\n }\n /**\n * @hidden\n */\n validateConfiguration() {\n if (isDevMode()) {\n if (this.content && (this.contentTemplate !== undefined && this.contentTemplate.length > 0)) {\n throw new Error(\"Invalid configuration: mixed template components and component property.\");\n }\n }\n }\n /**\n * @hidden\n */\n toggleAnimationState(value) {\n if (!this.animate) {\n return;\n }\n this.state = value && this.eventService.expandMode !== PanelBarExpandMode.Single ? 'active' : 'activeWithoutAnimation';\n }\n /**\n * @hidden\n */\n toggleExpandedChildAnimations(value) {\n if (this.childrenItems) {\n this.childrenItems.forEach(child => {\n if (child.expanded) {\n child.toggleAnimationState(value);\n child.toggleExpandedChildAnimations(value);\n }\n });\n }\n }\n /**\n * @hidden\n */\n addLevelClass() {\n if (this.level >= 0) {\n this.renderer.addClass(this.element.nativeElement, `k-level-${this.level}`);\n }\n }\n onWrapperFocusChange(focused) {\n this.wrapperFocused = focused;\n }\n}\nPanelBarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemComponent, deps: [{ token: PanelBarItemComponent, host: true, optional: true, skipSelf: true }, { token: PanelBarService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nPanelBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: { title: \"title\", id: \"id\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", expanded: \"expanded\", selected: \"selected\", content: \"content\", items: \"items\", template: \"template\" }, host: { properties: { \"attr.role\": \"this.role\", \"attr.title\": \"this.titleAttribute\", \"class.k-item\": \"this.kItemClass\", \"class.k-state-default\": \"this.kStateDefaultClass\", \"class.k-state-disabled\": \"this.kStateDisabledClass\", \"class.k-state-expanded\": \"this.kStateExpandedClass\", \"id\": \"this.itemId\", \"attr.aria-expanded\": \"this.ariaExpanded\", \"attr.aria-selected\": \"this.ariaSelected\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-panelbar-header\": \"this.headerClass\", \"class.k-panelbar-item\": \"this.childClass\" } }, queries: [{ propertyName: \"contentItems\", predicate: PanelBarItemComponent }, { propertyName: \"contentTemplate\", predicate: PanelBarContentDirective }, { propertyName: \"titleTemplates\", predicate: PanelBarItemTitleDirective }], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true }, { propertyName: \"viewChildItems\", predicate: PanelBarItemComponent, descendants: true }], exportAs: [\"kendoPanelbarItem\"], ngImport: i0, template: `\n \n \n \n \n {{title}}\n \n \n \n \n
    \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n {{content}}\n \n `, isInline: true, components: [{ type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: [\"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"expanded\", \"selected\", \"content\", \"items\", \"template\"], exportAs: [\"kendoPanelbarItem\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ],\n exportAs: 'kendoPanelbarItem',\n selector: \"kendo-panelbar-item\",\n template: `\n \n \n \n \n {{title}}\n \n \n \n \n
    \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n {{content}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: PanelBarItemComponent, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: PanelBarService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { title: [{\n type: Input\n }], id: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], selected: [{\n type: Input\n }], content: [{\n type: Input\n }], items: [{\n type: Input\n }], template: [{\n type: Input\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], titleAttribute: [{\n type: HostBinding,\n args: ['attr.title']\n }], kItemClass: [{\n type: HostBinding,\n args: ['class.k-item']\n }], kStateDefaultClass: [{\n type: HostBinding,\n args: ['class.k-state-default']\n }], kStateDisabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], kStateExpandedClass: [{\n type: HostBinding,\n args: ['class.k-state-expanded']\n }], itemId: [{\n type: HostBinding,\n args: ['id']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaSelected: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-header']\n }], childClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-item']\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent]\n }], contentTemplate: [{\n type: ContentChildren,\n args: [PanelBarContentDirective, { descendants: false }]\n }], titleTemplates: [{\n type: ContentChildren,\n args: [PanelBarItemTitleDirective, { descendants: false }]\n }] } });\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item content.\n */\nclass PanelBarItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanelBarItemTemplateDirective, selector: \"[kendoPanelBarItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `collapse` event of the PanelBar.\n */\nclass PanelBarCollapseEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `expand` event of the PanelBar.\n */\nclass PanelBarExpandEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `select` event of the PanelBar.\n */\nclass PanelBarSelectEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `stateChange` event of the PanelBar.\n */\nclass PanelBarStateChangeEvent {\n}\n\n/**\n * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).\n */\n// TODO: add styles as input prop\nclass PanelBarComponent {\n constructor(elementRef, eventService, localization) {\n this.localization = localization;\n /**\n * Sets the expand mode of the PanelBar through the `PanelBarExpandMode` enum ([see example]({% slug expandmodes_panelbar %})).\n *\n * The available modes are:\n * - `\"single\"`—Expands only one item at a time. Expanding an item collapses the item that was previously expanded.\n * - `\"multiple\"`—The default mode of the PanelBar.\n * Expands more than one item at a time. Items can also be toggled.\n * - `\"full\"`—Expands only one item at a time.\n * The expanded area occupies the entire height of the PanelBar. Requires you to set the `height` property.\n */\n this.expandMode = PanelBarExpandMode.Default;\n /**\n * Allows the PanelBar to modify the selected state of the items.\n */\n this.selectable = true;\n /**\n * Sets the animate state of the PanelBar ([see example]({% slug animations_panelbar %})).\n */\n this.animate = true;\n /**\n * Sets the height of the component when the `\"full\"` expand mode is used.\n * This option is ignored in the `\"multiple\"` and `\"single\"` expand modes.\n */\n this.height = '400px';\n /**\n * Fires each time the user interacts with a PanelBar item\n * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).\n * The event data contains a collection of all items that are modified.\n */\n this.stateChange = new EventEmitter();\n /**\n * Fires when an item is about to be selected.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will not be selected.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an item is about to be expanded.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain collapsed.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when an item is about to be collapsed.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain expanded.\n */\n this.collapse = new EventEmitter();\n this.tabIndex = 0;\n this.role = 'tree';\n this.hostClass = true;\n this.activeDescendant = '';\n this.isViewInit = true;\n this.focused = false;\n this._keepItemContent = false;\n this.updateChildrenHeight = () => {\n let childrenHeight = 0;\n const panelbarHeight = this.elementRef.nativeElement.offsetHeight;\n const contentOverflow = this.expandMode === PanelBarExpandMode.Full ? 'auto' : 'visible';\n this.childrenItems.forEach(item => {\n childrenHeight += item.headerHeight();\n });\n this.childrenItems.forEach(item => {\n item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? (panelbarHeight - childrenHeight) + 'px' : 'auto';\n item.contentOverflow = contentOverflow;\n });\n };\n validatePackage(packageMetadata);\n /* eslint-disable-line*/\n this.keyBindings = this.computedKeys;\n this.elementRef = elementRef;\n this.eventService = eventService;\n this.eventService.children$.subscribe(event => this.onItemAction(event));\n }\n /**\n * When set to `true`, the PanelBar renders the content of all items and they are persisted in the DOM\n * ([see example]({% slug templates_panelbar %}#toc-collections)).\n * By default, this option is set to `false`.\n */\n get keepItemContent() {\n return this._keepItemContent;\n }\n set keepItemContent(keepItemContent) {\n this._keepItemContent = keepItemContent;\n this.eventService.onKeepContent(keepItemContent);\n }\n /**\n * Sets the items of the PanelBar as an array of `PanelBarItemModel` instances\n * ([see example]({% slug items_panelbar %})).\n */\n set items(data) {\n if (data) {\n this._items = parsePanelBarItems(data);\n }\n }\n get items() {\n return this._items;\n }\n get hostHeight() {\n return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';\n }\n get overflow() {\n return this.expandMode === PanelBarExpandMode.Full ? 'hidden' : 'visible';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n get computedKeys() {\n return {\n [Keys.Space]: () => this.selectFocusedItem(),\n [Keys.Enter]: () => this.selectFocusedItem(),\n [Keys.ArrowUp]: () => this.focusPreviousItem(),\n [this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight)]: () => this.collapseItem(),\n [Keys.ArrowDown]: () => this.focusNextItem(),\n [this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft)]: () => this.expandItem(),\n [Keys.End]: () => this.focusLastItem(),\n [Keys.Home]: () => this.focusFirstItem()\n };\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(() => this.keyBindings = this.computedKeys);\n this.eventService.animate = this.animate;\n this.eventService.expandMode = this.expandMode;\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n this.allItems = this.viewItems;\n }\n else {\n this.childrenItems = this.contentChildItems.toArray();\n this.allItems = this.contentItems.toArray();\n }\n if (this.isViewInit && this.childrenItems.length) {\n this.isViewInit = false;\n setTimeout(() => this.updateChildrenHeight());\n }\n this.validateConfiguration();\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['expandMode'] || changes['items']) { // eslint-disable-line\n if (this.childrenItems) {\n setTimeout(this.updateChildrenHeight);\n }\n }\n if (changes.animate) {\n this.eventService.animate = this.animate;\n }\n if (changes.expandMode) {\n this.eventService.expandMode = this.expandMode;\n }\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n onComponentClick(event) {\n const itemClicked = this.visibleItems().some((item) => {\n return item.header.nativeElement.contains(event.target);\n });\n if (!isFocusable(event.target) && !this.focused && itemClicked) {\n this.elementRef.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.eventService.onFocus();\n this.focused = true;\n if (this.allItems.length > 0) {\n const visibleItems = this.visibleItems();\n const focusedItems = visibleItems.filter(item => item.focused);\n if (!focusedItems.length && visibleItems.length > 0) {\n visibleItems[0].focused = true;\n this.activeDescendant = visibleItems[0].itemId;\n }\n }\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.eventService.onBlur();\n this.focused = false;\n this.activeDescendant = '';\n }\n /**\n * @hidden\n */\n onComponentKeyDown(event) {\n if (event.target === this.elementRef.nativeElement) {\n if (event.keyCode === Keys.Space || event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowDown ||\n event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight || event.keyCode === Keys.Home ||\n event.keyCode === Keys.End || event.keyCode === Keys.PageUp || event.keyCode === Keys.PageDown) {\n event.preventDefault();\n }\n const handler = this.keyBindings[event.keyCode];\n //TODO: check if next item is disabled and skip operation?\n if (handler) {\n handler();\n }\n }\n }\n /**\n * @hidden\n */\n emitEvent(event, item) {\n let eventArgs;\n switch (event) {\n case 'select':\n eventArgs = new PanelBarSelectEvent();\n break;\n case 'collapse':\n eventArgs = new PanelBarCollapseEvent();\n break;\n default:\n eventArgs = new PanelBarExpandEvent();\n break;\n }\n eventArgs.item = item.serialize();\n this[event].emit(eventArgs);\n return eventArgs;\n }\n get viewItems() {\n let treeItems = [];\n this.viewChildItems.toArray().forEach(item => {\n treeItems.push(item);\n treeItems = treeItems.concat(item.subTreeViewItems());\n });\n return treeItems;\n }\n validateConfiguration() {\n if (isDevMode()) {\n if (this.items && (this.contentItems && this.contentItems.length > 0)) {\n throw new Error('Invalid configuration: mixed template components and items property.');\n }\n }\n }\n onItemAction(item) {\n if (!item) {\n return;\n }\n let modifiedItems = new Array();\n let selectPreventedItems = [];\n this.allItems\n .forEach((currentItem) => {\n let selectedState = currentItem === item;\n let focusedState = selectedState;\n selectedState = this.selectable ? selectedState : currentItem.selected;\n if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {\n const isSelectPrevented = selectedState ? this.emitEvent('select', currentItem).isDefaultPrevented() : false;\n if (!isSelectPrevented) {\n currentItem.selected = selectedState;\n currentItem.focused = focusedState;\n this.activeDescendant = focusedState ? currentItem.itemId : '';\n modifiedItems.push(currentItem);\n }\n else {\n selectPreventedItems.push(currentItem);\n }\n }\n });\n if (this.expandMode === PanelBarExpandMode.Multiple) {\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n const isEventPrevented = item.expanded ?\n this.emitEvent('collapse', item).isDefaultPrevented() :\n this.emitEvent('expand', item).isDefaultPrevented();\n if (!isEventPrevented) {\n item.expanded = !item.expanded;\n if (modifiedItems.indexOf(item) < 0) {\n modifiedItems.push(item);\n }\n }\n }\n }\n else {\n let siblings = item.parent ? item.parent.childrenItems : this.childrenItems;\n let preventedCollapseItem;\n let expandedItems = [];\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n siblings\n .forEach((currentItem) => {\n let expandedState = currentItem === item;\n if (currentItem.expanded !== expandedState) {\n const isEventPrevented = currentItem.expanded ?\n this.emitEvent('collapse', currentItem).isDefaultPrevented() :\n this.emitEvent('expand', currentItem).isDefaultPrevented();\n if (!isEventPrevented) {\n currentItem.expanded = expandedState;\n if (currentItem.expanded) {\n expandedItems.push(currentItem);\n }\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n else if (isEventPrevented && currentItem.expanded) {\n preventedCollapseItem = currentItem;\n }\n }\n else if (currentItem.expanded === expandedState && expandedState) {\n const isCollapsePrevented = this.emitEvent('collapse', currentItem).isDefaultPrevented();\n if (!isCollapsePrevented) {\n currentItem.expanded = !currentItem.expanded;\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n }\n });\n expandedItems.forEach(item => {\n if (preventedCollapseItem && item.id !== preventedCollapseItem.id) {\n item.expanded = false;\n if (isDevMode()) {\n const expandMode = PanelBarExpandMode[this.expandMode].toLowerCase();\n console.warn(`\n The ${expandMode} expandMode allows the expansion of only one item at a time.\n See https://www.telerik.com/kendo-angular-ui-develop/components/layout/panelbar/expand-modes/`);\n }\n }\n });\n }\n }\n if (modifiedItems.length > 0) {\n let eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems.map(currentItem => currentItem.serialize());\n this.stateChange.emit(eventArgs);\n }\n }\n isVisible(item) {\n const visibleItems = this.visibleItems();\n return visibleItems.some(i => i === item);\n }\n getVisibleParent(item) {\n const visibleItems = this.visibleItems();\n if (!item.parent) {\n return item;\n }\n return visibleItems.some(i => i === item.parent) ? item.parent : this.getVisibleParent(item.parent);\n }\n focusItem(action) {\n const visibleItems = this.visibleItems();\n let currentIndex = visibleItems.findIndex(item => item.focused);\n let currentItem = visibleItems[currentIndex];\n let nextItem;\n if (currentIndex === -1) {\n let focusedItem = this.allItems.find(item => item.focused);\n focusedItem.focused = false;\n currentItem = this.getVisibleParent(focusedItem);\n currentIndex = visibleItems.findIndex(item => item === currentItem);\n }\n switch (action) {\n case 'lastItem':\n nextItem = visibleItems[visibleItems.length - 1];\n break;\n case 'firstItem':\n nextItem = visibleItems[0];\n break;\n case 'nextItem':\n nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];\n break;\n case 'previousItem':\n nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];\n break;\n default:\n }\n if (currentItem && nextItem && currentItem !== nextItem) {\n this.moveFocus(currentItem, nextItem);\n }\n }\n moveFocus(from, to) {\n from.focused = false;\n to.focused = true;\n this.activeDescendant = to.itemId;\n const modifiedItems = new Array(from.serialize(), to.serialize());\n let eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems;\n this.stateChange.emit(eventArgs);\n }\n focusLastItem() {\n this.focusItem('lastItem');\n }\n focusFirstItem() {\n this.focusItem('firstItem');\n }\n focusNextItem() {\n this.focusItem('nextItem');\n }\n focusPreviousItem() {\n this.focusItem('previousItem');\n }\n expandItem() {\n let currentItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(currentItem)) {\n currentItem.focused = false;\n currentItem = this.getVisibleParent(currentItem);\n }\n if (currentItem.hasChildItems || currentItem.hasContent) {\n if (!currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.hasChildItems) {\n const firstChildIndex = currentItem.childrenItems.findIndex(item => !item.disabled);\n if (firstChildIndex > -1) {\n this.moveFocus(currentItem, currentItem.childrenItems[firstChildIndex]);\n }\n }\n }\n }\n collapseItem() {\n const currentItem = this.allItems.filter(item => item.focused)[0];\n if (currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.parent) {\n this.moveFocus(currentItem, currentItem.parent);\n }\n }\n selectFocusedItem() {\n let focusedItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(focusedItem)) {\n focusedItem.focused = false;\n focusedItem = this.getVisibleParent(focusedItem);\n }\n if (focusedItem) {\n focusedItem.onItemAction();\n }\n }\n visibleItems() {\n return this.flatVisibleItems(this.childrenItems);\n }\n flatVisibleItems(listOfItems = new Array(), flattedItems = new Array()) {\n listOfItems.forEach(item => {\n flattedItems.push(item);\n if (item.expanded && item.hasChildItems) {\n this.flatVisibleItems(item.childrenItems, flattedItems);\n }\n });\n return flattedItems;\n }\n}\nPanelBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarComponent, deps: [{ token: i0.ElementRef }, { token: PanelBarService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nPanelBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanelBarComponent, selector: \"kendo-panelbar\", inputs: { expandMode: \"expandMode\", selectable: \"selectable\", animate: \"animate\", height: \"height\", keepItemContent: \"keepItemContent\", items: \"items\" }, outputs: { stateChange: \"stateChange\", select: \"select\", expand: \"expand\", collapse: \"collapse\" }, host: { listeners: { \"click\": \"onComponentClick($event)\", \"focus\": \"onComponentFocus()\", \"blur\": \"onComponentBlur()\", \"keydown\": \"onComponentKeyDown($event)\" }, properties: { \"attr.tabIndex\": \"this.tabIndex\", \"attr.role\": \"this.role\", \"class.k-panelbar\": \"this.hostClass\", \"attr.aria-activedescendant\": \"this.activeDescendant\", \"style.height\": \"this.hostHeight\", \"style.overflow\": \"this.overflow\", \"attr.dir\": \"this.dir\" } }, providers: [\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: PanelBarItemTemplateDirective, descendants: true }, { propertyName: \"contentItems\", predicate: PanelBarItemComponent, descendants: true }, { propertyName: \"contentChildItems\", predicate: PanelBarItemComponent }], viewQueries: [{ propertyName: \"viewChildItems\", predicate: PanelBarItemComponent, descendants: true }], exportAs: [\"kendoPanelbar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: [\"title\", \"id\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"expanded\", \"selected\", \"content\", \"items\", \"template\"], exportAs: [\"kendoPanelbarItem\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoPanelbar',\n providers: [\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ],\n selector: 'kendo-panelbar',\n template: `\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: PanelBarService }, { type: i1.LocalizationService }]; }, propDecorators: { expandMode: [{\n type: Input\n }], selectable: [{\n type: Input\n }], animate: [{\n type: Input\n }], height: [{\n type: Input\n }], keepItemContent: [{\n type: Input\n }], items: [{\n type: Input\n }], stateChange: [{\n type: Output\n }], select: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-panelbar']\n }], activeDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], hostHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], overflow: [{\n type: HostBinding,\n args: ['style.overflow']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], template: [{\n type: ContentChild,\n args: [PanelBarItemTemplateDirective, { static: false }]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent, { descendants: true }]\n }], contentChildItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent]\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent]\n }], onComponentClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], onComponentKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * Represents the pane component of the Splitter.\n */\nclass SplitterPaneComponent {\n constructor(element, renderer, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Specifies if the user is allowed to resize the pane and provide space for other panes.\n */\n this.resizable = true;\n /**\n * Specifies if the user is allowed to hide the pane and provide space for other panes.\n */\n this.collapsible = false;\n /**\n * Specifies if overflowing content is scrollable or hidden.\n */\n this.scrollable = true;\n /**\n * Specifies if the pane is initially collapsed.\n */\n this.collapsed = false;\n /**\n * @hidden\n */\n this.orientation = 'horizontal';\n /**\n * @hidden\n */\n this.overlayContent = false;\n /**\n * Fires each time the user resizes the Splitter pane.\n * The event data contains the new pane size.\n * Allows a two-way binding of the pane `size` property.\n */\n this.sizeChange = new EventEmitter();\n /**\n * Fires each time the `collapsed` property changes.\n * The event data contains the new property state.\n * Allows a two-way binding of the `collapsed` pane property.\n */\n this.collapsedChange = new EventEmitter();\n this.ariaRole = 'group';\n this.hostClass = true;\n /**\n * @hidden\n */\n this.forceExpand = false;\n /**\n * @hidden\n */\n this.isResized = false;\n }\n /**\n * @hidden\n */\n set order(paneOrder) {\n this._order = paneOrder;\n this.setOrderStyles();\n }\n get order() {\n return this._order;\n }\n /**\n * Sets the initial size of the pane.\n * Has to be between the `min` and `max` properties.\n */\n set size(newSize) {\n this._size = newSize;\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-preferred-size', newSize);\n this.renderer.setStyle(element, 'flex-basis', newSize);\n if (this.staticPaneClass) {\n this.renderer.addClass(element, 'k-pane-static');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-static');\n }\n }\n get size() {\n return this._size;\n }\n /**\n * @hidden\n */\n set containsSplitter(value) {\n const element = this.element.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-pane-flex');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-flex');\n }\n }\n get isHidden() {\n return this.collapsed;\n }\n get staticPaneClass() {\n if (this.forceExpand) {\n return false;\n }\n return !this.resizable && !this.collapsible || this.fixedSize;\n }\n get scrollablePaneClass() {\n return this.scrollable;\n }\n get fixedSize() {\n return this.size && this.size.length > 0;\n }\n ngAfterViewChecked() {\n const element = this.element.nativeElement;\n if (this.isHidden) {\n this.renderer.addClass(element, 'k-state-hidden');\n this.renderer.addClass(element, 'hidden');\n }\n else {\n this.renderer.removeClass(element, 'k-state-hidden');\n this.renderer.removeClass(element, 'hidden');\n }\n }\n /**\n * @hidden\n */\n get computedSize() {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.offsetHeight;\n }\n else {\n return this.element.nativeElement.offsetWidth;\n }\n }\n /**\n * @hidden\n */\n toggleOverlay(show) {\n this.overlayContent = show;\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n detectChanges() {\n this.cdr.detectChanges();\n }\n setOrderStyles() {\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-order', this.order);\n this.renderer.setStyle(element, 'order', this.order);\n }\n}\nSplitterPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterPaneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSplitterPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitterPaneComponent, selector: \"kendo-splitter-pane\", inputs: { order: \"order\", size: \"size\", min: \"min\", max: \"max\", resizable: \"resizable\", collapsible: \"collapsible\", scrollable: \"scrollable\", collapsed: \"collapsed\", orientation: \"orientation\", containsSplitter: \"containsSplitter\", overlayContent: \"overlayContent\" }, outputs: { sizeChange: \"sizeChange\", collapsedChange: \"collapsedChange\" }, host: { properties: { \"attr.role\": \"this.ariaRole\", \"class.k-pane\": \"this.hostClass\", \"class.k-pane-static\": \"this.staticPaneClass\", \"class.k-scrollable\": \"this.scrollablePaneClass\" } }, exportAs: [\"kendoSplitterPane\"], ngImport: i0, template: `\n \n
    \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterPaneComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitterPane',\n selector: 'kendo-splitter-pane',\n template: `\n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { order: [{\n type: Input\n }], size: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], resizable: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], orientation: [{\n type: Input\n }], containsSplitter: [{\n type: Input\n }], overlayContent: [{\n type: Input\n }], sizeChange: [{\n type: Output\n }], collapsedChange: [{\n type: Output\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-pane']\n }], staticPaneClass: [{\n type: HostBinding,\n args: ['class.k-pane-static']\n }], scrollablePaneClass: [{\n type: HostBinding,\n args: ['class.k-scrollable']\n }] } });\n\nconst SIZING_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/layout/splitter/panes/#toc-size';\n/**\n * @hidden\n */\nclass SplitterService {\n constructor(zone) {\n this.zone = zone;\n this.layoutChange = new EventEmitter();\n this.containerSize = () => { };\n }\n tryToggle(paneIndex) {\n const pane = this.pane(paneIndex);\n if (pane.collapsible) {\n pane.collapsed = !pane.collapsed;\n pane.collapsedChange.emit(pane.collapsed);\n this.emit(this.layoutChange, {});\n if (pane.collapsed) {\n pane.detectChanges();\n }\n }\n const notCollapsed = this.panes.filter(p => !p.collapsed);\n const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);\n notCollapsed[notCollapsed.length - 1].forceExpand = allHaveFixedSize ? true : false;\n return pane.collapsible;\n }\n toggleContentOverlay(index, show) {\n this.pane(index).toggleOverlay(show);\n this.pane(index + 1).toggleOverlay(show);\n }\n dragState(splitbarIndex) {\n let prev = this.pane(splitbarIndex);\n let next = this.pane(splitbarIndex + 1);\n const total = prev.computedSize + next.computedSize;\n const px = s => this.toPixels(s);\n return {\n prev: {\n index: splitbarIndex,\n initialSize: prev.computedSize,\n min: px(prev.min) || total - px(next.max) || 0,\n max: px(prev.max) || total - px(next.min) || total\n },\n next: {\n index: splitbarIndex + 1,\n initialSize: next.computedSize,\n min: px(next.min) || total - px(prev.max) || 0,\n max: px(next.max) || total - px(prev.min) || total\n }\n };\n }\n setSize(state, delta) {\n const clamp = (min, max, v) => Math.min(max, Math.max(min, v));\n const resize = (paneState, change) => {\n const pane = this.pane(paneState.index);\n const splitterSize = this.containerSize();\n const newSize = clamp(paneState.min, paneState.max, paneState.initialSize + change);\n let size = \"\";\n if (this.isPercent(pane.size)) {\n size = (100 * newSize / splitterSize) + \"%\";\n }\n else {\n size = newSize + \"px\";\n }\n pane.size = size;\n pane.isResized = true;\n this.emit(pane.sizeChange, size);\n };\n const prev = this.pane(state.prev.index);\n const next = this.pane(state.next.index);\n // determine which pane to resize\n if (prev.fixedSize && next.fixedSize) {\n // resizing both panes\n resize(state.prev, delta);\n resize(state.next, -delta);\n }\n else if (next.collapsible || next.fixedSize) {\n // resizing next\n resize(state.next, -delta);\n }\n else {\n // resizing prev\n resize(state.prev, delta);\n }\n this.emit(this.layoutChange, {});\n }\n isDraggable(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsedPane = prev.collapsed || next.collapsed;\n return betweenResizablePanes && !nearCollapsedPane;\n }\n isStatic(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n }\n pane(index) {\n if (!this.panes) {\n throw new Error(\"Panes not initialized\");\n }\n if (index < 0 || index >= this.panes.length) {\n throw new Error(\"Index out of range\");\n }\n return this.panes[index];\n }\n configure({ panes, orientation, containerSize }) {\n this.panes = panes;\n this.panes.forEach((pane, index) => {\n pane.order = index * 2;\n pane.orientation = orientation;\n });\n if (isDevMode()) {\n const allPanesWithSize = panes.length && !panes.some(pane => !pane.fixedSize);\n const hasResizedPane = panes.length && panes.some(pane => pane.isResized);\n if (allPanesWithSize && !hasResizedPane) {\n throw new Error(`\n The Splitter should have at least one pane without a set size.\n See ${SIZING_DOC_LINK} for more information.\n `);\n }\n }\n this.containerSize = containerSize;\n }\n isPercent(size) {\n return /%$/.test(size);\n }\n toPixels(size) {\n let result = parseFloat(size);\n if (this.isPercent(size)) {\n result = (this.containerSize() * result / 100);\n }\n return result;\n }\n emit(emitter, args) {\n if (emitter.observers.length) {\n this.zone.run(() => emitter.emit(args));\n }\n }\n}\nSplitterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nSplitterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nconst stopPropagation = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst classFromObject = classes => Object.keys(classes).filter(c => classes[c]).join(' ');\nconst createMoveStream = (draggable) => mouseDown => draggable.kendoDrag\n .pipe(takeUntil(draggable.kendoRelease), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n})));\n/**\n * @hidden\n */\nclass SplitterBarComponent {\n constructor(draggable, element, splitter, localization) {\n this.draggable = draggable;\n this.element = element;\n this.splitter = splitter;\n this.localization = localization;\n this.orientation = 'horizontal';\n this.index = 0;\n this.ariaRole = 'separator';\n this.focused = false;\n this.subscriptions = new Subscription();\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabIndex() {\n return this.splitter.isStatic(this.index) ? -1 : 0;\n }\n get hostClasses() {\n const isHorizontal = this.orientation === 'horizontal';\n const isDraggable = this.splitter.isDraggable(this.index);\n const isStatic = this.splitter.isStatic(this.index);\n return classFromObject({\n 'k-state-focused': this.focused,\n 'k-splitbar': true,\n 'k-splitbar-horizontal': isHorizontal,\n 'k-splitbar-vertical': !isHorizontal,\n 'k-splitbar-draggable-horizontal': isHorizontal && isDraggable,\n 'k-splitbar-draggable-vertical': !isHorizontal && isDraggable,\n 'k-splitbar-static-horizontal': isHorizontal && isStatic,\n 'k-splitbar-static-vertical': !isHorizontal && isStatic,\n 'k-touch-action-none': isDraggable\n });\n }\n get order() {\n return 2 * this.index + 1;\n }\n collapseAny() {\n if (this.expandLast) {\n this.toggleNext();\n }\n else {\n this.tryToggleNearest();\n }\n }\n onFocusIn() {\n this.focused = true;\n }\n onFocusOut() {\n this.focused = false;\n }\n onKeyDown(event) {\n const keyCode = event && event.keyCode;\n const isHorizontal = this.orientation === 'horizontal';\n const resize = delta => {\n event.preventDefault();\n const state = this.splitter.dragState(this.index);\n this.splitter.setSize(state, delta);\n };\n if (keyCode === Keys.Enter) {\n event.preventDefault();\n this.collapseAny();\n }\n else if (isHorizontal && keyCode === Keys.ArrowLeft) {\n resize(-10);\n }\n else if (isHorizontal && keyCode === Keys.ArrowRight) {\n resize(10);\n }\n else if (!isHorizontal && keyCode === Keys.ArrowUp) {\n resize(-10);\n }\n else if (!isHorizontal && keyCode === Keys.ArrowDown) {\n resize(10);\n }\n }\n get expandLast() {\n const panes = this.splitter.panes;\n return panes.length === 2 && panes[1].collapsed;\n }\n ngOnInit() {\n let state;\n const listener = this.draggable.kendoPress.pipe(tap(stopPropagation), filter(() => this.splitter.isDraggable(this.index)), tap(() => state = this.splitter.dragState(this.index)), tap(() => this.splitter.toggleContentOverlay(this.index, true)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.draggable))).subscribe(({ pageX, pageY, originalX, originalY }) => {\n let delta;\n if (this.orientation === 'vertical') {\n delta = pageY - originalY;\n }\n else if (this.direction === 'rtl') {\n delta = originalX - pageX;\n }\n else {\n delta = pageX - originalX;\n }\n this.splitter.setSize(state, delta);\n });\n this.subscriptions.add(listener);\n this.subscriptions.add(this.draggable.kendoRelease.subscribe(() => this.splitter.toggleContentOverlay(this.index, false)));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n togglePrevious() {\n this.splitter.tryToggle(this.index);\n }\n toggleNext() {\n this.splitter.tryToggle(this.index + 1);\n }\n previousArrowClass() {\n const pane = this.splitter.pane(this.index);\n const nextPane = this.splitter.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n return classFromObject({\n 'k-icon': true,\n 'k-hidden': !isCollapsible || nextPane.isHidden,\n 'k-collapse-prev': isCollapsible,\n 'k-i-arrow-60-left': isCollapsible && isHorizontal && !isCollapsed,\n 'k-i-arrow-60-right': isCollapsible && isHorizontal && isCollapsed,\n 'k-i-arrow-60-up': isCollapsible && !isHorizontal && !isCollapsed,\n 'k-i-arrow-60-down': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n nextArrowClass() {\n const pane = this.splitter.pane(this.index + 1);\n const prevPane = this.splitter.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n return classFromObject({\n 'k-icon': true,\n 'k-hidden': !isCollapsible || prevPane.isHidden,\n 'k-collapse-next': isCollapsible,\n 'k-i-arrow-60-right': isCollapsible && isHorizontal && !isCollapsed,\n 'k-i-arrow-60-left': isCollapsible && isHorizontal && isCollapsed,\n 'k-i-arrow-60-down': isCollapsible && !isHorizontal && !isCollapsed,\n 'k-i-arrow-60-up': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n tryToggleNearest() {\n const prev = this.index;\n const next = this.index + 1;\n if (!this.splitter.tryToggle(prev)) {\n this.splitter.tryToggle(next);\n }\n }\n}\nSplitterBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterBarComponent, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: SplitterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSplitterBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitterBarComponent, selector: \"kendo-splitter-bar\", inputs: { orientation: \"orientation\", index: \"index\" }, host: { listeners: { \"dblclick\": \"collapseAny()\", \"focusin\": \"onFocusIn()\", \"focusout\": \"onFocusOut()\", \"keydown\": \"onKeyDown($event)\" }, properties: { \"attr.aria-orientation\": \"this.orientation\", \"attr.role\": \"this.ariaRole\", \"class.k-state-focused\": \"this.focused\", \"attr.tabindex\": \"this.tabIndex\", \"class\": \"this.hostClasses\", \"style.-ms-flex-order\": \"this.order\", \"style.order\": \"this.order\" } }, ngImport: i0, template: `\n
    \n
    \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-splitter-bar',\n template: `\n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: SplitterService }, { type: i1.LocalizationService }]; }, propDecorators: { orientation: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.aria-orientation']\n }], index: [{\n type: Input\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class']\n }], order: [{\n type: HostBinding,\n args: ['style.-ms-flex-order']\n }, {\n type: HostBinding,\n args: ['style.order']\n }], collapseAny: [{\n type: HostListener,\n args: ['dblclick']\n }], onFocusIn: [{\n type: HostListener,\n args: ['focusin']\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout']\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * Represents the [Kendo UI Splitter component for Angular]({% slug overview_splitter %}).\n *\n * ```ts-preview\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *\n * \n *

    Inner splitter / left pane

    \n *

    Resizable and collapsible.

    \n *
    \n *\n * \n *

    Inner splitter / center pane

    \n *

    Resizable only.

    \n *
    \n *\n * \n *

    Inner splitter / right pane

    \n *

    Resizable and collapsible.

    \n *
    \n *\n *
    \n * `,\n * styles: [ `\n * h3 { font-size: 1.2em; }\n * h3, p { margin: 10px; padding: 0; }\n * ` ]\n * })\n * class AppComponent {}\n * ```\n */\nclass SplitterComponent {\n constructor(element, splitterService, localization, renderer, enclosingPane) {\n this.element = element;\n this.splitterService = splitterService;\n this.localization = localization;\n this.renderer = renderer;\n this.enclosingPane = enclosingPane;\n /**\n * Specifies the orientation of the panes within the Splitter.\n * Panes in a horizontal Splitter are placed horizontally.\n * Panes in a vertical Splitter are placed vertically.\n */\n this.orientation = 'horizontal';\n validatePackage(packageMetadata);\n if (enclosingPane) {\n enclosingPane.containsSplitter = true;\n }\n // the handler only runs in NgZone if there are bound handlers\n // this line merges both streams\n this.layoutChange = this.splitterService.layoutChange;\n this.configure = this.configure.bind(this);\n }\n get hostClasses() {\n return true;\n }\n get horizontalHostClasses() {\n return this.orientation === 'horizontal';\n }\n get verticalHostClasses() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n set splitbars(splitbars) {\n if (!isPresent(splitbars) || !isPresent(this.panes)) {\n return;\n }\n const components = [...this.panes.toArray(), ...splitbars.toArray()]\n .sort((a, b) => a.order - b.order);\n const elements = components.map(component => component.element.nativeElement);\n elements.forEach(element => this.renderer.appendChild(this.element.nativeElement, element));\n }\n ngAfterContentInit() {\n this.reconfigure();\n }\n ngOnChanges(changes) {\n if (changes.orientation && !changes.orientation.isFirstChange()) {\n this.reconfigure();\n }\n }\n ngOnDestroy() {\n if (this.enclosingPane) {\n this.enclosingPane.containsSplitter = false;\n }\n this.unsubscribeChanges();\n }\n reconfigure() {\n this.unsubscribeChanges();\n this.configure();\n this.paneChangesSubscription = this.panes.changes.subscribe(this.configure);\n }\n unsubscribeChanges() {\n if (this.paneChangesSubscription) {\n this.paneChangesSubscription.unsubscribe();\n this.paneChangesSubscription = null;\n }\n }\n configure() {\n this.splitterService.configure({\n panes: this.panes.toArray(),\n orientation: this.orientation,\n containerSize: () => {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.clientHeight;\n }\n else {\n return this.element.nativeElement.clientWidth;\n }\n }\n });\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: SplitterService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: SplitterPaneComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitterComponent, selector: \"kendo-splitter\", inputs: { orientation: \"orientation\" }, outputs: { layoutChange: \"layoutChange\" }, host: { properties: { \"class.k-splitter\": \"this.hostClasses\", \"class.k-splitter-flex\": \"this.hostClasses\", \"class.k-splitter-horizontal\": \"this.horizontalHostClasses\", \"class.k-splitter-vertical\": \"this.verticalHostClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ], queries: [{ propertyName: \"panes\", predicate: SplitterPaneComponent }], viewQueries: [{ propertyName: \"splitbars\", predicate: SplitterBarComponent, descendants: true }], exportAs: [\"kendoSplitter\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, components: [{ type: SplitterBarComponent, selector: \"kendo-splitter-bar\", inputs: [\"orientation\", \"index\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitter',\n selector: 'kendo-splitter',\n providers: [\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ],\n template: `\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SplitterService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: SplitterPaneComponent, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: Inject,\n args: [SplitterPaneComponent]\n }] }]; }, propDecorators: { orientation: [{\n type: Input\n }], layoutChange: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter']\n }, {\n type: HostBinding,\n args: ['class.k-splitter-flex']\n }], horizontalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-horizontal']\n }], verticalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-vertical']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], splitbars: [{\n type: ViewChildren,\n args: [SplitterBarComponent]\n }], panes: [{\n type: ContentChildren,\n args: [SplitterPaneComponent]\n }] } });\n\n/**\n * Represents the content template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabContent` inside the component tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

    Content 1

    \n *
    \n *
    \n *\n * \n * \n *

    Content 2

    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass TabContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTabContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabContentDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTabContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabContentDirective, selector: \"[kendoTabContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTabContent]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the title template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabTitle` directive inside the component tag.\n *\n * > The `kendoTabTitle` directive overrides the TabStripTab [title]({% slug api_layout_tabstriptabcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

    Custom Title

    \n *
    \n * \n *

    Content 1

    \n *
    \n *
    \n *\n * \n * \n *

    Content 2

    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass TabTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTabTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabTitleDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTabTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabTitleDirective, selector: \"[kendoTabTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTabTitle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the tab component of the TabStrip.\n */\nclass TabStripTabComponent {\n constructor() {\n /**\n * Used to disable a tab ([see example]({% slug tabs_tabstrip %}#toc-disabled-tabs)).\n *\n * Defaults to `false`.\n */\n this.disabled = false;\n this._tabContent = new QueryList();\n /**\n * @hidden\n *\n * Currently only disabled tabs can be focused. Otherwise they will be\n * immediately selected\n */\n this.focused = false;\n }\n get tabContent() {\n return this._tabContent.first;\n }\n get tabTitle() {\n return this._tabTitleDirective.first;\n }\n}\nTabStripTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTabStripTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabStripTabComponent, selector: \"kendo-tabstrip-tab\", inputs: { title: \"title\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\", selected: \"selected\", closable: \"closable\", closeIcon: \"closeIcon\" }, queries: [{ propertyName: \"_tabContent\", predicate: TabContentDirective }, { propertyName: \"_tabTitleDirective\", predicate: TabTitleDirective }], exportAs: [\"kendoTabStripTab\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripTabComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTabStripTab',\n selector: 'kendo-tabstrip-tab',\n template: ``\n }]\n }], propDecorators: { title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], selected: [{\n type: Input\n }], closable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], _tabContent: [{\n type: ContentChildren,\n args: [TabContentDirective]\n }], _tabTitleDirective: [{\n type: ContentChildren,\n args: [TabTitleDirective]\n }] } });\n\n/**\n * Arguments for the `tabClose` event of the TabStrip.\n * The `tabClose` event fires when the close button of the tab is clicked.\n *\n */\nclass TabCloseEvent {\n /**\n * Constructs the event arguments for the `tabClose` event.\n * @param index - The index of the closed tab.\n * @param tab - The closed tab instance\n */\n constructor(index, tab) {\n this.index = index;\n this.tab = tab;\n }\n}\n\n/**\n * Arguments for the `select` event of the TabStrip.\n * The `select` event fires when a tab is selected (clicked).\n */\nclass SelectEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `select` event.\n * @param index - The index of the selected tab.\n * @param title - The title of the selected tab.\n */\n constructor(index, title) {\n super();\n this.index = index;\n this.title = title;\n }\n}\n\n/**\n * @hidden\n *\n * Checks if the current target is a TabStrip tab element\n */\nconst isTabElement = (target) => {\n const targetId = target.getAttribute('id');\n if (isPresent(targetId) || targetId.indexOf('k-tabstrip-tab-') >= 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n *\n * Checks if the current tab is closable. Depends on the value of the TabStrip closable property.\n */\nconst isTabClosable = (tab, tabStripClosable) => {\n if (tab.closable !== undefined) {\n return tab.closable;\n }\n return tabStripClosable;\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip scroll buttons will be rendered. Depends on the value of the TabStrip scrollable settings.\n */\nconst tabStripHasScrollButtons = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.scrollButtons !== 'hidden';\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip mouse scroll will be enabled. Depends on the value of the TabStrip scrollable settings.\n */\nconst mouseScrollEnabled = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.mouseScroll;\n};\n/**\n * @hidden\n *\n * Retrieves the current active tab element and its index.\n * This could either be the currently selected tab or the currently focused tab.\n */\nconst getActiveTab = (tabs) => {\n let focusedTab;\n let selectedTab;\n let focusedIndex = -1;\n let selectedIndex = -1;\n tabs.forEach((tab, index) => {\n if (tab.selected) {\n selectedTab = tab;\n selectedIndex = index;\n }\n else if (tab.focused) {\n focusedTab = tab;\n focusedIndex = index;\n }\n });\n return focusedIndex >= 0 ?\n { tab: focusedTab, index: focusedIndex } :\n { tab: selectedTab, index: selectedIndex };\n};\n/**\n * @hidden\n */\nconst getTabByIndex = (tabs, index) => {\n const filtered = tabs.filter((_tab, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst getTabHeaderByIndex = (tabHeaderContainers, index) => {\n const filtered = tabHeaderContainers.filter((_tabHeader, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst resetTabFocus = (tabs) => {\n tabs.forEach((tab) => {\n tab.focused = false;\n });\n};\n/**\n * @hidden\n */\nconst resetTabSelection = (tabs) => {\n tabs.forEach((tab) => {\n tab.selected = false;\n });\n};\n/**\n * @hidden\n */\nconst isTablistHorizontal = (tabPosition) => tabPosition === 'top' || tabPosition === 'bottom';\n\n/**\n * @hidden\n */\nclass TabStripService {\n constructor(localization, ngZone) {\n this.localization = localization;\n this.ngZone = ngZone;\n }\n onKeyDown(event) {\n if (!isTabElement(event.target)) {\n return;\n }\n const key = event.keyCode;\n if (this.shouldHandleKey(key)) {\n event.preventDefault();\n }\n else {\n return;\n }\n if (isNavigationKey(key) || isArrowKey(key)) {\n this.onNavigate(key);\n }\n else if (key === Keys.Delete) {\n this.onDelete();\n }\n }\n onTabSelect(tab, index) {\n const selectArgs = new SelectEvent(index, tab.title);\n this.owner.tabSelect.emit(selectArgs);\n if (!selectArgs.isDefaultPrevented()) {\n if (tab.selected) {\n this.focusTabHeader(index);\n return;\n }\n this.selectTab(tab, index);\n }\n }\n selectTab(tab, index) {\n resetTabSelection(this.owner.tabs);\n this.focusTabHeader(index);\n tab.selected = true;\n if (this.owner.isScrollable) {\n this.owner.scrollToSelectedTab();\n }\n }\n onNavigate(keyCode) {\n let { tab: activeTab, index: activeIndex } = getActiveTab(this.owner.tabs);\n if (!NgZone.isInAngularZone()) {\n this.ngZone.run(() => {\n if (activeIndex < 0) {\n this.owner.selectTab(this.firstNavigatableIndex());\n return;\n }\n activeTab.focused = false;\n const nextIndex = this.computeNextIndex(activeIndex, keyCode);\n this.activateTab(nextIndex);\n });\n }\n }\n onDelete() {\n let { tab: activeTab, index: activeTabIndex } = getActiveTab(this.owner.tabs);\n if (isTabClosable(activeTab, this.owner.closable) && !activeTab.disabled) {\n this.ngZone.run(() => {\n this.owner.tabClose.emit({ tab: activeTab, index: activeTabIndex });\n });\n }\n }\n activateTab(index) {\n const tab = getTabByIndex(this.owner.tabs, index);\n if (tab.disabled) {\n this.focusTabHeader(index);\n tab.focused = true;\n }\n else {\n this.onTabSelect(tab, index);\n }\n }\n focusTabHeader(index) {\n const tabHeader = getTabHeaderByIndex(this.owner.tabHeaderContainers, index);\n tabHeader.nativeElement.focus();\n }\n shouldHandleKey(keyCode) {\n if (isNavigationKey(keyCode)) {\n return true;\n }\n if (isTablistHorizontal(this.owner.tabPosition) && isHorizontalArrowKey(keyCode)) {\n return true;\n }\n if (!isTablistHorizontal(this.owner.tabPosition) && isVerticalArrowKey(keyCode)) {\n return true;\n }\n if (keyCode === Keys.Delete) {\n return true;\n }\n return false;\n }\n computeNextIndex(activeIndex, keyCode) {\n switch (keyCode) {\n case this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight):\n case this.invertKeys(Keys.ArrowUp, Keys.ArrowDown):\n return this.prevNavigatableIndex(activeIndex);\n case this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft):\n case this.invertKeys(Keys.ArrowDown, Keys.ArrowUp):\n return this.nextNavigatableIndex(activeIndex);\n case Keys.Home:\n return this.firstNavigatableIndex();\n case Keys.End:\n return this.lastNavigatableIndex();\n default:\n return;\n }\n }\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n firstNavigatableIndex() {\n return 0;\n }\n lastNavigatableIndex() {\n return this.owner.tabs.length - 1;\n }\n prevNavigatableIndex(selectedIndex) {\n if (selectedIndex - 1 < 0) {\n return this.lastNavigatableIndex();\n }\n return selectedIndex - 1;\n }\n nextNavigatableIndex(selectedIndex) {\n if (selectedIndex + 1 >= this.owner.tabs.length) {\n return this.firstNavigatableIndex();\n }\n return selectedIndex + 1;\n }\n}\nTabStripService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nTabStripService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst MOUSE_SCROLL_SPEED = 10;\n/**\n * @hidden\n */\nconst BUTTON_SCROLL_SPEED = 100;\n/**\n * @hidden\n */\nconst SCROLLABLE_CLASS = 'k-tabstrip-scrollable';\n/**\n * @hidden\n */\nconst HIDDEN_CLASS = 'k-hidden';\n/**\n * @hidden\n */\nconst DIRECTION_CLASSES = {\n left: 'k-i-arrow-60-left',\n right: 'k-i-arrow-60-right',\n up: 'k-i-arrow-60-up',\n down: 'k-i-arrow-60-down'\n};\n/**\n * @hidden\n */\nconst DEFAULT_SCROLL_BEHAVIOR = 'smooth';\n\n/**\n * @hidden\n */\nclass ScrollService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.position = 0;\n this.scrollButtonActiveStateChange = new Subject();\n this.isDisabled = (buttonType) => this.owner[`${buttonType}ScrollButton`].host.nativeElement.classList.contains('k-disabled');\n }\n get tablistElement() {\n return this.owner.tablist.nativeElement;\n }\n get tabstripSize() {\n const hostElement = this.owner.wrapper.nativeElement;\n const wrapperWidth = parseFloat(getComputedStyle(hostElement).width);\n const wrapperHeight = parseFloat(getComputedStyle(hostElement).height);\n return isTablistHorizontal(this.owner.tabPosition) ? wrapperWidth : wrapperHeight;\n }\n get tablistOverflowSize() {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n const overflowSize = Math.floor(this.tablistElement[isHorizontal ? 'scrollWidth' : 'scrollHeight']\n - this.tablistElement.getBoundingClientRect()[isHorizontal ? 'width' : 'height']);\n return overflowSize < 0 ? 0 : overflowSize;\n }\n get tabsOverflow() {\n return this.tablistOverflowSize > 0;\n }\n get scrollButtonsSize() {\n if (!this.owner.hasScrollButtons) {\n return 0;\n }\n const prevRect = this.owner.prevScrollButton.hostBoundingClientRect;\n const prevSize = isTablistHorizontal(this.owner.tabPosition) ? prevRect.width : prevRect.height;\n const nextRect = this.owner.nextScrollButton.hostBoundingClientRect;\n const nextSize = isTablistHorizontal(this.owner.tabPosition) ? nextRect.width : nextRect.height;\n return prevSize + nextSize;\n }\n toggleScrollButtonsState() {\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const currentPrevButtonActive = !this.isDisabled('prev');\n const currentNextButtonActive = !this.isDisabled('next');\n const calculatedPrevButtonActive = this.position > 0 && this.tablistOverflowSize > 0;\n const calculatedNextButtonActive = this.position < this.tablistOverflowSize + this.scrollButtonsSize && this.tablistOverflowSize > 0;\n if (calculatedPrevButtonActive !== currentPrevButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));\n }\n if (calculatedNextButtonActive !== currentNextButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));\n }\n }\n scrollToSelectedTab() {\n if (!this.tabsOverflow) {\n return;\n }\n let { index: activeIndex } = getActiveTab(this.owner.tabs);\n if (activeIndex === -1) {\n return;\n }\n this.position += this.getScrollOffset(activeIndex);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const isFirstTabActive = activeIndex === 0;\n const isLastTabActive = activeIndex === this.owner.tabs.length - 1;\n if (isFirstTabActive && !this.isDisabled('prev')) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', false));\n }\n if (isLastTabActive && !this.isDisabled('next')) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', false));\n }\n }\n getScrollOffset(activeIndex) {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n this.tablistElement[`scroll${isHorizontal ? 'Left' : 'Top'}`] = this.position;\n const activeTabRect = this.tablistElement.children[activeIndex].getBoundingClientRect();\n const tablistRect = this.tablistElement.getBoundingClientRect();\n const end = isHorizontal ? 'right' : 'bottom';\n const start = isHorizontal ? 'left' : 'top';\n const activeTabStart = activeTabRect[start];\n const activeTabEnd = activeTabRect[end];\n const tablistStart = tablistRect[start];\n const tablistEnd = tablistRect[end];\n const tabEndIsInVisibleRange = activeTabEnd <= tablistEnd;\n const tabStartIsInVisibleRange = activeTabStart >= tablistStart;\n const isWholeTabVisible = tabEndIsInVisibleRange && tabStartIsInVisibleRange;\n if (isWholeTabVisible) {\n return 0;\n }\n if (!tabEndIsInVisibleRange) {\n return activeTabEnd - tablistEnd;\n }\n if (!tabStartIsInVisibleRange) {\n return activeTabStart - tablistStart;\n }\n }\n onMouseScroll(event) {\n event.preventDefault();\n if (!mouseScrollEnabled(this.owner.scrollable)) {\n return;\n }\n const direction = event.deltaY < 0 ? 'prev' : 'next';\n this.calculateListPosition(direction, this.owner.scrollable.mouseScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n scrollTabs(direction) {\n this.calculateListPosition(direction, this.owner.scrollable.buttonScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollTo({ left: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n else {\n this.tablistElement.scrollTo({ top: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n this.toggleScrollButtonsState();\n }\n calculateListPosition(direction, scrollSpeed) {\n const adjustedMaxScroll = this.tablistOverflowSize + this.scrollButtonsSize;\n if (direction === 'prev' && this.position > 0) {\n this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;\n }\n else if (direction === 'next' && this.position < adjustedMaxScroll) {\n if (this.position + scrollSpeed > adjustedMaxScroll) {\n this.position = adjustedMaxScroll;\n return;\n }\n this.position += scrollSpeed;\n }\n }\n restoreScrollPosition() {\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollTo({ left: this.position });\n }\n else {\n this.tablistElement.scrollTo({ top: this.position });\n }\n this.toggleScrollButtonsState();\n }\n toggleButtonActiveState(buttonType, active) {\n this.scrollButtonActiveStateChange.next({ buttonType, active });\n }\n}\nScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({ enabled = true, scrollButtons = 'auto', mouseScroll = true, buttonScrollSpeed = BUTTON_SCROLL_SPEED, mouseScrollSpeed = MOUSE_SCROLL_SPEED, prevButtonIcon, nextButtonIcon }) => ({\n enabled,\n scrollButtons,\n mouseScroll,\n buttonScrollSpeed,\n mouseScrollSpeed,\n prevButtonIcon,\n nextButtonIcon\n});\n/**\n * @hidden\n */\nconst normalizeScrollableSettings = (settings) => normalizeSettings(settings === false ? { enabled: false } : settings);\n\n/**\n * Arguments for the `tabScroll` event of the TabStrip.\n * The `tabScroll` event fires when the tabs are being scrolled.\n *\n */\nclass TabScrollEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nclass TabStripScrollableButtonComponent {\n constructor(host, renderer, ngZone) {\n this.host = host;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.btnClasses = true;\n this.prev = false;\n this.tabScroll = new EventEmitter();\n this.onClick = new EventEmitter();\n this.subs = new Subscription();\n this.clickHandler = (scrollEvent) => {\n const tabStripScrollEvent = this.emitScrollEvent(scrollEvent);\n const isTabStripScrollEventPrevented = tabStripScrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented) {\n return;\n }\n const buttonType = this.prev ? 'prev' : 'next';\n this.onClick.emit(buttonType);\n };\n }\n get prevClass() {\n return this.prev;\n }\n get nextClass() {\n return !this.prev;\n }\n get hostBoundingClientRect() {\n return this.host.nativeElement.getBoundingClientRect();\n }\n get iconClass() {\n return this.scrollButtonIconClass[this.prev ? 'prevScrollButton' : 'nextScrollButton'];\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', this.clickHandler));\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggle(show) {\n this.renderer[show ? 'removeClass' : 'addClass'](this.host.nativeElement, HIDDEN_CLASS);\n }\n get scrollButtonIconClass() {\n const defaultPrevIcon = isTablistHorizontal(this.tabPosition) ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.up;\n const defaultNextIcon = isTablistHorizontal(this.tabPosition) ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.down;\n if (typeof this.scrollable === 'object') {\n const prevIcon = typeof this.scrollable.prevButtonIcon === 'undefined' ? defaultPrevIcon : this.scrollable.prevButtonIcon;\n const nextIcon = typeof this.scrollable.nextButtonIcon === 'undefined' ? defaultNextIcon : this.scrollable.nextButtonIcon;\n return { prevScrollButton: prevIcon, nextScrollButton: nextIcon };\n }\n return { prevScrollButton: defaultPrevIcon, nextScrollButton: defaultNextIcon };\n }\n emitScrollEvent(event) {\n const scrollEvent = new TabScrollEvent({\n originalEvent: event\n });\n this.tabScroll.emit(scrollEvent);\n return scrollEvent;\n }\n}\nTabStripScrollableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripScrollableButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTabStripScrollableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabStripScrollableButtonComponent, selector: \"[kendoTabStripScrollableButton]\", inputs: { prev: \"prev\", tabPosition: \"tabPosition\", scrollable: \"scrollable\" }, outputs: { tabScroll: \"tabScroll\", onClick: \"onClick\" }, host: { properties: { \"class.k-button\": \"this.btnClasses\", \"class.k-button-md\": \"this.btnClasses\", \"class.k-icon-button\": \"this.btnClasses\", \"class.k-rounded-md\": \"this.btnClasses\", \"class.k-button-flat\": \"this.btnClasses\", \"class.k-button-flat-base\": \"this.btnClasses\", \"class.k-tabstrip-prev\": \"this.prevClass\", \"class.k-tabstrip-next\": \"this.nextClass\" } }, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripScrollableButtonComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n `,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoTabStripScrollableButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { btnClasses: [{\n type: HostBinding,\n args: ['class.k-button']\n }, {\n type: HostBinding,\n args: ['class.k-button-md']\n }, {\n type: HostBinding,\n args: ['class.k-icon-button']\n }, {\n type: HostBinding,\n args: ['class.k-rounded-md']\n }, {\n type: HostBinding,\n args: ['class.k-button-flat']\n }, {\n type: HostBinding,\n args: ['class.k-button-flat-base']\n }], prevClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-prev']\n }], nextClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-next']\n }], prev: [{\n type: Input\n }], tabPosition: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], tabScroll: [{\n type: Output\n }], onClick: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass TabComponent {\n constructor(localization) {\n this.localization = localization;\n this.tabClose = new EventEmitter();\n this.hostClasses = true;\n }\n get activeClass() {\n return this.tab.selected;\n }\n get disabledClass() {\n return this.tab.disabled;\n }\n get focusedClass() {\n return this.tab.focused;\n }\n get tabIndex() {\n return this.tab.selected || this.tab.focused ? 0 : -1;\n }\n get tabClosable() {\n if (this.tab.closable !== undefined) {\n return this.tab.closable;\n }\n return this.tabStripClosable;\n }\n get closeButtonClasses() {\n if (isPresent(this.tab.closeIcon)) {\n return this.tab.closeIcon;\n }\n return this.tabStripCloseIcon;\n }\n get closeButtonTitle() {\n return this.localization.get('closeTitle');\n }\n closeTab(index) {\n const closeArgs = new TabCloseEvent(index, this.tab);\n this.tabClose.emit(closeArgs);\n }\n}\nTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabComponent, selector: \"[kendoTabStripTab]\", inputs: { tab: \"tab\", index: \"index\", tabStripClosable: \"tabStripClosable\", tabStripCloseIcon: \"tabStripCloseIcon\" }, outputs: { tabClose: \"tabClose\" }, host: { properties: { \"class.k-item\": \"this.hostClasses\", \"class.k-state-default\": \"this.hostClasses\", \"attr.aria-selected]\": \"this.activeClass\", \"class.k-state-active\": \"this.activeClass\", \"attr.aria-disabled]\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"class.k-state-focused\": \"this.focusedClass\", \"attr.tabindex\": \"this.tabIndex\" } }, ngImport: i0, template: `\n {{ tab.title }}\n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoTabStripTab]',\n template: `\n {{ tab.title }}\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { tab: [{\n type: Input\n }], index: [{\n type: Input\n }], tabStripClosable: [{\n type: Input\n }], tabStripCloseIcon: [{\n type: Input\n }], tabClose: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-item']\n }, {\n type: HostBinding,\n args: ['class.k-state-default']\n }], activeClass: [{\n type: HostBinding,\n args: ['attr.aria-selected]']\n }, {\n type: HostBinding,\n args: ['class.k-state-active']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled]']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }] } });\n\n/**\n * @hidden\n */\nclass TabStripMessages extends ComponentMessages {\n}\nTabStripMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTabStripMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabStripMessages, selector: \"kendo-tabstrip-messages-base\", inputs: { closeTitle: \"closeTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-tabstrip-messages-base'\n }]\n }], propDecorators: { closeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedTabStripMessagesDirective extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedTabStripMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTabStripMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedTabStripMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedTabStripMessagesDirective, selector: \"[kendoTabStripLocalizedMessages]\", providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTabStripMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective)\n }\n ],\n selector: `[kendoTabStripLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI TabStrip component for Angular]({% slug overview_tabstrip %}).\n */\nclass TabStripComponent {\n constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone) {\n this.localization = localization;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.tabstripService = tabstripService;\n this.scrollService = scrollService;\n this.ngZone = ngZone;\n /**\n * Enables the tab animation.\n *\n * @default true\n */\n this.animate = true;\n /**\n * Sets the position of the tabs. Defaults to `top`.\n *\n * @default 'top'\n */\n this.tabPosition = 'top';\n /**\n * When set to `true`, the component renders all tabs and they are persisted in the DOM.\n * By default, `keepTabContent` is `false`.\n *\n * @default false\n */\n this.keepTabContent = false;\n /**\n * When set to `true`, a close button will be rendered inside each tab.\n * By default, `closable` is `false`.\n *\n * @default false\n */\n this.closable = false;\n /**\n * Allows defining a custom CSS class, or multiple classes separated by spaces, which will be applied to the close button span element.\n * Allows the usage of custom icons.\n */\n this.closeIcon = 'k-icon k-i-x';\n /**\n * Fires each time the user selects a tab ([see example]({% slug overview_tabstrip %}#toc-basic-usage)).\n * The event data contains the index of the selected tab and its title.\n */\n this.tabSelect = new EventEmitter();\n /**\n * Fires each time the user closes a tab.\n * The event data contains the index of the closed tab and its instance.\n */\n this.tabClose = new EventEmitter();\n /**\n * Fires each time the user scrolls the TabStrip list.\n * The event is preventable.\n */\n this.tabScroll = new EventEmitter();\n this.hostClasses = true;\n /**\n * A query list of all declared tabs.\n */\n this.tabs = new QueryList();\n this._scrollableSettings = normalizeScrollableSettings(false);\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n validatePackage(packageMetadata);\n this.tabstripService.owner = this;\n this.scrollService.owner = this;\n this.subscriptions.add(this.scrollService.scrollButtonActiveStateChange.subscribe((activeButtonSettings) => {\n if (this.hasScrollButtons) {\n const action = activeButtonSettings.active ? 'remove' : 'add';\n this.renderer[`${action}Class`](this[`${activeButtonSettings.buttonType}ScrollButton`].host.nativeElement, 'k-disabled');\n }\n }));\n }\n /**\n * Sets the height of the TabStrip.\n */\n set height(value) {\n this._height = value;\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', value);\n }\n get height() {\n return this._height;\n }\n /**\n * Enables the scrolling of the tab list. When set to `true` and the total size of all tabs\n * is greater than the size of the TabStrip container, scroll buttons will be rendered on each end of the tab list.\n *\n * By default, `scrollable` is `false`.\n *\n * @default false\n */\n set scrollable(value) {\n this._scrollableSettings = normalizeScrollableSettings(value);\n if (this.tablist) {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.attachWheelHandler(this.tablist.nativeElement);\n }\n }\n get scrollable() {\n return this._scrollableSettings;\n }\n get tabsAtTop() {\n return this.tabPosition === 'top';\n }\n get tabsAtRight() {\n return this.tabPosition === 'right';\n }\n get tabsAtBottom() {\n return this.tabPosition === 'bottom';\n }\n get tabsAtLeft() {\n return this.tabPosition === 'left';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabStripScrollable() {\n return this._scrollableSettings.enabled;\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n setTimeout(() => {\n this.scrollToSelectedTab();\n });\n });\n this.initDomEvents();\n }\n ngOnChanges(changes) {\n const positionChange = changes.tabPosition;\n if (positionChange) {\n const tabsAtBottomChanged = positionChange.previousValue === 'bottom' || positionChange.currentValue === 'bottom';\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (tabsAtBottomChanged) {\n if (this.subscriptionsArePresent) {\n this.subscriptions.unsubscribe();\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n }\n this.initDomEvents();\n }\n this.scrollService.restoreScrollPosition();\n });\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get tabsAlignmentStyles() {\n return {\n start: 'flex-start',\n end: 'flex-end',\n center: 'center',\n justify: 'space-between'\n }[this.tabAlignment];\n }\n /**\n * @hidden\n */\n get tabListWidth() {\n if (this.tabPosition === 'top' || this.tabPosition === 'bottom') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get tabListHeight() {\n if (this.tabPosition === 'left' || this.tabPosition === 'right') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get isScrollable() {\n return this._scrollableSettings.enabled;\n }\n /**\n * @hidden\n */\n get hasScrollButtons() {\n return tabStripHasScrollButtons(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get mouseScrollEnabled() {\n return mouseScrollEnabled(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get itemsWrapperClass() {\n return isTablistHorizontal(this.tabPosition) ? 'k-hstack' : 'k-vstack';\n }\n /**\n * Allows the user to select a tab programmatically.\n * @param {number} index - The index of the tab that will be selected.\n */\n selectTab(index) {\n const tab = getTabByIndex(this.tabs, index);\n if (!tab || tab.disabled) {\n return;\n }\n this.tabstripService.selectTab(tab, index);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onTabClick(originalEvent, tabIndex) {\n if (isFocusable(originalEvent.target)) {\n return;\n }\n const targetElement = originalEvent.target;\n const isTargetCloseButton = hasClass(targetElement, 'k-remove-tab') || hasClass(targetElement.parentElement, 'k-remove-tab');\n if (isTargetCloseButton) {\n return;\n }\n const tab = getTabByIndex(this.tabs, tabIndex);\n this.tabstripService.onTabSelect(tab, tabIndex);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n /**\n * @hidden\n */\n scrollToSelectedTab() {\n if (this._scrollableSettings.enabled) {\n this.scrollService.scrollToSelectedTab();\n }\n }\n /**\n * @hidden\n */\n onScrollButtonClick(buttonType) {\n this.scrollService.scrollTabs(buttonType);\n }\n initDomEvents() {\n if (!this.wrapper || this.subscriptionsArePresent) {\n return;\n }\n const tablist = this.tablist.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'keydown', (ev) => {\n this.tabstripService.onKeyDown(ev);\n }));\n });\n this.subscriptions.add(this.renderer.listen(tablist, 'focusout', () => {\n resetTabFocus(this.tabs);\n }));\n if (this.isScrollable && this.mouseScrollEnabled) {\n this.attachWheelHandler(tablist);\n }\n this.subscriptionsArePresent = true;\n }\n toggleScrollButtons(tabsOverflow) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const scrollButtonsSetting = this._scrollableSettings.scrollButtons;\n const scrollButtonsArePresent = this.prevScrollButton && this.nextScrollButton;\n const shouldShowButtons = scrollButtonsArePresent && tabsOverflow;\n const shouldHideButtons = scrollButtonsArePresent &&\n !tabsOverflow &&\n scrollButtonsSetting !== 'visible';\n const alwaysVisible = scrollButtonsSetting === 'visible';\n if (shouldHideButtons) {\n this.prevScrollButton.toggle(false);\n this.nextScrollButton.toggle(false);\n }\n else if (shouldShowButtons || alwaysVisible) {\n this.prevScrollButton.toggle(true);\n this.nextScrollButton.toggle(true);\n }\n if (scrollButtonsArePresent && alwaysVisible) {\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n });\n }\n attachWheelHandler(tablist) {\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'wheel', (wheelEvent) => {\n const scrollEvent = new TabScrollEvent({\n originalEvent: wheelEvent\n });\n this.tabScroll.emit(scrollEvent);\n const isTabStripScrollEventPrevented = scrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented || !this.scrollService.tabsOverflow) {\n return;\n }\n this.scrollService.onMouseScroll(wheelEvent);\n }));\n });\n }\n}\nTabStripComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TabStripService }, { token: ScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTabStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabStripComponent, selector: \"kendo-tabstrip\", inputs: { height: \"height\", animate: \"animate\", tabAlignment: \"tabAlignment\", tabPosition: \"tabPosition\", keepTabContent: \"keepTabContent\", closable: \"closable\", scrollable: \"scrollable\", closeIcon: \"closeIcon\" }, outputs: { tabSelect: \"tabSelect\", tabClose: \"tabClose\", tabScroll: \"tabScroll\" }, host: { properties: { \"class.k-tabstrip\": \"this.hostClasses\", \"class.k-floatwrap\": \"this.hostClasses\", \"class.k-tabstrip-top\": \"this.tabsAtTop\", \"class.k-tabstrip-right\": \"this.tabsAtRight\", \"class.k-tabstrip-bottom\": \"this.tabsAtBottom\", \"class.k-tabstrip-left\": \"this.tabsAtLeft\", \"attr.dir\": \"this.dir\", \"class.k-tabstrip-scrollable\": \"this.tabStripScrollable\" } }, providers: [\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ], queries: [{ propertyName: \"tabs\", predicate: TabStripTabComponent }], viewQueries: [{ propertyName: \"tablist\", first: true, predicate: [\"tablist\"], descendants: true }, { propertyName: \"prevScrollButton\", first: true, predicate: [\"prevScrollButton\"], descendants: true }, { propertyName: \"nextScrollButton\", first: true, predicate: [\"nextScrollButton\"], descendants: true }, { propertyName: \"tabHeaderContainers\", predicate: [\"tabHeaderContainer\"], descendants: true, read: ElementRef }], exportAs: [\"kendoTabStrip\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
    \n \n
      \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: TabStripScrollableButtonComponent, selector: \"[kendoTabStripScrollableButton]\", inputs: [\"prev\", \"tabPosition\", \"scrollable\"], outputs: [\"tabScroll\", \"onClick\"] }, { type: TabComponent, selector: \"[kendoTabStripTab]\", inputs: [\"tab\", \"index\", \"tabStripClosable\", \"tabStripCloseIcon\"], outputs: [\"tabClose\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedTabStripMessagesDirective, selector: \"[kendoTabStripLocalizedMessages]\" }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ],\n providers: [\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ],\n exportAs: 'kendoTabStrip',\n selector: 'kendo-tabstrip',\n template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
    \n \n
      \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: TabStripService }, { type: ScrollService }, { type: i0.NgZone }]; }, propDecorators: { height: [{\n type: Input\n }], animate: [{\n type: Input\n }], tabAlignment: [{\n type: Input\n }], tabPosition: [{\n type: Input\n }], keepTabContent: [{\n type: Input\n }], closable: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], tabSelect: [{\n type: Output\n }], tabClose: [{\n type: Output\n }], tabScroll: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-tabstrip']\n }, {\n type: HostBinding,\n args: ['class.k-floatwrap']\n }], tabsAtTop: [{\n type: HostBinding,\n args: ['class.k-tabstrip-top']\n }], tabsAtRight: [{\n type: HostBinding,\n args: ['class.k-tabstrip-right']\n }], tabsAtBottom: [{\n type: HostBinding,\n args: ['class.k-tabstrip-bottom']\n }], tabsAtLeft: [{\n type: HostBinding,\n args: ['class.k-tabstrip-left']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabStripScrollable: [{\n type: HostBinding,\n args: ['class.k-tabstrip-scrollable']\n }], tabs: [{\n type: ContentChildren,\n args: [TabStripTabComponent]\n }], tablist: [{\n type: ViewChild,\n args: ['tablist', { static: false }]\n }], tabHeaderContainers: [{\n type: ViewChildren,\n args: ['tabHeaderContainer', { read: ElementRef }]\n }], prevScrollButton: [{\n type: ViewChild,\n args: ['prevScrollButton', { static: false }]\n }], nextScrollButton: [{\n type: ViewChild,\n args: ['nextScrollButton', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass TabStripCustomMessagesComponent extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTabStripCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTabStripCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TabStripCustomMessagesComponent, selector: \"kendo-tabstrip-messages\", providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent)\n }\n ],\n selector: 'kendo-tabstrip-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents a template that defines the content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerTemplate` directive inside the `` tag.\n * Using this template directive will override all other templates,\n * for example, `kendoDrawerHeaderTemplate` and `kendoDrawerItemTemplate`.\n */\nclass DrawerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerTemplateDirective, selector: \"[kendoDrawerTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the item content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerItemTemplate` directive inside the `` tag.\n */\nclass DrawerItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerItemTemplateDirective, selector: \"[kendoDrawerItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the header content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerHeaderTemplate` directive inside the `` tag.\n */\nclass DrawerHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerHeaderTemplateDirective, selector: \"[kendoDrawerHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the footer content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerFooterTemplate` directive inside the `` tag.\n */\nclass DrawerFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerFooterTemplateDirective, selector: \"[kendoDrawerFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass DrawerService {\n constructor() {\n this.selectedIndices = [];\n }\n onSelect(selectedIdx) {\n this.selectedIndices = [selectedIdx];\n const drawer = this.owner;\n if (drawer.autoCollapse && !drawer.minimized) {\n drawer.toggle(false);\n }\n }\n initSelection() {\n const items = this.owner.items;\n this.selectedIndices = [];\n for (let i = 0; i < items.length; i++) {\n if (items[i].selected) {\n this.selectedIndices.push(i);\n }\n }\n }\n}\nDrawerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDrawerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nfunction miniExpandPush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapsePush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n *\n */\nfunction miniExpandOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandPush(duration, width) {\n return [\n style({ overflow: 'hidden', flexBasis: '0px' }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapsePush(duration, width) {\n return [\n style({ flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', flexBasis: `0px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandRTLOverlay(duration) {\n return [\n style({ transform: `translateX(100%)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandOverlay(duration, position) {\n const translateDir = position !== 'end' ? `-100%` : `100%`;\n return [\n style({ transform: `translateX(${translateDir})` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapseOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseOverlay(duration, position) {\n const translateDir = position !== 'end' ? '-100%' : '100%';\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(${translateDir})` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseRTLOverlay(duration) {\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(100%)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniExpandPush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return expandPush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? expandRTLOverlay(duration) : expandOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniExpandOverlay(duration, width, miniWidth);\n }\n}\n/**\n * @hidden\n */\nfunction collapseAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniCollapsePush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return collapsePush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? collapseRTLOverlay(duration) : collapseOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniCollapseOverlay(duration, width, miniWidth);\n }\n}\n\n/**\n * @hidden\n */\nconst DRAWER_ITEM_INDEX = 'data-kendo-drawer-index';\n\n/**\n * @hidden\n */\nconst DRAWER_LINK_SELECTOR = '.k-drawer-link';\n/**\n * @hidden\n */\nconst ACTIVE_NESTED_LINK_SELECTOR = ':focus:not(.k-state-disabled) .k-drawer-link';\n/**\n * @hidden\n */\nconst nestedLink = (element, selector) => element.querySelector(selector);\n\n/**\n * @hidden\n */\nclass DrawerListSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nclass DrawerItemComponent {\n constructor(drawer, element, renderer) {\n this.drawer = drawer;\n this.element = element;\n this.renderer = renderer;\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get selectedClass() {\n return this.drawer.selectedIndices.indexOf(this.index) >= 0;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n const link = nestedLink(this.element.nativeElement, DRAWER_LINK_SELECTOR);\n if (link) {\n this.renderer.removeAttribute(link, 'tabindex');\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n const classes = [];\n if (this.item.icon) {\n classes.push(`k-icon ${this.item.icon}`);\n }\n if (this.item.iconClass) {\n classes.push(`${this.item.iconClass}`);\n }\n return classes;\n }\n}\nDrawerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerItemComponent, deps: [{ token: DrawerService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nDrawerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerItemComponent, selector: \"[kendoDrawerItem]\", inputs: { item: \"item\", index: \"index\", itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.aria-selected\": \"this.selectedClass\", \"class.k-state-selected\": \"this.selectedClass\", \"attr.aria-label\": \"this.label\" } }, ngImport: i0, template: `\n \n \n\n \n \n \n {{ item.text }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDrawerItem]',\n template: `\n \n \n\n \n \n \n {{ item.text }}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: DrawerService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { item: [{\n type: Input\n }], index: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }, {\n type: HostBinding,\n args: ['class.k-state-selected']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }] } });\n\n/**\n * @hidden\n */\nclass DrawerListComponent {\n constructor(drawerService, renderer, ngZone, changeDetector, element) {\n this.drawerService = drawerService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.element = element;\n this.select = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.initialSelection();\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n initialSelection() {\n /* Differentiates a user selected item */\n if (this.drawerService.selectedIndices.length === 0) {\n this.drawerService.initSelection();\n }\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n clickHandler(e) {\n const itemIdx = this.getDrawerItemIndex(e.target);\n const item = this.items[itemIdx];\n if (!item) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: itemIdx,\n item: item,\n originalEvent: e\n };\n this.ngZone.run(() => {\n const event = new DrawerListSelectEvent(args);\n this.select.emit(event);\n if (!event.isDefaultPrevented()) {\n this.drawerService.onSelect(itemIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n keyDownHandler(e) {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n this.clickHandler(e);\n const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);\n if (link) {\n link.click();\n }\n return false;\n }\n getDrawerItemIndex(target) {\n const item = closestItem(target, DRAWER_ITEM_INDEX, this.element.nativeElement);\n if (item) {\n return itemIndex(item, DRAWER_ITEM_INDEX);\n }\n }\n}\nDrawerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerListComponent, deps: [{ token: DrawerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nDrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerListComponent, selector: \"[kendoDrawerList]\", inputs: { items: \"items\", itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\" }, outputs: { select: \"select\" }, ngImport: i0, template: \"\\n \\n
  • \\n
  • \\n\\n
  • \\n  \\n
  • \\n
    \\n \", isInline: true, components: [{ type: DrawerItemComponent, selector: \"[kendoDrawerItem]\", inputs: [\"item\", \"index\", \"itemTemplate\", \"mini\", \"expanded\", \"disabled\", \"cssClass\", \"cssStyle\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDrawerList]',\n template: `\n \n
  • \n
  • \n\n
  • \n  \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: DrawerService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], select: [{\n type: Output\n }] } });\n\nconst DEFAULT_ANIMATION = { type: 'slide', duration: 200 };\n/**\n * Represents the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public expanded = false;\n *\n * public items: any[] = [\n * { text: 'Inbox', icon: 'k-i-inbox' },\n * { text: 'Notifications', icon: 'k-i-bell' },\n * { text: 'Date', icon: 'k-i-calendar' }\n * ];\n * }\n * ```\n */\nclass DrawerComponent {\n constructor(element, builder, localizationService, drawerService) {\n this.element = element;\n this.builder = builder;\n this.localizationService = localizationService;\n this.drawerService = drawerService;\n this.hostClasses = true;\n /**\n * Specifies the mode in which the Drawer will be displayed.\n *\n * The possible values are:\n * * (Default) `overlay`\n * * `push`\n */\n this.mode = 'overlay';\n /**\n * Specifies the position of the Drawer\n * ([see example]({% slug positioning_drawer %})).\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.position = 'start';\n /**\n * Enables the mini (compact) view of the Drawer which is displayed when the component is collapsed\n * ([see example]({% slug expandmodespositions_drawer %}#toc-mini-view)).\n */\n this.mini = false;\n /**\n * Specifies the state of the Drawer.\n */\n this.expanded = false;\n /**\n * Defines the width of the Drawer when it is expanded.\n * Defaults to `240`.\n */\n this.width = 240;\n /**\n * Defines the width of the Drawer when the mini view is enabled\n * and the component is collapsed. Defaults to `60`.\n */\n this.miniWidth = 50;\n /**\n * Specifies if the Drawer will be automatically collapsed when an item\n * or the overlay is clicked. Defaults to `true`.\n */\n this.autoCollapse = true;\n /**\n * Specifies the animation settings of the Drawer.\n * ([see example]({% slug interaction_drawer %}#toc-toggling-between-states)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * `false`\n * * `DrawerAnimation`\n * * (Default) `type?: 'slide'`\n * * `duration`—Accepts a number in milliseconds. Defaults to `300ms`.\n */\n this.animation = DEFAULT_ANIMATION;\n /**\n * Fires when the Drawer is expanded and its animation is complete.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the Drawer is collapsed and its animation is complete.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when a Drawer item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the `expanded` property of the component was updated.\n * Used to provide a two-way binding for the `expanded` property.\n */\n this.expandedChange = new EventEmitter();\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n this._items = [];\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.drawerService.owner = this;\n }\n get startPositionClass() {\n return this.position === 'start';\n }\n get endPositionClass() {\n return this.position === 'end';\n }\n get overlayTransofrmStyles() {\n if (this.mode === 'push') {\n return;\n }\n if (this.expanded || this.minimized) {\n return `translateX(0px)`;\n }\n return `translateX(-100%)`;\n }\n get flexStyles() {\n if (this.mode === 'overlay') {\n return;\n }\n if (!this.expanded && !this.minimized) {\n return 0;\n }\n return this.drawerWidth;\n }\n /**\n * The collection of items that will be rendered in the Drawer.\n */\n set items(items) {\n if (isPresent(items)) {\n this._items = items;\n this.drawerService.initSelection();\n }\n }\n get items() {\n return this._items;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get minimized() {\n return this.mini && !this.expanded;\n }\n /**\n * @hidden\n */\n get drawerWidth() {\n return this.minimized ? this.miniWidth : this.width;\n }\n /**\n * Toggles the visibility of the Drawer.\n *\n * @param expanded? - Boolean. Specifies if the Drawer will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n if (current === true) {\n this.setExpanded(true);\n }\n else if (current === false && !this.animation) {\n this.setExpanded(false);\n }\n if (this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => { this.onAnimationEnd(current); });\n this.animate(current);\n }\n else {\n this[current ? 'expand' : 'collapse'].emit();\n }\n }\n /**\n * @hidden\n */\n onSelect(e) {\n this.select.emit(Object.assign(e, { sender: this }));\n }\n onAnimationEnd(currentExpanded) {\n if (currentExpanded) {\n this.expand.emit();\n }\n else {\n this.setExpanded(false);\n this.collapse.emit();\n }\n }\n setExpanded(value) {\n this.expanded = value;\n this.expandedChange.emit(value);\n }\n animate(expanded) {\n const settings = {\n mode: this.mode,\n mini: this.mini,\n miniWidth: this.miniWidth,\n width: this.width,\n rtl: this.rtl,\n position: this.position,\n animation: (typeof this.animation !== 'boolean') ? this.animation : DEFAULT_ANIMATION\n };\n const animation = expanded ? expandAnimation(settings) : collapseAnimation(settings);\n const player = this.createPlayer(animation, this.element.nativeElement);\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n}\nDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.AnimationBuilder }, { token: i1.LocalizationService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });\nDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerComponent, selector: \"kendo-drawer\", inputs: { mode: \"mode\", position: \"position\", mini: \"mini\", expanded: \"expanded\", width: \"width\", miniWidth: \"miniWidth\", autoCollapse: \"autoCollapse\", items: \"items\", animation: \"animation\" }, outputs: { expand: \"expand\", collapse: \"collapse\", select: \"select\", expandedChange: \"expandedChange\" }, host: { properties: { \"class.k-widget\": \"this.hostClasses\", \"class.k-drawer\": \"this.hostClasses\", \"class.k-drawer-start\": \"this.startPositionClass\", \"class.k-drawer-end\": \"this.endPositionClass\", \"style.transform\": \"this.overlayTransofrmStyles\", \"style.flexBasis.px\": \"this.flexStyles\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ], queries: [{ propertyName: \"drawerTemplate\", first: true, predicate: DrawerTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: DrawerFooterTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: DrawerHeaderTemplateDirective, descendants: true }, { propertyName: \"itemTemplate\", first: true, predicate: DrawerItemTemplateDirective, descendants: true }], exportAs: [\"kendoDrawer\"], ngImport: i0, template: `\n
    \n \n \n \n\n
      \n
    \n\n \n \n
    \n\n \n \n
    \n `, isInline: true, components: [{ type: DrawerListComponent, selector: \"[kendoDrawerList]\", inputs: [\"items\", \"itemTemplate\", \"mini\", \"expanded\"], outputs: [\"select\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDrawer',\n providers: [\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ],\n selector: 'kendo-drawer',\n template: `\n
    \n \n \n \n\n
      \n
    \n\n \n \n
    \n\n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.AnimationBuilder }, { type: i1.LocalizationService }, { type: DrawerService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-drawer']\n }], startPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-start']\n }], endPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-end']\n }], overlayTransofrmStyles: [{\n type: HostBinding,\n args: ['style.transform']\n }], flexStyles: [{\n type: HostBinding,\n args: ['style.flexBasis.px']\n }], mode: [{\n type: Input\n }], position: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], width: [{\n type: Input\n }], miniWidth: [{\n type: Input\n }], autoCollapse: [{\n type: Input\n }], items: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], animation: [{\n type: Input\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], select: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], drawerTemplate: [{\n type: ContentChild,\n args: [DrawerTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [DrawerFooterTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [DrawerHeaderTemplateDirective, { static: false }]\n }], itemTemplate: [{\n type: ContentChild,\n args: [DrawerItemTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Serves as a container for the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}) and its content.\n */\nclass DrawerContainerComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.rtl = false;\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get hostClass() {\n return true;\n }\n get overlayClass() {\n return this.drawer.mode === 'overlay';\n }\n get miniClass() {\n return this.drawer.mini;\n }\n get pushClass() {\n return this.drawer.mode === 'push';\n }\n get isExpandedClass() {\n return this.drawer.expanded;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get overlay() {\n return isPresent(this.drawer) &&\n this.drawer.expanded &&\n this.drawer.mode === 'overlay';\n }\n /**\n * @hidden\n */\n closeDrawer() {\n if (this.overlay && this.drawer.autoCollapse) {\n this.drawer.toggle(false);\n }\n }\n}\nDrawerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerContainerComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDrawerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerContainerComponent, selector: \"kendo-drawer-container\", host: { properties: { \"class.k-drawer-container\": \"this.hostClass\", \"class.k-drawer-overlay\": \"this.overlayClass\", \"class.k-drawer-mini\": \"this.miniClass\", \"class.k-drawer-push\": \"this.pushClass\", \"class.k-drawer-expanded\": \"this.isExpandedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ], queries: [{ propertyName: \"drawer\", first: true, predicate: DrawerComponent, descendants: true }], ngImport: i0, template: `\n
    \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-container',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ],\n template: `\n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-drawer-container']\n }], overlayClass: [{\n type: HostBinding,\n args: ['class.k-drawer-overlay']\n }], miniClass: [{\n type: HostBinding,\n args: ['class.k-drawer-mini']\n }], pushClass: [{\n type: HostBinding,\n args: ['class.k-drawer-push']\n }], isExpandedClass: [{\n type: HostBinding,\n args: ['class.k-drawer-expanded']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], drawer: [{\n type: ContentChild,\n args: [DrawerComponent, { static: false }]\n }] } });\n\n/**\n * Represents the content of the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n */\nclass DrawerContentComponent {\n constructor() {\n this.hostClasses = true;\n }\n}\nDrawerContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDrawerContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DrawerContentComponent, selector: \"kendo-drawer-content\", host: { properties: { \"class.k-drawer-content\": \"this.hostClasses\" } }, ngImport: i0, template: `\n \n `, isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-content',\n template: `\n \n `,\n encapsulation: ViewEncapsulation.None\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-drawer-content']\n }] } });\n\n/**\n * Arguments for the `select` event of the Drawer.\n */\nclass DrawerSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Represents a template that defines the content of the whole Step.\n * To define the template, nest an `` tag\n * with the `kendoStepperStepTemplate` directive inside the `` tag.\n */\nclass StepperStepTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperStepTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperStepTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperStepTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperStepTemplateDirective, selector: \"[kendoStepperStepTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperStepTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperStepTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Step label.\n * To define the template, nest an `` tag\n * with the `kendoStepperLabelTemplate` directive inside the `` tag.\n */\nclass StepperLabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperLabelTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperLabelTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperLabelTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperLabelTemplateDirective, selector: \"[kendoStepperLabelTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperLabelTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperLabelTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Step indicator.\n * To define the template, nest an `` tag\n * with the `kendoStepperIndicatorTemplate` directive inside the `` tag.\n */\nclass StepperIndicatorTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperIndicatorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperIndicatorTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperIndicatorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperIndicatorTemplateDirective, selector: \"[kendoStepperIndicatorTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperIndicatorTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperIndicatorTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst DEFAULT_CURRENT_STEP = 0;\nconst handlers = {};\nhandlers[Keys.ArrowLeft] = 'left';\nhandlers[Keys.ArrowRight] = 'right';\nhandlers[Keys.ArrowUp] = 'up';\nhandlers[Keys.ArrowDown] = 'down';\nhandlers[Keys.Home] = 'home';\nhandlers[Keys.End] = 'end';\nhandlers[Keys.Enter] = 'enter';\nhandlers[Keys.Space] = 'enter';\nconst handlersRTL = Object.assign({}, handlers);\nhandlersRTL[Keys.ArrowLeft] = 'right';\nhandlersRTL[Keys.ArrowRight] = 'left';\n// error NG3003: One or more import cycles would need to be created to compile this component,\n// which is not supported by the current compiler configuration\n/**\n * @hidden\n */\nclass StepperActivateEvent$1 extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n/**\n * @hidden\n */\nclass StepperService {\n constructor(localization, ngZone, changeDetector) {\n this.localization = localization;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.currentStep = DEFAULT_CURRENT_STEP;\n this.triggerValidation = new EventEmitter();\n this.focusedStepChange = new EventEmitter();\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n emit(event, eventArgs) {\n const stepper = this.owner;\n if (hasObservers(stepper[event])) {\n stepper[event].emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n onActivate(currentIdx, originalEvent) {\n const eventArgs = new StepperActivateEvent$1({\n index: currentIdx,\n step: this.owner.steps[currentIdx],\n originalEvent: originalEvent,\n sender: this.owner\n });\n this.ngZone.run(() => {\n if (!this.emit('activate', eventArgs)) {\n this.currentStep = currentIdx;\n this.owner['currentStepChange'].emit(currentIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n validateSteps() {\n this.triggerValidation.emit();\n }\n keydown(e) {\n const current = this.focusedStep || this.currentStep;\n const handler = this.handlers[e.keyCode];\n if (!isPresent(current)) {\n return;\n }\n if (handler) {\n e.preventDefault();\n this[handler](e);\n }\n }\n left() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n right() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n up() {\n if (this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n down() {\n if (this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n home() {\n this.focusedStep = 0;\n this.focusedStepChange.emit();\n }\n end() {\n this.focusedStep = this.owner.steps.length - 1;\n this.focusedStepChange.emit();\n }\n enter(event) {\n if (this.focusedStep === this.currentStep) {\n return;\n }\n if (this.isStepDisabled(this.focusedStep)) {\n return;\n }\n if (this.owner.linear && this.isPrevOrNextStep(this.focusedStep) === false) {\n return;\n }\n this.onActivate(this.focusedStep, event);\n }\n focus(focusedIdx) {\n this.focusedStep = focusedIdx;\n }\n focusNextStep() {\n if (this.focusedStep < this.owner.steps.length) {\n this.focusedStep += 1;\n this.focusedStepChange.emit();\n }\n }\n focusPrevStep() {\n if (this.focusedStep > 0) {\n this.focusedStep -= 1;\n this.focusedStepChange.emit();\n }\n }\n isStepDisabled(index) {\n return this.owner.steps[index].disabled;\n }\n isPrevOrNextStep(index) {\n return index === this.currentStep + 1 || index === this.currentStep - 1;\n }\n get isHorizontal() {\n return this.owner.orientation === 'horizontal';\n }\n}\nStepperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });\nStepperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @hidden\n */\nconst STEPPER_STEP_INDEX = 'data-kendo-stepper-index';\n\n/**\n * @hidden\n */\nclass StepperStepComponent {\n constructor(service, localization, ngZone) {\n this.service = service;\n this.localization = localization;\n this.ngZone = ngZone;\n this.isStepValid = undefined;\n this.shouldCheckValidity = undefined;\n validatePackage(packageMetadata);\n this.subs = this.service.focusedStepChange.subscribe(() => {\n this.onFocusedStepChange();\n });\n this.subs.add(this.service.triggerValidation.subscribe(() => {\n this.handleValidityChecks();\n }));\n }\n get errorStepClass() {\n if (isPresent(this.isStepValid)) {\n return !this.isStepValid;\n }\n return false;\n }\n get successStepClass() {\n if (isPresent(this.isStepValid)) {\n return this.isStepValid;\n }\n return false;\n }\n ngOnInit() {\n this.handleValidityChecks();\n }\n ngOnChanges(changes) {\n if (changes.current && !changes.current.firstChange) {\n this.handleValidityChecks();\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n onFocusedStepChange() {\n this.ngZone.runOutsideAngular(() => {\n if (this.index === this.service.focusedStep) {\n this.stepLink.nativeElement.focus();\n }\n });\n }\n onFocus() {\n this.service.focus(this.index);\n }\n get tabIndexAttr() {\n const active = this.service.focusedStep || this.service.currentStep;\n return this.index === active ? 0 : -1;\n }\n get indicatorIconClasses() {\n if (this.step.icon) {\n return `k-icon k-i-${this.step.icon}`;\n }\n if (this.step.iconClass) {\n return `${this.step.iconClass}`;\n }\n if (this.shouldCheckValidity) {\n return this.validationIconClasses;\n }\n }\n get showIndicatorIcon() {\n if (this.shouldCheckValidity) {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n return false;\n }\n get showLabelIcon() {\n if (this.shouldCheckValidity) {\n if (this.type === 'label') {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n }\n return false;\n }\n get showLabelText() {\n return this.type === 'label' || this.type === 'full';\n }\n get validationIconClasses() {\n if (this.isStepValid) {\n return this.successIcon ? `${this.successIcon}` : 'k-icon k-i-check';\n }\n else {\n return this.errorIcon ? `${this.errorIcon}` : 'k-icon k-i-warning';\n }\n }\n get indicatorText() {\n const text = this.step.text;\n return text ? text : this.index + 1;\n }\n updateStepValidity() {\n if (typeof this.step.isValid === 'boolean') {\n return this.step.isValid;\n }\n if (typeof this.step.isValid === 'function') {\n return this.step.isValid(this.index);\n }\n return undefined;\n }\n get showIndicator() {\n return this.type === 'indicator' || this.type === 'full';\n }\n get showLabel() {\n if (this.type === 'label' || this.type === 'full') {\n return true;\n }\n return this.step.optional;\n }\n get optionalText() {\n return this.localization.get('optional');\n }\n get transitionDuration() {\n return this.service.owner.animationDuration;\n }\n _shouldCheckValidity() {\n if (isPresent(this.step.validate)) {\n if (typeof this.step.validate === 'boolean') {\n return this.step.validate;\n }\n if (typeof this.step.validate === 'function') {\n return this.step.validate(this.index);\n }\n }\n return isPresent(this.step.isValid) && this.index < this.current;\n }\n handleValidityChecks() {\n this.isStepValid = undefined;\n this.shouldCheckValidity = this._shouldCheckValidity();\n if (this.shouldCheckValidity) {\n this.isStepValid = this.updateStepValidity();\n }\n }\n}\nStepperStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperStepComponent, deps: [{ token: StepperService }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nStepperStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperStepComponent, selector: \"[kendoStepperStep]\", inputs: { step: \"step\", index: \"index\", current: \"current\", type: \"type\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, host: { properties: { \"class.k-step-error\": \"this.errorStepClass\", \"class.k-step-success\": \"this.successStepClass\" } }, viewQueries: [{ propertyName: \"stepLink\", first: true, predicate: [\"stepLink\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n\n \n \n\n \n \n \n\n \n {{ step.label }}\n \n ({{optionalText}})\n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperStepComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoStepperStep]',\n template: `\n \n \n \n\n \n \n\n \n \n \n\n \n {{ step.label }}\n \n ({{optionalText}})\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: StepperService }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { step: [{\n type: Input\n }], index: [{\n type: Input\n }], current: [{\n type: Input\n }], type: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }], stepLink: [{\n type: ViewChild,\n args: ['stepLink', { static: true }]\n }], errorStepClass: [{\n type: HostBinding,\n args: ['class.k-step-error']\n }], successStepClass: [{\n type: HostBinding,\n args: ['class.k-step-success']\n }] } });\n\n/**\n * @hidden\n */\nclass StepperListComponent {\n constructor(renderer, ngZone, element) {\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.listKeydown = new EventEmitter();\n this.listClick = new EventEmitter();\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.domSubs) {\n this.domSubs();\n }\n }\n get maxStepWidth() {\n return this.maxStepDimension('width');\n }\n get maxStepHeight() {\n return this.maxStepDimension('height');\n }\n maxStepDimension(dimension) {\n if (dimension === 'width' && this.orientation === 'vertical') {\n return null;\n }\n if (dimension === 'height' && this.orientation === 'horizontal') {\n return null;\n }\n return 100 / this.steps.length;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n const clickSubscription = this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this));\n const keydownSubscription = this.renderer.listen(nativeElement, 'keydown', (e) => {\n if (hasClass(e.target, 'k-step-link')) {\n this.listKeydown.emit(e);\n }\n });\n this.domSubs = () => {\n clickSubscription();\n keydownSubscription();\n };\n });\n }\n clickHandler(e) {\n e.preventDefault();\n const stepIdx = this.getStepIndex(e.target);\n const step = this.steps[stepIdx];\n if (!step || step.disabled) {\n return;\n }\n const eventArgs = {\n stepIdx,\n currentStep: this.currentStep,\n linear: this.linear,\n originalEvent: e\n };\n this.listClick.emit(eventArgs);\n }\n getStepIndex(target) {\n const step = closestItem(target, STEPPER_STEP_INDEX, this.element.nativeElement);\n if (step) {\n return itemIndex(step, STEPPER_STEP_INDEX);\n }\n }\n}\nStepperListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nStepperListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperListComponent, selector: \"[kendoStepperList]\", inputs: { linear: \"linear\", stepType: \"stepType\", orientation: \"orientation\", currentStep: \"currentStep\", steps: \"steps\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, outputs: { listKeydown: \"listKeydown\", listClick: \"listClick\" }, ngImport: i0, template: \"\\n \\n
  • \\n
  • \\n
    \\n \", isInline: true, components: [{ type: StepperStepComponent, selector: \"[kendoStepperStep]\", inputs: [\"step\", \"index\", \"current\", \"type\", \"successIcon\", \"errorIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoStepperList]',\n template: `\n \n
  • \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { linear: [{\n type: Input\n }], stepType: [{\n type: Input\n }], orientation: [{\n type: Input\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }], listKeydown: [{\n type: Output\n }], listClick: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass StepperMessages extends ComponentMessages {\n}\nStepperMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nStepperMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperMessages, selector: \"kendo-stepper-messages-base\", inputs: { optional: \"optional\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-stepper-messages-base'\n }]\n }], propDecorators: { optional: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedStepperMessagesDirective extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedStepperMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedStepperMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedStepperMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedStepperMessagesDirective, selector: \"\\n [kendoStepperLocalizedMessages]\\n \", providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedStepperMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective)\n }\n ],\n selector: `\n [kendoStepperLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_ANIMATION_DURATION = 400;\n/**\n * Represents the [Kendo UI Stepper component for Angular]({% slug overview_stepper %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public steps: Array = [\n * { label: 'Step One' }, { label: 'Step Two' }, { label: 'Step Three' }\n * ];\n * }\n * ```\n */\nclass StepperComponent {\n constructor(renderer, elem, localization, stepperService) {\n this.renderer = renderer;\n this.elem = elem;\n this.localization = localization;\n this.stepperService = stepperService;\n this.hostClasses = true;\n this.ariaRole = 'navigation';\n this.displayStyle = 'grid';\n /**\n * Specifies the type of the steps in the Stepper.\n *\n * The possible values are:\n * * (Default) `indicator`\n * * `label`\n * * `full`\n */\n this.stepType = 'indicator';\n /**\n * Specifies the linear flow of the Stepper.\n *\n * @default true\n */\n this.linear = true;\n /**\n * Specifies the orientation of the Stepper\n * ([see example]({% slug orientation_stepper %})).\n *\n * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the duration of the progress indicator animation in milliseconds. Defaults to `400ms`.\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when a step is about to be activated. This event is preventable.\n */\n this.activate = new EventEmitter();\n /**\n * Fires when the `currentStep` property of the component was updated.\n * Used to provide a two-way binding for the `currentStep` property.\n */\n this.currentStepChange = new EventEmitter();\n this._steps = [];\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.stepperService.owner = this;\n }\n get linearClass() {\n return this.linear;\n }\n /**\n * The index of the current step.\n */\n set currentStep(value) {\n this.stepperService.currentStep = value;\n }\n get currentStep() {\n return this.stepperService.currentStep;\n }\n /**\n * The collection of steps that will be rendered in the Stepper.\n * ([see example]({% slug step_appearance_stepper %}))\n */\n set steps(steps) {\n if (isPresent(steps) && steps.length > 0) {\n this._steps = steps;\n }\n }\n get steps() {\n return this._steps;\n }\n ngOnInit() {\n this.applyHostStyling();\n }\n ngOnChanges(changes) {\n if (changes.steps && !changes.steps.firstChange) {\n this.applyHostStyling();\n }\n if (changes.orientation) {\n this.resetHostStyling();\n this.applyHostStyling();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * Manually triggers the validity check configured by the [isValid]({% slug api_layout_stepperstep %}#toc-isvalid) property of the steps ([see example]({% slug step_validation_stepper %}#toc-triggering-the-validation)).\n *\n * Steps that have their [validate]({% slug api_layout_stepperstep %}#toc-validate) property set to `false`, will not be validated.\n */\n validateSteps() {\n this.stepperService.validateSteps();\n }\n applyHostStyling() {\n const stepFramesStyle = this.orientation === 'horizontal' ? 'grid-template-columns' : 'grid-template-rows';\n const stepFramesValue = `repeat(${this.steps.length * 2}, 1fr)`;\n this.renderer.setStyle(this.elem.nativeElement, stepFramesStyle, stepFramesValue);\n }\n resetHostStyling() {\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-columns');\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-rows');\n }\n /**\n * @hidden\n */\n get progressAnimation() {\n return { duration: this.animationDuration };\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'number') {\n return this.animation;\n }\n if (typeof this.animation === 'boolean' && this.animation) {\n return DEFAULT_ANIMATION_DURATION;\n }\n return 0;\n }\n /**\n * @hidden\n */\n get stepsListStyling() {\n if (this.orientation === 'horizontal') {\n return { 'grid-column-start': 1, 'grid-column-end': -1 };\n }\n return { 'grid-row-start': 1, 'grid-row-end': -1 };\n }\n /**\n * @hidden\n */\n get progressBarStyling() {\n if (this.orientation === 'horizontal') {\n return {\n 'grid-column-start': 2,\n 'grid-column-end': this.steps.length * 2\n };\n }\n return {\n 'grid-row-start': 2,\n 'grid-row-end': this.steps.length * 2\n };\n }\n /**\n * @hidden\n */\n onListKeydown(e) {\n this.stepperService.keydown(e);\n }\n /**\n * @hidden\n */\n onListClick(e) {\n if (e.stepIdx === e.currentStep) {\n this.stepperService.focus(e.stepIdx);\n return;\n }\n if (e.linear && this.stepperService.isPrevOrNextStep(e.stepIdx) === false) {\n return;\n }\n this.stepperService.onActivate(e.stepIdx, e.originalEvent);\n }\n /**\n * @hidden\n */\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n}\nStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: StepperService }], target: i0.ɵɵFactoryTarget.Component });\nStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperComponent, selector: \"kendo-stepper\", inputs: { stepType: \"stepType\", linear: \"linear\", orientation: \"orientation\", currentStep: \"currentStep\", steps: \"steps\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", animation: \"animation\" }, outputs: { activate: \"activate\", currentStepChange: \"currentStepChange\" }, host: { properties: { \"class.k-widget\": \"this.hostClasses\", \"class.k-stepper\": \"this.hostClasses\", \"class.k-stepper-linear\": \"this.linearClass\", \"attr.role\": \"this.ariaRole\", \"attr.dir\": \"this.direction\", \"style.display\": \"this.displayStyle\" } }, providers: [\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ], queries: [{ propertyName: \"stepTemplate\", first: true, predicate: StepperStepTemplateDirective, descendants: true }, { propertyName: \"labelTemplate\", first: true, predicate: StepperLabelTemplateDirective, descendants: true }, { propertyName: \"indicatorTemplate\", first: true, predicate: StepperIndicatorTemplateDirective, descendants: true }], exportAs: [\"kendoStepper\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
      \n
    \n\n \n \n `, isInline: true, components: [{ type: StepperListComponent, selector: \"[kendoStepperList]\", inputs: [\"linear\", \"stepType\", \"orientation\", \"currentStep\", \"steps\", \"successIcon\", \"errorIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\"], outputs: [\"listKeydown\", \"listClick\"] }, { type: i4.ProgressBarComponent, selector: \"kendo-progressbar\", inputs: [\"label\", \"progressCssStyle\", \"progressCssClass\", \"emptyCssStyle\", \"emptyCssClass\", \"animation\"], outputs: [\"animationEnd\"], exportAs: [\"kendoProgressBar\"] }], directives: [{ type: LocalizedStepperMessagesDirective, selector: \"\\n [kendoStepperLocalizedMessages]\\n \" }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoStepper',\n providers: [\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ],\n selector: 'kendo-stepper',\n template: `\n \n \n
      \n
    \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: StepperService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-stepper']\n }], linearClass: [{\n type: HostBinding,\n args: ['class.k-stepper-linear']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], stepType: [{\n type: Input\n }], linear: [{\n type: Input\n }], orientation: [{\n type: Input\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], animation: [{\n type: Input\n }], activate: [{\n type: Output\n }], currentStepChange: [{\n type: Output\n }], stepTemplate: [{\n type: ContentChild,\n args: [StepperStepTemplateDirective, { static: false }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [StepperLabelTemplateDirective, { static: false }]\n }], indicatorTemplate: [{\n type: ContentChild,\n args: [StepperIndicatorTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Arguments for the `activate` event of the Stepper.\n */\nclass StepperActivateEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass StepperCustomMessagesComponent extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nStepperCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStepperCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StepperCustomMessagesComponent, selector: \"kendo-stepper-messages\", providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent)\n }\n ],\n selector: 'kendo-stepper-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Displays images, icons or initials representing people or other entities.\n */\nclass AvatarComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets a border to the avatar.\n */\n this.border = false;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._fillMode = DEFAULT_FILL_MODE;\n this._rounded = DEFAULT_ROUNDED;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get flexBasis() {\n return this.width;\n }\n /**\n * Sets the shape for the avatar.\n * @hidden\n */\n set shape(shape) {\n this.rounded = mapShapeToRounded(shape);\n }\n /**\n * Specifies the size of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (size !== this._size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses('size', newSize);\n this._size = newSize;\n }\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the rounded styling of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-rounded-corners)).\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (Default)\n * * `none`\n */\n set rounded(rounded) {\n if (rounded !== this._rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses('rounded', newRounded);\n this._rounded = newRounded;\n }\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies the theme color of the avatar.\n * The theme color will be applied as background and border color, while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base`— Applies the base coloring value.\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n * * `none`— Removes the styling associated with the theme color.\n */\n set themeColor(themeColor) {\n if (themeColor !== this._themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this._themeColor = newThemeColor;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (fillMode !== this.fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this._fillMode = newFillMode;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n * Deprecated, left for backward compatibility.\n *\n * @hidden\n */\n set fill(fillMode) {\n this.fillMode = fillMode;\n }\n /**\n * @hidden\n */\n get avatarWidth() {\n return this.width;\n }\n /**\n * @hidden\n */\n get avatarHeight() {\n return this.height;\n }\n ngOnInit() {\n this.verifyProperties();\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(input, this[input]);\n });\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n /**\n * @hidden\n */\n iconClasses() {\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n }\n /**\n * @hidden\n */\n get customAvatar() {\n return !(this.imageSrc || this.initials || this.icon || this.iconClass);\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n const inputs = [this.icon || this.iconClass, this.imageSrc, this.initials];\n const inputsLength = inputs.filter((value) => value).length;\n if (inputsLength > 1) {\n throw new Error(`\n Invalid property configuration given.\n The kendo-avatar component can accept only one of:\n icon, imageSrc or initials properties.\n `);\n }\n }\n handleClasses(styleType, value) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('avatar', styleType, this[styleType], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleFillModeAndThemeColorClasses(fill, themeColor) {\n const wrapperElement = this.element.nativeElement;\n // remove existing fill and theme color classes\n const currentClasses = Array.from(wrapperElement.classList);\n const classesToRemove = currentClasses.filter(cl => {\n return cl.startsWith('k-avatar-solid') || cl.startsWith('k-avatar-outline');\n });\n classesToRemove.forEach((cl => this.renderer.removeClass(wrapperElement, cl)));\n // add fill if needed\n if (fill !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}`);\n }\n // add theme color class if fill and theme color\n if (fill !== 'none' && themeColor !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}-${themeColor}`);\n }\n }\n}\nAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AvatarComponent, selector: \"kendo-avatar\", inputs: { shape: \"shape\", size: \"size\", rounded: \"rounded\", themeColor: \"themeColor\", fillMode: \"fillMode\", fill: \"fill\", border: \"border\", iconClass: \"iconClass\", width: \"width\", height: \"height\", cssStyle: \"cssStyle\", initials: \"initials\", icon: \"icon\", imageSrc: \"imageSrc\" }, host: { properties: { \"class.k-avatar\": \"this.hostClass\", \"class.k-avatar-bordered\": \"this.borderClass\", \"style.flexBasis\": \"this.flexBasis\", \"style.width\": \"this.avatarWidth\", \"style.height\": \"this.avatarHeight\" } }, ngImport: i0, template: `\n \n\n \n \n \n \n \n\n \n {{ initials.substring(0, 2) }}\n \n\n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-avatar',\n template: `\n \n\n \n \n \n \n \n\n \n {{ initials.substring(0, 2) }}\n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-avatar']\n }], borderClass: [{\n type: HostBinding,\n args: ['class.k-avatar-bordered']\n }], flexBasis: [{\n type: HostBinding,\n args: ['style.flexBasis']\n }], shape: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], fill: [{\n type: Input\n }], border: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], width: [{\n type: Input\n }], avatarWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], height: [{\n type: Input\n }], avatarHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], cssStyle: [{\n type: Input\n }], initials: [{\n type: Input\n }], icon: [{\n type: Input\n }], imageSrc: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI Card component for Angular]({% slug overview_card %})\n */\nclass CardComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the layout of the Card content.\n *\n * The possible values are:\n * * (Default) `vertical`\n * * `horizontal`\n *\n */\n this.orientation = 'vertical';\n /**\n * Defines the width of the Card.\n * Defaults to `285px`.\n */\n this.width = '285px';\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get widthStyle() {\n return this.width;\n }\n get vertical() {\n return this.orientation === 'vertical';\n }\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n}\nCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardComponent, selector: \"kendo-card\", inputs: { orientation: \"orientation\", width: \"width\" }, host: { properties: { \"class.k-widget\": \"this.hostClass\", \"class.k-card\": \"this.hostClass\", \"style.width\": \"this.widthStyle\", \"class.k-card-vertical\": \"this.vertical\", \"class.k-card-horizontal\": \"this.horizontal\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-card']\n }], widthStyle: [{\n type: HostBinding,\n args: ['style.width']\n }], vertical: [{\n type: HostBinding,\n args: ['class.k-card-vertical']\n }], horizontal: [{\n type: HostBinding,\n args: ['class.k-card-horizontal']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], orientation: [{\n type: Input\n }], width: [{\n type: Input\n }] } });\n\n/**\n * Specifies the content in the Card header.\n */\nclass CardHeaderComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardHeaderComponent, selector: \"kendo-card-header\", host: { properties: { \"class.k-card-header\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-header',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-header']\n }] } });\n\n/**\n * Specifies the content in the Card body.\n */\nclass CardBodyComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardBodyComponent, selector: \"kendo-card-body\", host: { properties: { \"class.k-card-body\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-body',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-body']\n }] } });\n\n/**\n * Specifies the content in the Card footer.\n */\nclass CardFooterComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardFooterComponent, selector: \"kendo-card-footer\", host: { properties: { \"class.k-card-footer\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardFooterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-footer',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-footer']\n }] } });\n\n/**\n * Specifies the action buttons of the Card.\n * * ([see example]({% slug actions_card %})).\n */\nclass CardActionsComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the layout of the Card action buttons.\n *\n * * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n *\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the layout of the Card action buttons.\n *\n * The possible values are:\n * * (Default) `start`\n * * `center`\n * * `end`\n * * `stretched`\n *\n */\n this.layout = 'start';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n }\n get stretchedClass() {\n return this.layout === 'stretched';\n }\n get startClass() {\n return this.layout === 'start';\n }\n get endClass() {\n return this.layout === 'end';\n }\n get centerClass() {\n return this.layout === 'center';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n /**\n * Allows the declarative specification of the Card actions.\n */\n set actions(value) {\n if (Array.isArray(value)) {\n this.actionsArray = value;\n }\n else if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n }\n /**\n * @hidden\n */\n onClick(action) {\n this.action.emit(action);\n }\n}\nCardActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardActionsComponent, selector: \"kendo-card-actions\", inputs: { orientation: \"orientation\", layout: \"layout\", actions: \"actions\" }, outputs: { action: \"action\" }, host: { properties: { \"class.k-card-actions\": \"this.hostClass\", \"class.k-card-actions-stretched\": \"this.stretchedClass\", \"class.k-card-actions-start\": \"this.startClass\", \"class.k-card-actions-end\": \"this.endClass\", \"class.k-card-actions-center\": \"this.centerClass\", \"class.k-card-actions-vertical\": \"this.verticalClass\", \"class.k-card-actions-horizontal\": \"this.horizontalClass\" } }, ngImport: i0, template: `\n \n\n \n \n \n\n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-actions',\n template: `\n \n\n \n \n \n\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-actions']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-stretched']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-end']\n }], centerClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-center']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-card-actions-horizontal']\n }], orientation: [{\n type: Input\n }], layout: [{\n type: Input\n }], actions: [{\n type: Input\n }], action: [{\n type: Output\n }] } });\n\n/**\n * Specifies a separator in the content of the Card.\n */\nclass CardSeparatorDirective {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the orientation of the Card separator.\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n}\nCardSeparatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardSeparatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardSeparatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardSeparatorDirective, selector: \"[kendoCardSeparator]\", inputs: { color: \"color\", orientation: \"orientation\" }, host: { properties: { \"class.k-card-separator\": \"this.hostClass\", \"class.k-separator-vertical\": \"this.verticalClass\", \"class.k-separator-horizontal\": \"this.horizontalClass\", \"style.color\": \"this.color\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardSeparatorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardSeparator]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-separator']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-separator-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-separator-horizontal']\n }], color: [{\n type: HostBinding,\n args: ['style.color']\n }, {\n type: Input\n }], orientation: [{\n type: Input\n }] } });\n\n/**\n * Specifies the text and styles for the title of the Card.\n */\nclass CardTitleDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardTitleDirective, selector: \"[kendoCardTitle]\", host: { properties: { \"class.k-card-title\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardTitle]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-title']\n }] } });\n\n/**\n * Specifies the text and styles for the subtitle of the Card.\n */\nclass CardSubtitleDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardSubtitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardSubtitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardSubtitleDirective, selector: \"[kendoCardSubtitle]\", host: { properties: { \"class.k-card-subtitle\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardSubtitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardSubtitle]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-subtitle']\n }] } });\n\n/**\n * Specifies any media that will be displayed and aligned in the Card.\n */\nclass CardMediaDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardMediaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardMediaDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardMediaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CardMediaDirective, selector: \"[kendoCardMedia]\", host: { properties: { \"class.k-card-media\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardMediaDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardMedia]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-media']\n }] } });\n\n/**\n * The settings of the Card action buttons.\n */\nclass CardAction {\n}\n\n/**\n * Represents a template that defines the content of the ExpansionPanel title.\n * To define the template, nest an `` tag\n * with the `kendoExpansionPanelTitleDirective` directive inside the `` tag.\n * ([see example]({% slug title_expansionpanel %}#toc-title-template)).\n */\nclass ExpansionPanelTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nExpansionPanelTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelTitleDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nExpansionPanelTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpansionPanelTitleDirective, selector: \"[kendoExpansionPanelTitleDirective]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExpansionPanelTitleDirective]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nfunction expand(duration, height) {\n return [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapse(duration, height) {\n return [\n style({ overflow: 'hidden', height: `${height}` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n\n/**\n * Arguments for the `action` event of the ExpansionPanel.\n */\nclass ExpansionPanelActionEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\nconst DEFAULT_DURATION = 200;\nconst CONTENT_HIDDEN_CLASS = 'k-hidden';\n/**\n * Represents the [Kendo UI ExpansionPanel component for Angular]({% slug overview_expansionpanel %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * There are various theories about the origin of the word Chile.\n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass ExpansionPanelComponent {\n constructor(renderer, hostElement, ngZone, localizationService, builder) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n this.builder = builder;\n /**\n * Specifies the primary text in the header of the ExpansionPanel\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.title = '';\n /**\n * Specifies the secondary text in the header of the ExpansionPanel, which is rendered next to the collapse/expand icon\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.subtitle = '';\n /**\n * Specifies whether the ExpansionPanel is disabled. If disabled, the ExpansionPanel can be neither expanded nor collapsed\n * ([see example]({% slug disabled_expansionpanel %})).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the animation settings of the ExpansionPanel\n * ([see example]({% slug animations_expansionpanel %})).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true` Numeric values represent duration. Default duration is 200ms.\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when the `expanded` property of the component is updated.\n * Used to provide a two-way binding for the `expanded` property\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expandedChange = new EventEmitter();\n /**\n * Fires when the expanded state of the ExpansionPanel is about to change. This event is preventable\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.action = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is expanded. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is collapsed. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.collapse = new EventEmitter();\n this.hostClass = true;\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focused = false;\n this.animationEnd = new EventEmitter();\n this.subscriptions = new Subscription();\n this._expanded = false;\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies whether the ExpansionPanel is expanded. The property supports two-way binding.\n * ([see example]({% slug interaction_expansionpanel %}#toc-setting-the-initial-state)).\n *\n * @default false\n */\n set expanded(value) {\n if (value === this.expanded) {\n return;\n }\n this._expanded = value;\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n else {\n this.addContentHiddenClass();\n }\n }\n get expanded() {\n return this._expanded;\n }\n get expandedClass() {\n return this.expanded && !this.disabled;\n }\n get focusClass() {\n return this.focused;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n if (!this.focused) {\n this.focused = true;\n }\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'title');\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => { this.direction = rtl ? 'rtl' : 'ltr'; });\n }\n ngAfterViewInit() {\n this.initDomEvents();\n if (!this.expanded) {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n if (!this.disabled) {\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.hostElement.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n }\n /**\n * @hidden\n */\n keyDownHandler(ev) {\n const isEnterOrSpace = ev.keyCode === Keys.Enter || ev.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n if (hasClass(ev.target, 'k-expander')) {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.onHeaderAction();\n });\n }\n }\n /**\n * @hidden\n */\n onHeaderClick(ev) {\n if (!isFocusable(ev.target) && !this.disabled) {\n this.onHeaderAction();\n }\n }\n /**\n * @hidden\n */\n onHeaderAction() {\n this.focused = true;\n const eventArgs = new ExpansionPanelActionEvent();\n eventArgs.action = this.expanded ? 'collapse' : 'expand';\n this.action.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.setExpanded(!this.expanded);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n }\n /**\n * @hidden\n */\n get indicatorClasses() {\n if (this.expanded) {\n return this.collapseIcon ? this.collapseIcon : `k-icon k-i-arrow-chevron-up`;\n }\n else {\n return this.expandIcon ? this.expandIcon : `k-icon k-i-arrow-chevron-down`;\n }\n }\n /**\n * Toggles the visibility of the ExpansionPanel\n * ([see example]({% slug interaction_expansionpanel %}#toc-toggling-the-content)).\n *\n * @param expanded? - Boolean. Specifies, whether the ExpansionPanel will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n this.setExpanded(current);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n setExpanded(value) {\n this._expanded = value;\n this.expandedChange.emit(value);\n }\n animateContent() {\n const duration = typeof this.animation === 'boolean' ? DEFAULT_DURATION : this.animation;\n const contentHeight = getComputedStyle(this.content.nativeElement).height;\n const animation = this.expanded ? expand(duration, contentHeight) : collapse(duration, contentHeight);\n const player = this.createPlayer(animation, this.content.nativeElement);\n this.animationEnd.pipe(take(1)).subscribe(() => {\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n });\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n emitExpandCollapseEvent() {\n this[this.expanded ? 'expand' : 'collapse'].emit();\n }\n addContentHiddenClass() {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n removeContentHiddenClass() {\n this.renderer.removeClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n}\nExpansionPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i1$2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nExpansionPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpansionPanelComponent, selector: \"kendo-expansionpanel\", inputs: { title: \"title\", subtitle: \"subtitle\", disabled: \"disabled\", expanded: \"expanded\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", animation: \"animation\" }, outputs: { expandedChange: \"expandedChange\", action: \"action\", expand: \"expand\", collapse: \"collapse\" }, host: { listeners: { \"blur\": \"onComponentBlur()\", \"focus\": \"onComponentFocus()\" }, properties: { \"class.k-expander\": \"this.hostClass\", \"class.k-expanded\": \"this.expandedClass\", \"class.k-state-focus\": \"this.focusClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.tabindex\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ], queries: [{ propertyName: \"titleTemplate\", first: true, predicate: ExpansionPanelTitleDirective, descendants: true }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, static: true }], exportAs: [\"kendoExpansionPanel\"], ngImport: i0, template: `\n \n \n
    {{ title }}
    \n \n
    \n {{ subtitle }}\n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoExpansionPanel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ],\n selector: 'kendo-expansionpanel',\n template: `\n \n \n
    {{ title }}
    \n \n
    \n {{ subtitle }}\n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i1$2.AnimationBuilder }]; }, propDecorators: { title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], animation: [{\n type: Input\n }], expandedChange: [{\n type: Output\n }], action: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], titleTemplate: [{\n type: ContentChild,\n args: [ExpansionPanelTitleDirective, { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-expander']\n }], expandedClass: [{\n type: HostBinding,\n args: ['class.k-expanded']\n }], focusClass: [{\n type: HostBinding,\n args: ['class.k-state-focus']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }] } });\n\n/**\n * @hidden\n */\nconst normalizeValue = (value) => {\n return value ? +value : undefined;\n};\n/**\n * @hidden\n */\nconst isRowItemPresent = (items) => {\n return items.some(item => isPresent(item.row));\n};\n/**\n * @hidden\n */\nconst propsChanged = (initialProps, newProps) => {\n for (let i = 0; i < initialProps.length; i++) {\n if (initialProps[i] !== newProps[i]) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementsFromPoint))) {\n return [event.target];\n }\n return document.elementsFromPoint(event.clientX, event.clientY)\n .filter(item => item.classList && (item.classList.contains('k-tilelayout-item') || item.classList.contains('k-layout-item-hint')));\n};\n/**\n * @hidden\n */\nconst setElementStyles = (renderer, elem, styles) => {\n const props = Object.keys(styles);\n props.forEach(p => {\n renderer.setStyle(elem, p, styles[p]);\n });\n};\n/**\n * @hidden\n */\nconst calculateCellFromPosition = (coordinates, tileLayoutElement, gap, cellSize, columns, rtl = false) => {\n const tileLayoutRect = tileLayoutElement.getBoundingClientRect();\n const totalRows = (tileLayoutRect.height - gap.rows) / (cellSize.height + gap.rows);\n const distanceFromTop = coordinates.y - tileLayoutRect.y;\n const distanceFromLeft = coordinates.x - tileLayoutRect.x;\n const distanceFromRight = tileLayoutRect.right - coordinates.x;\n const distanceToCellWidthRatio = Math.floor((rtl ? distanceFromRight : distanceFromLeft) / (gap.columns + cellSize.width));\n const cappedColumnPosition = Math.min(distanceToCellWidthRatio + 1, columns);\n const distanceToCellHeightRatio = Math.floor(distanceFromTop / (gap.rows + cellSize.height));\n const cappedRowPosition = Math.min(distanceToCellHeightRatio + 1, totalRows);\n const col = Math.max(cappedColumnPosition, 0);\n const row = Math.max(cappedRowPosition, 0);\n return {\n row, col\n };\n};\n/**\n * @hidden\n */\nconst calculateOrderFromCell = (row, col, items, draggedItem, tileLayoutElement, gap, cellSize, columns) => {\n let order = 0;\n items.forEach(item => {\n const rect = item.elem.nativeElement.getBoundingClientRect();\n const start = calculateCellFromPosition({\n x: rect.x,\n y: rect.y\n }, tileLayoutElement, gap, cellSize, columns);\n if (item !== draggedItem && ((start.row === row && start.col < col) || start.row < row)) {\n order++;\n }\n });\n return order;\n};\n\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_SIZE = 9;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_SIZE = 25;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP = 5;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP = 18;\n/**\n * @hidden\n */\nconst DRAGGED_ZINDEX = 10;\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['ew', 'ns', 'nwse'];\n/**\n * @hidden\n */\nconst RTL_RESIZE_DIRECTIONS = ['ew', 'ns', 'nesw'];\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_DIMENSIONS = {\n // numeric values represent pixels\n ew: {\n width: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n ns: {\n height: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapY: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n nwse: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n },\n nesw: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n }\n};\n/**\n * @hidden\n */\nconst OVERLAP_THRESHOLD = 0.3;\n/**\n * @hidden\n */\nconst REVERSE_OVERLAP_THRESHOLD = -0.7;\n/**\n * @hidden\n */\nconst HINT_BORDERS_HEIGHT = 2;\n\n/**\n * Arguments for the `reorder` event. The event fires when the order or starting\n * positions of the items is changed via the UI. If you prevent the event, the change is canceled ([see example]({% slug reordering_tilelayout %}#toc-handling-the-reorder-event)).\n */\nclass TileLayoutReorderEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `reorder` event.\n * @param item - The TileLayoutItem being reordered.\n * @param items - The TileLayoutItem collection that holds the currently rendered items and their internal state.\n * @param newIndex - The new order index of the reordered item used to determine its positioning relative to the other items.\n * @param oldIndex - The initial order index of the reordered item used to determine its positioning relative to the other items.\n * @param newCol - The new start column of the reordered item.\n * @param oldCol - The initial start column of the reordered item.\n * @param newRow - The new start row of the reordered item.\n * @param oldRow - The initial start row of the reordered item.\n * @hidden\n */\n constructor(item, items, newIndex, oldIndex, newCol, oldCol, newRow, oldRow) {\n super();\n this.item = item;\n this.items = items;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n this.newCol = newCol;\n this.oldCol = oldCol;\n this.newRow = newRow;\n this.oldRow = oldRow;\n }\n}\n\n/**\n * Arguments for the `resize` event. The `resize` event fires when any item size\n * is changed from the UI. If you cancel the event, the change is prevented ([see example]({% slug resizing_tilelayout %}#toc-handling-the-resize-event)).\n */\nclass TileLayoutResizeEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `resize` event.\n * @param item - The TileLayoutItem being resized\n * @param items - The TileLayoutItem collection\n * @param newRowSpan - The new rowSpan of the resized item\n * @param oldRowSpan - The initial rowSpan of the resized item\n * @param newColSpan - The new colSpan of the resized item\n * @param oldColSpan - The initial colSpan of the resized item\n * @hidden\n */\n constructor(item, items, newRowSpan, oldRowSpan, newColSpan, oldColSpan) {\n super();\n this.item = item;\n this.items = items;\n this.newRowSpan = newRowSpan;\n this.oldRowSpan = oldRowSpan;\n this.newColSpan = newColSpan;\n this.oldColSpan = oldColSpan;\n }\n}\n\n/**\n * @hidden\n */\nclass TileLayoutDraggingService {\n constructor(zone, renderer, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.reorderable = new BehaviorSubject(null);\n this.resizable = new BehaviorSubject(null);\n this.reorder = new Subject();\n this.resize = new Subject();\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl);\n }\n get colStart() {\n return this.currentColStart;\n }\n get rowStart() {\n return this.currentRowStart;\n }\n get itemWrapper() {\n return this.draggedItemWrapper;\n }\n get order() {\n return this.targetOrder;\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n handlePress(originalEvent) {\n const resizing = !!originalEvent.target.classList.contains('k-resize-handle');\n const closestTile = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item'), this.tileLayoutSettings.tileLayoutElement);\n const closestHeader = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item-header'), this.tileLayoutSettings.tileLayoutElement);\n if (!closestTile) {\n return;\n }\n this.zone.run(() => {\n this.draggedItemWrapper = closestTile;\n this.draggedItem = this.tileLayoutSettings.items\n .find(item => item.order === +closestTile.style.order);\n });\n const reordering = !resizing && this.reorderable.getValue() && this.draggedItem.reorderable && closestHeader;\n if (!(reordering || resizing)) {\n return;\n }\n else {\n originalEvent.preventDefault();\n }\n this.zone.run(() => {\n this.reordering = reordering;\n this.resizing = resizing;\n });\n const tileRect = this.draggedItemWrapper.getBoundingClientRect();\n this.zone.run(() => {\n this.offset = {\n top: originalEvent.clientY - tileRect.top,\n left: originalEvent.clientX - tileRect.left,\n x: tileRect.x,\n y: tileRect.y,\n width: tileRect.width,\n height: tileRect.height\n };\n this.targetSize = {\n rowSpan: this.draggedItem.rowSpan,\n colSpan: this.draggedItem.colSpan\n };\n this.cellSize = {\n width: (tileRect.width - ((this.targetSize.colSpan - 1) * this.tileLayoutSettings.gap.columns)) / this.targetSize.colSpan,\n height: (tileRect.height - ((this.targetSize.rowSpan - 1) * this.tileLayoutSettings.gap.rows)) / this.targetSize.rowSpan\n };\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n });\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: tileRect.left + window.pageXOffset + 'px',\n top: tileRect.top + window.pageYOffset + 'px',\n width: tileRect.width + 'px',\n height: tileRect.height + 'px',\n zIndex: DRAGGED_ZINDEX\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'flex',\n height: (tileRect.height - HINT_BORDERS_HEIGHT) + 'px'\n });\n this.zone.run(() => this.targetOrder = this.draggedItem.order);\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n position: 'absolute'\n });\n if (this.reorderable.getValue() && !resizing) {\n this.zone.run(() => {\n this.currentColStart = this.draggedItem.colStart;\n this.currentRowStart = this.draggedItem.rowStart;\n });\n const headerEl = this.draggedItem.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n this.renderer.addClass(headerEl, 'k-cursor-grabbing');\n }\n else if (this.resizable && resizing) {\n this.zone.run(() => {\n this.startingPoint = {\n top: originalEvent.clientY,\n left: originalEvent.clientX\n };\n this.currentResizingColSpan = this.draggedItem.colSpan;\n this.currentResizingRowSpan = this.draggedItem.rowSpan;\n if (this.draggedItem.col) {\n this.currentColStart = this.draggedItem.col.toString();\n }\n if (this.draggedItem.row) {\n this.currentRowStart = this.draggedItem.row.toString();\n }\n this.direction = originalEvent.target.classList[1];\n });\n }\n }\n handleDrag(originalEvent) {\n if (this.draggedItemWrapper) {\n if (this.reordering) {\n this.reorderItems(originalEvent);\n }\n else if (this.resizing) {\n this.resizeItem(originalEvent);\n }\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n }\n }\n handleRelease(originalEvent) {\n originalEvent.preventDefault();\n if (this.reordering) {\n const initialOrder = this.draggedItem.order;\n const initialCol = this.draggedItem.col;\n const initialRow = this.draggedItem.row;\n const targetCol = normalizeValue(this.currentColStart);\n const targetRow = normalizeValue(this.currentRowStart);\n if (propsChanged([this.targetOrder, targetCol, targetRow], [initialOrder, initialCol, initialRow])) {\n const reorderEvent = new TileLayoutReorderEvent(this.draggedItem, this.tileLayoutSettings.items, this.targetOrder, initialOrder, normalizeValue(this.currentColStart), initialCol, targetRow, initialRow);\n this.reorder.next(reorderEvent);\n if (!reorderEvent.isDefaultPrevented()) {\n if (this.targetOrder > initialOrder) {\n this.zone.run(() => {\n for (let i = initialOrder + 1; i <= this.targetOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i - 1;\n }\n });\n }\n else {\n this.zone.run(() => {\n for (let i = this.targetOrder; i < initialOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i + 1;\n }\n });\n }\n this.draggedItem.order = this.targetOrder;\n if (this.draggedItem.col) {\n this.draggedItem.col = +this.currentColStart;\n }\n if (this.draggedItem.row) {\n this.draggedItem.row = +this.currentRowStart;\n }\n }\n }\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n this.zone.run(() => this.cleanUp());\n }\n else if (!this.reordering && this.resizing) {\n const initialRowSpan = this.draggedItem.rowSpan;\n const initialColSpan = this.draggedItem.colSpan;\n const { targetColSpan, targetRowSpan } = isRowItemPresent(this.tileLayoutSettings.items) ?\n this.targetSpan() :\n { targetColSpan: this.currentResizingColSpan, targetRowSpan: this.currentResizingRowSpan };\n if (propsChanged([initialRowSpan, initialColSpan], [targetRowSpan, targetColSpan])) {\n const resizeEvent = new TileLayoutResizeEvent(this.draggedItem, this.tileLayoutSettings.items, targetRowSpan, initialRowSpan, targetColSpan, initialColSpan);\n this.resize.next(resizeEvent);\n if (!resizeEvent.isDefaultPrevented()) {\n this.draggedItem.colSpan = this.currentResizingColSpan;\n this.draggedItem.rowSpan = this.currentResizingRowSpan;\n }\n }\n this.zone.run(() => this.cleanUp());\n }\n }\n reorderItems(event) {\n const targets = getDropTarget(event);\n const closestTile = targets.find(t => t !== this.draggedItemWrapper);\n let tileOrder = closestTile ? +closestTile.style.order : +this.draggedItemWrapper.style.order;\n if (this.tileLayoutSettings.autoFlow !== 'none') {\n const deltaX = event.clientX - this.lastDragCursorOffset.x;\n const deltaY = event.clientY - this.lastDragCursorOffset.y;\n const directionX = deltaX > 0 ? 'right' : deltaX < 0 ? 'left' : undefined;\n const directionY = deltaY > 0 ? 'down' : deltaX < 0 ? 'up' : undefined;\n const rect = this.draggedItemWrapper.getBoundingClientRect();\n const horizontalGap = this.tileLayoutSettings.gap.columns;\n const verticalGap = this.tileLayoutSettings.gap.rows;\n if (directionX && this.draggedItem.col) {\n const { col } = calculateCellFromPosition({\n x: directionX === 'right' ? rect.right - horizontalGap : rect.left + horizontalGap,\n y: event.clientY\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartCol = this.getTargetCol(col, directionX);\n this.currentColStart = targetStartCol.toString();\n }\n if (directionY && this.draggedItem.row) {\n const { row } = calculateCellFromPosition({\n x: event.clientX,\n y: directionY === 'down' ? rect.bottom - verticalGap : rect.top + verticalGap\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartRow = this.getTargetRow(row, directionY);\n this.currentRowStart = targetStartRow.toString();\n }\n }\n const hintBefore = tileOrder < this.targetOrder;\n const hintAfter = tileOrder > this.targetOrder;\n this.zone.run(() => this.targetOrder = tileOrder);\n if (hintBefore) {\n this.tileLayoutSettings.tileLayoutElement\n .insertBefore(this.tileLayoutSettings.hintElement, this.tileLayoutSettings.tileLayoutElement.firstChild);\n }\n else if (hintAfter) {\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: (event.pageY - this.offset.top) + 'px',\n left: (event.pageX - this.offset.left) + 'px'\n });\n }\n resizeItem(event) {\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: this.direction.split('k-cursor-')[1]\n });\n const currentWidth = this.rtl ?\n this.offset.width + (this.offset.x - event.clientX) :\n this.offset.width + (event.clientX - this.startingPoint.left);\n const currentHeight = this.offset.height + (event.clientY - this.startingPoint.top);\n const hintRect = this.tileLayoutSettings.hintElement.getBoundingClientRect();\n const hintWidth = hintRect.width;\n const hintHeight = hintRect.height;\n const horizontalDragDirection = event.clientX - this.lastDragCursorOffset.x;\n const verticalDragDirection = event.clientY - this.lastDragCursorOffset.y;\n const startCol = this.draggedItem.col ? this.draggedItem.col : calculateCellFromPosition({\n x: this.rtl ? hintRect.right : hintRect.x,\n y: hintRect.y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl).col;\n const maxWidth = (this.tileLayoutSettings.columns - startCol) * (this.cellSize.width + this.tileLayoutSettings.gap.columns) + this.cellSize.width;\n const resizeHorizontally = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n width: Math.min(Math.max(currentWidth, this.cellSize.width), maxWidth) + 'px'\n });\n if (this.rtl && currentWidth > this.cellSize.width) {\n const totalWidth = this.tileLayoutSettings.columns * (this.cellSize.width + this.tileLayoutSettings.gap.columns);\n const leftBoundary = this.tileLayoutSettings.tileLayoutElement.getBoundingClientRect().right - totalWidth;\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: Math.max(event.clientX, leftBoundary) + 'px'\n });\n }\n const deltaX = currentWidth - hintWidth;\n const { x, y, right } = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const { col } = calculateCellFromPosition({ x: (this.rtl ? right : x), y: y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const resizedColSpan = col + this.currentResizingColSpan;\n const expandingCondition = this.rtl ? horizontalDragDirection < 0 : horizontalDragDirection > 0;\n const shrinkingCondition = this.rtl ? horizontalDragDirection > 0 : horizontalDragDirection < 0;\n if (deltaX > OVERLAP_THRESHOLD * this.cellSize.width &&\n expandingCondition &&\n resizedColSpan <= this.tileLayoutSettings.columns) {\n this.currentResizingColSpan++;\n }\n else if (this.currentResizingColSpan > 1 &&\n shrinkingCondition &&\n deltaX < REVERSE_OVERLAP_THRESHOLD * this.cellSize.width) {\n this.currentResizingColSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridColumnEnd: `span ${this.currentResizingColSpan}`\n });\n };\n const resizeVertically = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n height: Math.max(currentHeight, this.cellSize.height) + 'px'\n });\n const deltaY = currentHeight - hintHeight;\n if (deltaY > OVERLAP_THRESHOLD * this.cellSize.height && verticalDragDirection > 0) {\n this.currentResizingRowSpan++;\n }\n else if (this.currentResizingRowSpan > 1 &&\n verticalDragDirection < 0 && deltaY < REVERSE_OVERLAP_THRESHOLD * this.cellSize.height) {\n this.currentResizingRowSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridRowEnd: `span ${this.currentResizingRowSpan}`\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n height: `${this.calculateHintHeight()}px`\n });\n };\n if (this.direction.indexOf('ew') > -1) {\n resizeHorizontally();\n }\n else if (this.direction.indexOf('ns') > -1) {\n resizeVertically();\n }\n else {\n resizeHorizontally();\n resizeVertically();\n }\n }\n cleanUp() {\n this.targetOrder = this.currentResizingColSpan = this.currentColStart = this.currentResizingRowSpan = this.currentRowStart = undefined;\n this.resizing = this.reordering = false;\n this.direction = null;\n if (this.draggedItemWrapper) {\n const grabHandle = this.draggedItemWrapper.querySelector('.k-cursor-grab');\n if (grabHandle) {\n this.renderer.removeClass(grabHandle, 'k-cursor-grabbing');\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: '',\n left: '',\n display: '',\n width: '',\n height: '',\n zIndex: '',\n position: ''\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'none',\n height: 'auto'\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: 'default'\n });\n this.draggedItemWrapper =\n this.offset =\n this.draggedItem =\n this.resizing =\n this.reordering =\n this.currentResizingColSpan =\n this.currentResizingRowSpan =\n this.startingPoint = undefined;\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n }\n }\n targetSpan() {\n const itemRect = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const startingCell = calculateCellFromPosition({ x: this.rtl ? itemRect.right : itemRect.x, y: itemRect.y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetEndCell = calculateCellFromPosition({\n x: this.rtl ? itemRect.x + OVERLAP_THRESHOLD * this.cellSize.width : itemRect.right - OVERLAP_THRESHOLD * this.cellSize.width,\n y: itemRect.bottom - OVERLAP_THRESHOLD * this.cellSize.height\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n return {\n targetColSpan: targetEndCell.col - startingCell.col + 1,\n targetRowSpan: targetEndCell.row - startingCell.row + 1\n };\n }\n getTargetCol(col, direction) {\n if (this.rtl) {\n return direction === 'left' ? col - this.draggedItem.colSpan + 1 : col;\n }\n return direction === 'right' ? col - this.draggedItem.colSpan + 1 : col;\n }\n getTargetRow(row, direction) {\n return direction === 'down' ? row - this.draggedItem.rowSpan + 1 : row;\n }\n calculateHintHeight() {\n const totalHintCellsHeight = this.currentResizingRowSpan * this.cellSize.height;\n const totalHintGapsHeight = (this.currentResizingRowSpan - 1) * this.tileLayoutSettings.gap.rows;\n const hintHeight = totalHintCellsHeight + totalHintGapsHeight - HINT_BORDERS_HEIGHT;\n return hintHeight;\n }\n}\nTileLayoutDraggingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutDraggingService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nTileLayoutDraggingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutDraggingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutDraggingService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; } });\n\n/**\n * Holds the content of the header section of the TileLayoutItem component.\n * This is the area which can be dragged to reorder the items if reordering is enabled for this item.\n */\nclass TileLayoutItemHeaderComponent {\n constructor(hostEl, renderer) {\n this.hostEl = hostEl;\n this.renderer = renderer;\n this.hostClass = true;\n }\n /**\n * @hidden\n */\n set reorderable(value) {\n const hostElement = this.hostEl.nativeElement;\n if (value) {\n this.renderer.addClass(hostElement, 'k-touch-action-none');\n this.renderer.removeClass(hostElement, 'k-touch-action-auto');\n }\n else {\n this.renderer.addClass(hostElement, 'k-touch-action-auto');\n this.renderer.removeClass(hostElement, 'k-touch-action-none');\n }\n }\n}\nTileLayoutItemHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemHeaderComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TileLayoutItemHeaderComponent, selector: \"kendo-tilelayout-item-header\", inputs: { reorderable: \"reorderable\" }, host: { properties: { \"class.k-tilelayout-item-header\": \"this.hostClass\", \"class.k-card-header\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-header',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-header']\n }, {\n type: HostBinding,\n args: ['class.k-card-header']\n }], reorderable: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TileLayoutResizeHandleDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n }\n ngOnInit() {\n this.sizeHandle();\n }\n setHorizontalPosition(element) {\n this.renderer.setStyle(element, this.rtl ? 'left' : 'right', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapX + 'px');\n }\n setBottom(element) {\n this.renderer.setStyle(element, 'bottom', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapY + 'px');\n }\n sizeHandle() {\n const element = this.el.nativeElement;\n const handleWidth = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width}px` : '100%';\n const handleHeight = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height}px` : '100%';\n this.renderer.setStyle(element, 'width', handleWidth);\n this.renderer.setStyle(element, 'height', handleHeight);\n if (this.resizeDirection === 'ew') {\n this.setHorizontalPosition(element);\n }\n else if (this.resizeDirection === 'ns') {\n this.setBottom(element);\n }\n else {\n this.setHorizontalPosition(element);\n this.setBottom(element);\n }\n }\n}\nTileLayoutResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutResizeHandleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTileLayoutResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TileLayoutResizeHandleDirective, selector: \"[kendoTileLayoutResizeHandle]\", inputs: { resizeDirection: \"resizeDirection\", rtl: \"rtl\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTileLayoutResizeHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { resizeDirection: [{\n type: Input\n }], rtl: [{\n type: Input\n }] } });\n\n/**\n * Represents a tile item within the TileLayoutComponent.\n */\nclass TileLayoutItemComponent {\n constructor(elem, renderer, localization, draggingService) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n /**\n * Determines how many rows will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.rowSpan = 1;\n /**\n * Determines how many columns will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.colSpan = 1;\n /**\n * Determines whether the item can be reordered. By default all items are reorderable when the [reorderable]({% slug api_layout_tilelayoutcomponent %}#toc-reorderable) property of the TileLayoutComponent is set to `true` ([see example]({% slug reordering_tilelayout %}#toc-disable-reordering)).\n *\n * @default true\n */\n this.reorderable = true;\n /**\n * Determines whether the item can be resized. By default all items are resizable when the [resizable]({% slug api_layout_tilelayoutcomponent %}#resizable) property of the TileLayoutComponent is set to `true` ([see example]({% slug resizing_tilelayout %}#toc-disable-resizing)).\n * @default true\n */\n this.resizable = true;\n this.itemClass = true;\n this.subs = new Subscription();\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n this.resizeDirections = resizable && this.resizable ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }));\n }\n /**\n * Determines the order of the tile items within the TileLayout.\n * If not set, the items will receive increasing sequential order in accordance with\n * their position in the DOM when initially rendered.\n */\n set order(value) {\n this._order = value;\n this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order}`);\n }\n get order() {\n return this._order;\n }\n get colEnd() {\n return `span ${this.colSpan}`;\n }\n get rowEnd() {\n return `span ${this.rowSpan}`;\n }\n get colStart() {\n return isPresent(this.col) ? this.col.toString() : undefined;\n }\n get rowStart() {\n return isPresent(this.row) ? this.row.toString() : undefined;\n }\n /**\n * @hidden\n */\n get reorderableHeader() {\n return this.reorderable && this.draggingService.reorderable.getValue();\n }\n ngAfterViewInit() {\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n var _a;\n this.toggleCursorClass(reorderable && this.reorderable);\n if ((_a = this.headers) === null || _a === void 0 ? void 0 : _a.first) {\n this.headers.first.reorderable = reorderable && this.reorderable;\n }\n }));\n }\n ngOnChanges(changes) {\n if (changes.reorderable && !changes.reorderable.firstChange) {\n this.toggleCursorClass(changes.reorderable.currentValue && this.draggingService.reorderable.getValue());\n }\n if (changes.resizable) {\n this.resizeDirections = this.resizable && this.draggingService.resizable.getValue() ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggleCursorClass(isReorderable) {\n const headerEl = this.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n if (!headerEl) {\n return;\n }\n if (isReorderable) {\n this.renderer.addClass(headerEl, 'k-cursor-grab');\n }\n else {\n this.renderer.removeClass(headerEl, 'k-cursor-grab');\n }\n }\n}\nTileLayoutItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: TileLayoutDraggingService }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TileLayoutItemComponent, selector: \"kendo-tilelayout-item\", inputs: { title: \"title\", rowSpan: \"rowSpan\", colSpan: \"colSpan\", order: \"order\", col: \"col\", row: \"row\", reorderable: \"reorderable\", resizable: \"resizable\" }, host: { properties: { \"class.k-tilelayout-item\": \"this.itemClass\", \"class.k-card\": \"this.itemClass\", \"style.grid-column-end\": \"this.colEnd\", \"style.grid-row-end\": \"this.rowEnd\", \"style.grid-column-start\": \"this.colStart\", \"style.grid-row-start\": \"this.rowStart\" } }, queries: [{ propertyName: \"headers\", predicate: TileLayoutItemHeaderComponent }], usesOnChanges: true, ngImport: i0, template: `\n \n
    {{ title }}
    \n
    \n \n \n \n \n \n `, isInline: true, components: [{ type: TileLayoutItemHeaderComponent, selector: \"kendo-tilelayout-item-header\", inputs: [\"reorderable\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TileLayoutResizeHandleDirective, selector: \"[kendoTileLayoutResizeHandle]\", inputs: [\"resizeDirection\", \"rtl\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item',\n template: `\n \n
    {{ title }}
    \n
    \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: TileLayoutDraggingService }]; }, propDecorators: { title: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], order: [{\n type: Input\n }], col: [{\n type: Input\n }], row: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], itemClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item']\n }, {\n type: HostBinding,\n args: ['class.k-card']\n }], colEnd: [{\n type: HostBinding,\n args: ['style.grid-column-end']\n }], rowEnd: [{\n type: HostBinding,\n args: ['style.grid-row-end']\n }], colStart: [{\n type: HostBinding,\n args: ['style.grid-column-start']\n }], rowStart: [{\n type: HostBinding,\n args: ['style.grid-row-start']\n }], headers: [{\n type: ContentChildren,\n args: [TileLayoutItemHeaderComponent]\n }] } });\n\nconst autoFlowClasses = {\n column: 'k-grid-flow-col',\n row: 'k-grid-flow-row',\n 'column-dense': 'k-grid-flow-col-dense',\n 'row-dense': 'k-grid-flow-row-dense'\n};\n/**\n * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})\n */\nclass TileLayoutComponent {\n constructor(elem, renderer, localization, draggingService, zone) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.zone = zone;\n /**\n * Defines the number of columns ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.columns = 1;\n /**\n * Determines the width of the columns. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.columnWidth = '1fr';\n /**\n * Determines whether the reordering functionality will be enabled ([see example]({% slug reordering_tilelayout %})).\n * @default false\n */\n this.reorderable = false;\n /**\n * Determines whether the resizing functionality will be enabled ([see example]({% slug resizing_tilelayout %})).\n * @default false\n */\n this.resizable = false;\n /**\n * Determines the height of the rows. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.rowHeight = '1fr';\n /**\n * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example]({% slug tiles_autoflow_tilelayout %})).\n * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).\n *\n * The possible values are:\n * * (Default) `column`\n * * `row`\n * * `row dense`\n * * `column dense`\n * * `none`\n *\n */\n this.autoFlow = 'column';\n /**\n * Fires when the user completes the reordering of the item ([see example]({% slug overview_tilelayout %}#toc-events)).\n * This event is preventable. If you cancel it, the item will not be reordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the item ([see example]({% slug overview_tilelayout %}#toc-events)).\n * This event is preventable. If you cancel it, the item will not be resized.\n */\n this.resize = new EventEmitter();\n this.hostClass = true;\n this.subs = new Subscription();\n this._gap = {\n rows: 16,\n columns: 16\n };\n validatePackage(packageMetadata);\n }\n /**\n * The numeric values which determine the spacing in pixels between the layout items horizontally and vertically.\n * Properties:\n * * rows - the vertical spacing. Numeric values are treated as pixels. Defaults to `16`.\n * * columns - the horizontal spacing. Numeric values are treated as pixels. Defaults to `16`.\n *\n * When bound to a single numeric value, it will be set to both `rows` and `columns` properties.\n */\n set gap(value) {\n this._gap = (typeof value === 'number') ? { rows: value, columns: value } : Object.assign(this._gap, value);\n }\n get gap() {\n return this._gap;\n }\n get gapStyle() {\n return `${this.gap.rows}px ${this.gap.columns}px`;\n }\n get currentColStart() {\n return this.draggingService.colStart;\n }\n get currentRowStart() {\n return this.draggingService.rowStart;\n }\n get draggedItemWrapper() {\n return this.draggingService.itemWrapper;\n }\n get targetOrder() {\n return this.draggingService.order;\n }\n ngOnInit() {\n this.applyColStyling();\n this.applyRowStyling();\n this.draggingService.reorderable.next(this.reorderable);\n this.draggingService.resizable.next(this.resizable);\n if (hasObservers(this.reorder)) {\n this.subs.add(this.draggingService.reorder.subscribe(e => this.reorder.emit(e)));\n }\n if (hasObservers(this.resize)) {\n this.subs.add(this.draggingService.resize.subscribe(e => this.resize.emit(e)));\n }\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n if (reorderable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n if (resizable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngAfterViewInit() {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n this.applyAutoFlow(null, autoFlowClasses[this.autoFlow]);\n this.items.changes.subscribe(() => {\n this.setItemsOrder();\n this.draggingService.tileLayoutSettings.items = this.items.toArray();\n });\n }\n ngAfterContentInit() {\n this.setItemsOrder();\n }\n ngOnChanges(changes) {\n if (changes.columns || changes.columnWidth) {\n this.applyColStyling();\n }\n if (changes.rowHeight) {\n this.applyRowStyling();\n }\n if (changes.reorderable) {\n this.draggingService.reorderable.next(changes.reorderable.currentValue);\n }\n if (changes.resizable) {\n this.draggingService.resizable.next(changes.resizable.currentValue);\n }\n if (changes.gap || changes.autoFlow || changes.columns) {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n if (changes.autoFlow) {\n this.applyAutoFlow(autoFlowClasses[changes.autoFlow.previousValue] || '', autoFlowClasses[changes.autoFlow.currentValue]);\n }\n }\n }\n ngOnDestroy() {\n if (this.draggable) {\n this.draggable.destroy();\n }\n this.subs.unsubscribe();\n }\n handlePress({ originalEvent }) {\n this.draggingService.handlePress(originalEvent);\n }\n handleDrag({ originalEvent }) {\n this.draggingService.handleDrag(originalEvent);\n }\n handleRelease({ originalEvent }) {\n this.draggingService.handleRelease(originalEvent);\n }\n applyColStyling() {\n const colWidth = typeof this.columnWidth === 'number' ? `${this.columnWidth}px` : this.columnWidth;\n const gridTemplateColumnsStyle = `repeat(${this.columns}, ${colWidth})`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-template-columns', gridTemplateColumnsStyle);\n }\n applyRowStyling() {\n const rowHeight = typeof this.rowHeight === 'number' ? `${this.rowHeight}px` : this.rowHeight;\n const gridAutoRowsStyle = `${rowHeight}`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-auto-rows', gridAutoRowsStyle);\n }\n draggingServiceConfig() {\n return {\n tileLayoutElement: this.elem ? this.elem.nativeElement : undefined,\n hintElement: this.hint ? this.hint.nativeElement : undefined,\n gap: this.gap,\n columns: this.columns,\n autoFlow: this.autoFlow,\n items: this.items ? this.items.toArray() : []\n };\n }\n initializeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.elem.nativeElement));\n }\n applyAutoFlow(classToRemove, classToAdd) {\n const element = this.elem.nativeElement;\n if (classToRemove) {\n this.renderer.removeClass(element, classToRemove);\n }\n if (this.autoFlow !== 'none' && isPresent(classToAdd)) {\n this.renderer.addClass(element, classToAdd);\n }\n }\n setItemsOrder() {\n this.items.forEach((item, index) => {\n if (!isPresent(item.order)) {\n item.order = index;\n }\n });\n }\n}\nTileLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: TileLayoutDraggingService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TileLayoutComponent, selector: \"kendo-tilelayout\", inputs: { columns: \"columns\", columnWidth: \"columnWidth\", gap: \"gap\", reorderable: \"reorderable\", resizable: \"resizable\", rowHeight: \"rowHeight\", autoFlow: \"autoFlow\" }, outputs: { reorder: \"reorder\", resize: \"resize\" }, host: { properties: { \"class.k-widget\": \"this.hostClass\", \"class.k-tilelayout\": \"this.hostClass\", \"style.gap\": \"this.gapStyle\", \"style.padding\": \"this.gapStyle\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n TileLayoutDraggingService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ], queries: [{ propertyName: \"items\", predicate: TileLayoutItemComponent }], viewQueries: [{ propertyName: \"hint\", first: true, predicate: [\"hint\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout',\n providers: [\n LocalizationService,\n TileLayoutDraggingService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ],\n template: `\n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: TileLayoutDraggingService }, { type: i0.NgZone }]; }, propDecorators: { columns: [{\n type: Input\n }], columnWidth: [{\n type: Input\n }], gap: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], autoFlow: [{\n type: Input\n }], reorder: [{\n type: Output\n }], resize: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-tilelayout']\n }], gapStyle: [{\n type: HostBinding,\n args: ['style.gap']\n }, {\n type: HostBinding,\n args: ['style.padding']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], items: [{\n type: ContentChildren,\n args: [TileLayoutItemComponent]\n }], hint: [{\n type: ViewChild,\n args: ['hint', { static: false }]\n }] } });\n\n/**\n * Holds the main content of the TileLayoutItem component.\n */\nclass TileLayoutItemBodyComponent {\n constructor() {\n this.hostClass = true;\n this.minHeight = 0;\n }\n}\nTileLayoutItemBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TileLayoutItemBodyComponent, selector: \"kendo-tilelayout-item-body\", host: { properties: { \"class.k-tilelayout-item-body\": \"this.hostClass\", \"class.k-card-body\": \"this.hostClass\", \"style.min-height\": \"this.minHeight\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutItemBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-body',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-body']\n }, {\n type: HostBinding,\n args: ['class.k-card-body']\n }], minHeight: [{\n type: HostBinding,\n args: ['style.min-height']\n }] } });\n\nconst exportedModules$a = [\n AvatarComponent\n];\nconst declarations$a = [\n ...exportedModules$a\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Avatar component.\n */\nclass AvatarModule {\n}\nAvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarModule, declarations: [AvatarComponent], imports: [CommonModule], exports: [AvatarComponent] });\nAvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AvatarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$a],\n exports: [exportedModules$a],\n imports: [CommonModule]\n }]\n }] });\n\nconst cardDirectives = [\n CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective\n];\nconst exportedModules$9 = [\n CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent,\n ...cardDirectives\n];\nconst declarations$9 = [...exportedModules$9];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Card component.\n */\nclass CardModule {\n}\nCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardModule, declarations: [CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent, CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective], imports: [CommonModule], exports: [CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent, CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective] });\nCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CardModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$9],\n exports: [exportedModules$9],\n imports: [CommonModule]\n }]\n }] });\n\nconst templateDirectives$1 = [\n DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective\n];\nconst exportedModules$8 = [\n DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent,\n ...templateDirectives$1\n];\nconst declarations$8 = [\n DrawerItemComponent,\n DrawerListComponent,\n ...exportedModules$8\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Drawer component.\n */\nclass DrawerModule {\n}\nDrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDrawerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerModule, declarations: [DrawerItemComponent,\n DrawerListComponent, DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent, DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective], imports: [CommonModule], exports: [DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent, DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective] });\nDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DrawerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$8],\n exports: [exportedModules$8],\n imports: [CommonModule]\n }]\n }] });\n\nconst exportedModules$7 = [\n ExpansionPanelComponent,\n ExpansionPanelTitleDirective\n];\nconst declarations$7 = [\n ...exportedModules$7\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ExpansionPanel component.\n */\nclass ExpansionPanelModule {\n}\nExpansionPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExpansionPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelModule, declarations: [ExpansionPanelComponent,\n ExpansionPanelTitleDirective], imports: [CommonModule, EventsModule], exports: [ExpansionPanelComponent,\n ExpansionPanelTitleDirective] });\nExpansionPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpansionPanelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$7],\n exports: [exportedModules$7],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\nconst exportedModules$6 = [\n PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective\n];\nconst declarations$6 = [\n ...exportedModules$6\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the PanelBar component.\n *\n * The module registers:\n * - `PanelBarComponent`—The `PanelBar` component class.\n * - `PanelBarItemComponent`—The `PanelBarItem` component class.\n * - `PanelBarContentComponent`—The `PanelBarContent` component class.\n * - `PanelBarItemTemplateDirective—The `PanelBarItemTemplate` directive.\n * - `PanelBarItemTitleDirective—The `PanelBarItemTitle` directive.\n */\nclass PanelBarModule {\n}\nPanelBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPanelBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarModule, declarations: [PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective], imports: [CommonModule], exports: [PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective] });\nPanelBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanelBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$6],\n exports: [exportedModules$6],\n imports: [CommonModule]\n }]\n }] });\n\nconst exportedModules$5 = [\n SplitterComponent,\n SplitterPaneComponent\n];\nconst declarations$5 = [\n SplitterBarComponent,\n ...exportedModules$5\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Splitter component.\n *\n * The module registers:\n * - `SplitterComponent`—The `Splitter` component class.\n * - `SplitterPaneComponent`—The `SplitterPane` component class.\n */\nclass SplitterModule {\n}\nSplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterModule, declarations: [SplitterBarComponent, SplitterComponent,\n SplitterPaneComponent], imports: [CommonModule,\n DraggableModule], exports: [SplitterComponent,\n SplitterPaneComponent] });\nSplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterModule, imports: [[\n CommonModule,\n DraggableModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$5],\n exports: [exportedModules$5],\n imports: [\n CommonModule,\n DraggableModule\n ]\n }]\n }] });\n\nconst templateDirectives = [\n StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective\n];\nconst exportedModules$4 = [\n StepperComponent,\n StepperCustomMessagesComponent,\n ...templateDirectives\n];\nconst declarations$4 = [\n StepperStepComponent,\n StepperListComponent,\n LocalizedStepperMessagesDirective,\n ...exportedModules$4\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Stepper component.\n */\nclass StepperModule {\n}\nStepperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStepperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperModule, declarations: [StepperStepComponent,\n StepperListComponent,\n LocalizedStepperMessagesDirective, StepperComponent,\n StepperCustomMessagesComponent, StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective], imports: [CommonModule, ProgressBarModule], exports: [StepperComponent,\n StepperCustomMessagesComponent, StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective] });\nStepperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperModule, imports: [[CommonModule, ProgressBarModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StepperModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$4],\n exports: [exportedModules$4],\n imports: [CommonModule, ProgressBarModule]\n }]\n }] });\n\nconst exportedModules$3 = [\n TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective\n];\nconst declarations$3 = [\n ...exportedModules$3,\n TabStripScrollableButtonComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TabStrip component.\n *\n * The module registers:\n * - `TabStripComponent`—The `TabStrip` component class.\n * - `TabStripTabComponent`—The `TabStripTab` component class.\n * - `TabContentDirective`—The tab content directive used on the `` tag.\n * - `TabTitleDirective`—The tab title directive used on the `` tag.\n */\nclass TabStripModule {\n}\nTabStripModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTabStripModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripModule, declarations: [TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective, TabStripScrollableButtonComponent], imports: [CommonModule, ResizeSensorModule], exports: [TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective] });\nTabStripModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripModule, imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TabStripModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$3],\n exports: [exportedModules$3],\n imports: [CommonModule, ResizeSensorModule]\n }]\n }] });\n\nconst exportedModules$2 = [\n TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective\n];\nconst declarations$2 = [\n ...exportedModules$2\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TileLayout component.\n *\n * The module registers:\n * - `TileLayoutComponent`—The `TileLayoutComponent` component class.\n * - `TileLayoutItemComponent`—The `TileLayoutItemComponent` component class.\n * - `TileLayoutItemHeaderComponent`—The `TileLayoutItemHeaderComponent` component class.\n * - `TileLayoutItemBodyComponent`—The `TileLayoutItemBodyComponent` component class.\n */\nclass TileLayoutModule {\n}\nTileLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTileLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutModule, declarations: [TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective], imports: [CommonModule], exports: [TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective] });\nTileLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TileLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$2],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst VERTICAL_SUFFIX = {\n top: 'start',\n middle: 'center',\n bottom: 'end',\n stretch: 'stretch'\n};\n/**\n * @hidden\n */\nconst JUSTIFY_PREFIX = `k-justify-content`;\n/**\n * @hidden\n */\nconst GRID_JUSTIFY_PREFIX = `k-justify-items`;\n/**\n * @hidden\n */\nconst ALIGN_PREFIX = `k-align-items`;\n/**\n * @hidden\n */\nconst normalizeGap = (gap) => {\n if (typeof gap === 'number' || typeof gap === 'string') {\n return { cols: gap, rows: gap };\n }\n else {\n let parsedGap = {};\n parsedGap.rows = gap.rows ? gap.rows : 0;\n parsedGap.cols = gap.cols ? gap.cols : 0;\n return parsedGap;\n }\n};\n/**\n * @hidden\n */\nconst generateGapStyle = (gap) => {\n if (gap.rows === gap.cols) {\n return typeof gap.rows === 'number' ? `${gap.rows}px` : gap.rows;\n }\n else {\n let rowStyle = `${typeof gap.rows === 'number' ? gap.rows + 'px' : gap.rows}`;\n let colStyle = `${typeof gap.cols === 'number' ? gap.cols + 'px' : gap.cols}`;\n return `${rowStyle} ${colStyle}`;\n }\n};\n/**\n * @hidden\n */\nconst generateGridStyle = (items, itemType) => {\n let styling = [];\n items.forEach((item) => {\n if (typeof item === 'number') {\n styling.push(`${item}px`);\n }\n else if (typeof item === 'string') {\n styling.push(item);\n }\n else {\n if (itemType === 'rows') {\n const rowHeight = item.height;\n if (rowHeight) {\n styling.push(typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight);\n }\n else {\n styling.push('0px');\n }\n }\n else {\n const colWidth = item.width;\n if (colWidth) {\n styling.push(typeof colWidth === 'number' ? `${colWidth}px` : colWidth);\n }\n else {\n styling.push('0px');\n }\n }\n }\n });\n return styling;\n};\n/**\n * @hidden\n */\nconst validateGridLayoutRowsCols = (arr) => {\n for (const el of arr) {\n const isNum = typeof el === 'number';\n const isStr = typeof el === 'string';\n const isObject = typeof el === 'object' && el !== null;\n if (!isNum && !isStr && !isObject) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Represents the [Kendo UI StackLayout component for Angular]({% slug overview_stacklayout %}).\n */\nclass StackLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gap between the inner StackLayout elements. The default value is `0`\n * ([see example]({% slug layout_stacklayout %}#toc-gaps)).\n */\n this.gap = 0;\n /**\n * Specifies the orientation of the StackLayout\n * ([see example]({% slug layout_stacklayout %}#toc-orientation)).\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner StackLayout elements\n * ([see example]({% slug layout_stacklayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('orientation', changes)) {\n this.handleAlignClasses();\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n if (this.orientation === 'horizontal') {\n this.justifyClass = `${JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n }\n else {\n this.justifyClass = `${JUSTIFY_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.alignClass = `${ALIGN_PREFIX}-${this.align.horizontal}`;\n }\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n const parsedGap = isNumber(this.gap) ? `${this.gap}px` : this.gap;\n this.renderer.setStyle(this.element.nativeElement, 'gap', parsedGap);\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nStackLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStackLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StackLayoutComponent, selector: \"kendo-stacklayout\", inputs: { align: \"align\", gap: \"gap\", orientation: \"orientation\" }, host: { properties: { \"class.k-stack-layout\": \"this.hostClass\", \"class.k-hstack\": \"this.horizontalClass\", \"class.k-vstack\": \"this.verticalClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stacklayout'\n }\n ], exportAs: [\"kendoStackLayout\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoStackLayout',\n selector: 'kendo-stacklayout',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stacklayout'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-stack-layout']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-hstack']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-vstack']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], align: [{\n type: Input\n }], gap: [{\n type: Input\n }], orientation: [{\n type: Input\n }] } });\n\nconst exportedModules$1 = [\n StackLayoutComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the StackLayout component.\n */\nclass StackLayoutModule {\n}\nStackLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStackLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutModule, declarations: [StackLayoutComponent], imports: [CommonModule], exports: [StackLayoutComponent] });\nStackLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StackLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI GridLayout component for Angular]({% slug overview_gridlayout %}).\n */\nclass GridLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gaps between the elements. The default value is `0`\n * ([see example]({% slug layout_gridlayout %}#toc-gaps)).\n */\n this.gap = 0;\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner GridLayout elements\n * ([see example]({% slug layout_gridlayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.handleGridTemplateStyling('rows');\n this.handleGridTemplateStyling('cols');\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('rows', changes)) {\n this.handleGridTemplateStyling('rows');\n }\n if (isChanged('cols', changes)) {\n this.handleGridTemplateStyling('cols');\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n this.justifyClass = `${GRID_JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n let parsedGap = normalizeGap(this.gap);\n let gapStyle = generateGapStyle(parsedGap);\n this.renderer.setStyle(this.element.nativeElement, 'gap', gapStyle);\n }\n handleGridTemplateStyling(type) {\n if (!isPresent(this[type])) {\n return;\n }\n const isValid = validateGridLayoutRowsCols(this[type]);\n if (!isValid && isDevMode()) {\n const valueType = type === 'rows' ? 'GridLayoutRowSize' : 'GridLayoutColSize';\n throw new Error(`The provided ${type} value contains invalid elements. The array supports values of type number, string or ${valueType}.`);\n }\n const gridTemplateStyle = type === 'rows' ? 'grid-template-rows' : 'grid-template-columns';\n const gridStyle = generateGridStyle(this[type], type);\n this.renderer.setStyle(this.element.nativeElement, gridTemplateStyle, gridStyle.join(' '));\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nGridLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGridLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridLayoutComponent, selector: \"kendo-gridlayout\", inputs: { rows: \"rows\", cols: \"cols\", gap: \"gap\", align: \"align\" }, host: { properties: { \"class.k-grid-layout\": \"this.hostClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.gridlayout'\n }\n ], exportAs: [\"kendoGridLayout\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoGridLayout',\n selector: 'kendo-gridlayout',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.gridlayout'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-grid-layout']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], gap: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\nclass GridLayoutItemComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n }\n ngOnInit() {\n this.setItemStyle();\n }\n ngOnChanges() {\n this.setItemStyle();\n }\n setItemStyle() {\n const row = this.row || 'auto';\n const col = this.col || 'auto';\n const rowSpan = this.rowSpan ? `span ${this.rowSpan}` : 'auto';\n const colSpan = this.colSpan ? `span ${this.colSpan}` : 'auto';\n const gridAreaStyle = `${row} / ${col} / ${rowSpan} / ${colSpan}`;\n this.renderer.setStyle(this.element.nativeElement, 'grid-area', gridAreaStyle);\n }\n}\nGridLayoutItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutItemComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nGridLayoutItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridLayoutItemComponent, selector: \"kendo-gridlayout-item\", inputs: { row: \"row\", col: \"col\", rowSpan: \"rowSpan\", colSpan: \"colSpan\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutItemComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-gridlayout-item',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { row: [{\n type: Input\n }], col: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], colSpan: [{\n type: Input\n }] } });\n\nconst exportedModules = [\n GridLayoutComponent,\n GridLayoutItemComponent\n];\nconst declarations = [\n ...exportedModules\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the GridLayout component.\n */\nclass GridLayoutModule {\n}\nGridLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGridLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutModule, declarations: [GridLayoutComponent,\n GridLayoutItemComponent], imports: [CommonModule], exports: [GridLayoutComponent,\n GridLayoutItemComponent] });\nGridLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Layout components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Layout module\n * import { LayoutModule } from '@progress/kendo-angular-layout';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LayoutModule], // import Layout module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LayoutModule, exports: [AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule] });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LayoutModule, imports: [AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AvatarComponent, AvatarModule, CardAction, CardActionsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardMediaDirective, CardModule, CardSeparatorDirective, CardSubtitleDirective, CardTitleDirective, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerFooterTemplateDirective, DrawerHeaderTemplateDirective, DrawerItemTemplateDirective, DrawerModule, DrawerSelectEvent, DrawerTemplateDirective, ExpansionPanelActionEvent, ExpansionPanelComponent, ExpansionPanelModule, ExpansionPanelTitleDirective, GridLayoutComponent, GridLayoutItemComponent, GridLayoutModule, LayoutModule, LocalizedStepperMessagesDirective, LocalizedTabStripMessagesDirective, PanelBarCollapseEvent, PanelBarComponent, PanelBarContentDirective, PanelBarExpandEvent, PanelBarExpandMode, PanelBarItemComponent, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarModule, PanelBarSelectEvent, PanelBarStateChangeEvent, SelectEvent, SplitterComponent, SplitterModule, SplitterPaneComponent, StackLayoutComponent, StackLayoutModule, StepperActivateEvent, StepperComponent, StepperCustomMessagesComponent, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperModule, StepperStepTemplateDirective, TabCloseEvent, TabComponent, TabContentDirective, TabStripComponent, TabStripCustomMessagesComponent, TabStripModule, TabStripTabComponent, TabTitleDirective, TileLayoutComponent, TileLayoutItemBodyComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TileLayoutModule, TileLayoutReorderEvent, TileLayoutResizeEvent, TileLayoutResizeHandleDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, NgZone, Directive, Optional, Component, Input, ContentChildren, EventEmitter, ElementRef, ViewChild, HostBinding, forwardRef, Output, isDevMode, NgModule, ContentChild } from '@angular/core';\nimport * as i3 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { PreventableEvent as PreventableEvent$1, hasObservers, isDocumentAvailable, Keys } from '@progress/kendo-angular-common';\nimport * as i6 from '@progress/kendo-angular-popup';\nimport { PopupService, POPUP_CONTAINER, PopupModule } from '@progress/kendo-angular-popup';\nimport * as i5 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-menu',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441247,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst PARENT_REGEX = /_?\\d+$/;\nconst SEPARATOR = '_';\nlet id = 0;\nconst itemIndexComparer = (a, b) => a.siblingIndex - b.siblingIndex;\nconst next = (idx, items, dir) => {\n let current = items[idx + dir];\n while (!current) {\n if (idx < 0) {\n idx = items.length - 1;\n }\n else if (idx >= items.length) {\n idx = 0;\n }\n else {\n idx += dir;\n }\n current = items[idx];\n }\n return current;\n};\n/**\n * @hidden\n */\nclass ItemsService {\n constructor() {\n this.items = {};\n this.lists = [];\n this.idPrefix = `k-menu${id++}`;\n }\n get hasItems() {\n return Object.keys(this.items).length > 0;\n }\n childId(index) {\n return `${this.idPrefix}-child${index}`;\n }\n itemIndex(parentIndex, index) {\n return (parentIndex ? parentIndex + SEPARATOR : '') + index;\n }\n get(index) {\n return this.items[index];\n }\n add(item) {\n this.items[item.index] = item;\n }\n remove(item) {\n if (this.items[item.index] === item) {\n delete this.items[item.index];\n }\n }\n addList(list) {\n this.lists.push(list);\n }\n removeList(list) {\n const index = this.lists.indexOf(list);\n if (index >= 0) {\n this.lists.splice(index, 1);\n }\n }\n containsList(element) {\n return Boolean(this.lists.find(list => list.element.nativeElement === element));\n }\n siblings(item) {\n const parentIndex = this.parentIndex(item.index);\n return this.filter((index) => this.parentIndex(index) === parentIndex);\n }\n otherSiblings(item) {\n const parentIndex = this.parentIndex(item.index);\n return this.filter((index) => this.parentIndex(index) === parentIndex && index !== item.index);\n }\n children(item) {\n return this.filter((index) => this.parentIndex(index) === item.index);\n }\n parent(item) {\n return this.items[this.parentIndex(item.index)];\n }\n root(item) {\n return this.items[this.indices(item.index)[0]];\n }\n indices(index) {\n return index.split(SEPARATOR);\n }\n filter(predicate) {\n const result = [];\n const items = this.items;\n for (let index in items) {\n if (predicate(index, items[index])) {\n result.push(items[index]);\n }\n }\n return result.sort(itemIndexComparer);\n }\n previous(item) {\n const siblings = this.siblings(item);\n const itemIndex = siblings.indexOf(item);\n return next(itemIndex, siblings, -1);\n }\n next(item) {\n const siblings = this.siblings(item);\n const itemIndex = siblings.indexOf(item);\n return next(itemIndex, siblings, 1);\n }\n hasParent(item, parent) {\n return item.index.startsWith(parent.index);\n }\n areSiblings(item1, item2) {\n return item1 !== item2 && this.parent(item1) === this.parent(item2);\n }\n forEach(callback) {\n const items = this.items;\n for (let index in items) {\n if (items.hasOwnProperty(index)) {\n callback(items[index]);\n }\n }\n }\n parentIndex(index) {\n return index.replace(PARENT_REGEX, '');\n }\n}\nItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemsService, decorators: [{\n type: Injectable\n }] });\n\nconst canPerformAction = (item, action) => !((action === 'open' && item.opened) || (action === 'close' && !item.opened));\n/**\n * Used to remove cyclic dependency error. Dublicates MenuEvent\n * @hidden\n */\nclass MenuStateEvent extends PreventableEvent$1 {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n/**\n * @hidden\n */\nclass ActionsService {\n constructor(ngZone, items) {\n this.ngZone = ngZone;\n this.items = items;\n this.actions = [];\n }\n open(item, finished) {\n if (item.disabled) {\n return;\n }\n if (item.hasContent && !item.opened) {\n this.actions.push({\n name: 'open',\n requiresZone: item.hasContentTemplates(),\n item,\n finished\n });\n }\n else if (finished) {\n finished();\n }\n }\n close(item) {\n this.closeChildren(item);\n this.closeItem(item);\n }\n closeItem(item) {\n if (item.opened) {\n this.actions.push({\n name: 'close',\n item\n });\n }\n }\n closeToRoot(item) {\n this.closeChildren(item);\n let current = item;\n do {\n this.closeItem(current);\n current = this.items.parent(current);\n } while (current);\n }\n closeOthers(item) {\n this.closeChildren(item);\n let current = item;\n while (current) {\n const siblings = this.items.otherSiblings(current);\n this.closeItems(siblings);\n current = this.items.parent(current);\n }\n }\n closeAll() {\n this.items.forEach((item) => {\n if (item.opened && item.level === 0) {\n this.close(item);\n }\n });\n }\n select(item, domEvent, prevented, finished) {\n this.actions.push({\n name: 'select',\n item,\n prevented,\n finished,\n domEvent\n });\n }\n emit(name, item, domEvent) {\n const owner = this.owner;\n const eventArgs = new MenuStateEvent({\n sender: owner,\n item: item.item,\n index: item.index,\n originalEvent: domEvent,\n hasContent: item.hasContent\n });\n owner[name].emit(eventArgs);\n if (owner.contextService) {\n owner.contextService.emit(name, eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n get hasPending() {\n return this.actions.length > 0;\n }\n execute(toExecute) {\n if (!this.hasPending && !toExecute) {\n return;\n }\n const actions = toExecute || this.clear();\n if (!NgZone.isInAngularZone() && this.requiresZone(actions)) {\n this.ngZone.run(() => {\n this.executeActions(actions);\n });\n }\n else {\n this.executeActions(actions);\n }\n }\n clear() {\n const actions = this.actions;\n this.actions = [];\n return actions;\n }\n executeActions(actions) {\n for (let idx = 0; idx < actions.length; idx++) {\n const { item, name, prevented, finished, domEvent } = actions[idx];\n if (!canPerformAction(item, name)) {\n continue;\n }\n if (!this.emit(name, item, domEvent)) {\n if (item[name]) {\n item[name]();\n }\n if (finished) {\n finished();\n }\n }\n else if (prevented) {\n prevented();\n }\n }\n }\n requiresZone(toExecute) {\n const actions = toExecute || this.actions;\n const owner = this.owner;\n const contextService = owner.contextService;\n for (let idx = 0; idx < actions.length; idx++) {\n const action = actions[idx];\n const name = action.name;\n if (action.requiresZone || (name && (hasObservers(owner[name]) || (contextService && contextService.hasObservers(name))))) {\n return true;\n }\n }\n return false;\n }\n closeChildren(item) {\n if (!item.opened) {\n return;\n }\n const children = this.items.children(item);\n this.closeItems(children);\n }\n closeItems(items) {\n for (let idx = 0; idx < items.length; idx++) {\n this.close(items[idx]);\n }\n }\n}\nActionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ActionsService, deps: [{ token: i0.NgZone }, { token: ItemsService }], target: i0.ɵɵFactoryTarget.Injectable });\nActionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ActionsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ActionsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: ItemsService }]; } });\n\nconst DEFAULT_ACTIVE = '0';\nconst NO_SPACE_REGEX = /\\S/;\nconst handlers = {};\nhandlers['37'] = 'left';\nhandlers['39'] = 'right';\nhandlers['38'] = 'up';\nhandlers['40'] = 'down';\nhandlers['36'] = 'home';\nhandlers['35'] = 'end';\nhandlers['32'] = 'enter';\nhandlers['13'] = 'enter';\nhandlers['27'] = 'esc';\nhandlers['9'] = 'tab';\nconst handlersRTL = Object.assign({}, handlers, {\n '37': 'right',\n '39': 'left'\n});\nfunction isPrintableCharacter(key) {\n return key.length === 1 && NO_SPACE_REGEX.test(key);\n}\nconst resolvedPromise = Promise.resolve(null);\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(items, actions, localization, ngZone) {\n this.items = items;\n this.actions = actions;\n this.localization = localization;\n this.ngZone = ngZone;\n this.vertical = false;\n this.activeIndex = DEFAULT_ACTIVE;\n }\n get focusedItem() {\n return this.items.get(this.focusedIdx);\n }\n get activeItem() {\n return this.items.get(this.activeIndex);\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n focus(item) {\n if (item.index === this.focusedIdx) {\n return;\n }\n if (!this.activeItem || !this.items.hasParent(item, this.activeItem)) {\n this.setActive(item);\n }\n this.setFocus(item);\n }\n setFocus(item) {\n this.focusedIdx = item.index;\n item.focus();\n }\n focusLeave() {\n const focused = this.focusedItem;\n if (focused) {\n this.actions.closeToRoot(focused);\n this.actions.execute();\n }\n this.focusedIdx = null;\n }\n updateActive() {\n if (!this.activeItem && this.items.hasItems) {\n const firstItem = this.items.get(DEFAULT_ACTIVE);\n firstItem.toggleActive(true);\n this.ngZone.runOutsideAngular(() => {\n resolvedPromise.then(() => {\n this.activeIndex = DEFAULT_ACTIVE;\n });\n });\n }\n }\n keydown(e) {\n const current = this.focusedItem || this.activeItem;\n const handler = this.handlers[e.keyCode];\n if (!current) {\n return;\n }\n if (handler) {\n if (handler !== 'tab') {\n e.preventDefault();\n }\n this[handler](current, e);\n }\n else if (isPrintableCharacter(e.key)) {\n this.search(current, e.key);\n }\n this.actions.execute();\n }\n focusIndex(index) {\n if (!index && this.activeItem) {\n this.setFocus(this.activeItem);\n }\n else if (index === 'first') {\n this.focusFirst();\n }\n else if (index === 'last') {\n this.focusLast();\n }\n else {\n const item = this.items.get(index);\n if (item) {\n this.focus(item);\n }\n }\n }\n focusFirst() {\n const items = this.items.siblings(this.items.get('0'));\n this.focus(items[0]);\n }\n focusLast() {\n const items = this.items.siblings(this.items.get('0'));\n this.focus(items[items.length - 1]);\n }\n search(current, key) {\n const siblings = this.items.siblings(current);\n const startIndex = siblings.indexOf(current);\n const items = siblings.slice(startIndex + 1).concat(siblings.slice(0, startIndex));\n for (let idx = 0; idx < items.length; idx++) {\n const sibling = items[idx];\n const text = sibling.item.text || \"\";\n if (text.toLowerCase().startsWith(key.toLowerCase())) {\n this.focus(sibling);\n break;\n }\n }\n }\n down(current) {\n if (current.level === 0 && !this.vertical) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, 0));\n }\n }\n else {\n this.focus(this.items.next(current));\n }\n }\n up(current) {\n if (current.level === 0 && !this.vertical) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, current.children.length - 1));\n }\n }\n else {\n this.focus(this.items.previous(current));\n }\n }\n left(current) {\n if (this.vertical && current.level === 0 && current.disabled) {\n return;\n }\n if (current.level > 1 || (this.vertical && current.level > 0)) {\n const parent = this.items.parent(current);\n this.focus(parent);\n this.actions.close(parent);\n }\n else if (this.vertical && current.level === 0 && !current.disabled) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, current.children.length - 1));\n }\n }\n else {\n this.focus(this.items.previous(this.activeItem));\n }\n }\n right(current) {\n if (this.vertical && current.level === 0 && current.disabled) {\n return;\n }\n if (current.horizontal && !current.disabled) {\n if (current.hasContent) {\n this.actions.open(current, this.focusChild(current, 0));\n }\n else if (!this.vertical || current.level > 0) {\n this.focus(this.items.next(this.activeItem));\n }\n }\n else {\n this.focus(this.items.next(this.activeItem));\n }\n }\n home(current) {\n const siblings = this.items.siblings(current);\n this.focus(siblings[0]);\n }\n end(current) {\n const siblings = this.items.siblings(current);\n this.focus(siblings[siblings.length - 1]);\n }\n enter(current, domEvent) {\n const actions = this.actions;\n if (current.disabled) {\n return;\n }\n if (current.hasContent) {\n actions.select(current, domEvent);\n actions.open(current, this.focusChild(current, 0));\n }\n else {\n actions.select(current, domEvent, null, () => {\n current.navigate();\n });\n this.focus(this.items.root(current));\n actions.closeToRoot(current);\n }\n }\n esc(current) {\n if (current.level > 0) {\n const parent = this.items.parent(current);\n this.actions.close(parent);\n this.focus(parent);\n }\n }\n tab(current) {\n if (current.level > 0) {\n this.activeItem.focus();\n }\n }\n focusChild(item, index) {\n return () => {\n const child = this.items.children(item)[index];\n this.setFocus(child);\n };\n }\n setActive(item) {\n const focused = this.focusedItem;\n const active = this.items.root(item);\n if (this.activeItem) {\n this.activeItem.toggleActive(false);\n }\n this.activeIndex = active.index;\n active.toggleActive(true);\n if (focused) {\n this.actions.closeToRoot(focused);\n if (focused.level > 0) {\n this.actions.open(active);\n }\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: ItemsService }, { token: ActionsService }, { token: i3.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: ItemsService }, { type: ActionsService }, { type: i3.LocalizationService }, { type: i0.NgZone }]; } });\n\nconst DISABLE_OPEN_ON_OVER_DELAY = 500;\n/**\n * @hidden\n */\nclass HoverService {\n constructor(actions, items) {\n this.actions = actions;\n this.items = items;\n this.delay = 100;\n this._openOnOver = true;\n this.scheduled = [];\n }\n get openOnOver() {\n return this._openOnOver;\n }\n set openOnOver(value) {\n this.cancelActions();\n this._openOnOver = value;\n }\n get hovered() {\n return this.items.get(this.hoveredIdx);\n }\n set hovered(item) {\n this.hoveredIdx = item ? item.index : null;\n }\n ngOnDestroy() {\n this.cancelActions();\n }\n over(item) {\n this.cancelActions((action) => action.name === 'openOnOver');\n if (!this.hovered || this.hovered !== item) {\n this.actions.closeOthers(item);\n this.hovered = item;\n if ((item.level > 0 || this.openOnOver) && !item.disabled) {\n this.actions.open(item);\n this.cancelActions((action) => (action.name === 'close' && (item === action.item || this.items.hasParent(item, action.item))) ||\n (action.name === 'open' && !this.items.hasParent(item, action.item)));\n }\n this.scheduleActions();\n }\n }\n leave(disableOpenOnOver) {\n const hovered = this.hovered;\n if (hovered) {\n this.actions.closeToRoot(hovered);\n this.cancelActions(action => action.name === 'open');\n this.scheduleActions();\n }\n if (disableOpenOnOver && this._openOnOver) {\n this.scheduleDisableOpenOnOver();\n }\n this.hovered = null;\n }\n closeCurrent() {\n const hovered = this.hovered;\n if (hovered) {\n this.actions.closeToRoot(hovered);\n this.hovered = null;\n }\n }\n scheduleActions() {\n if (this.actions.hasPending) {\n const item = {};\n item.actions = this.actions.clear();\n item.id = setTimeout(() => {\n this.actions.execute(item.actions);\n this.removeScheduled(item);\n }, this.delay);\n this.scheduled.push(item);\n }\n }\n scheduleDisableOpenOnOver() {\n const item = {\n actions: [{ name: 'openOnOver' }]\n };\n item.id = setTimeout(() => {\n this._openOnOver = false;\n this.removeScheduled(item);\n }, Math.max(this.delay, DISABLE_OPEN_ON_OVER_DELAY));\n this.scheduled.push(item);\n }\n removeScheduled(item) {\n const scheduled = this.scheduled;\n for (let idx = 0; idx < scheduled.length; idx++) {\n if (scheduled[idx] === item) {\n scheduled.splice(idx, 1);\n return;\n }\n }\n }\n cancelActions(predicate) {\n const scheduled = this.scheduled;\n for (let idx = scheduled.length - 1; idx >= 0; idx--) {\n const item = scheduled[idx];\n const actions = item.actions;\n if (predicate) {\n for (let actionIdx = actions.length - 1; actionIdx >= 0; actionIdx--) {\n if (predicate(actions[actionIdx])) {\n actions.splice(actionIdx, 1);\n }\n }\n }\n if (!predicate || actions.length === 0) {\n clearTimeout(item.id);\n scheduled.splice(idx, 1);\n }\n }\n }\n}\nHoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoverService, deps: [{ token: ActionsService }, { token: ItemsService }], target: i0.ɵɵFactoryTarget.Injectable });\nHoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoverService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoverService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: ActionsService }, { type: ItemsService }]; } });\n\n/**\n * @hidden\n */\nconst normalize = (settings) => settings && Object.assign({\n toggle: 'select'\n}, settings);\n\n/**\n * @hidden\n */\nconst NODE_INDEX = 'data-kendo-menu-index';\n\nconst DEFAULT_ID = 'kendo-matches-container';\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst matches = (element, selector) => (element.matches || element.msMatchesSelector).call(element, selector);\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClass = (element, name) => {\n return toClassList(element.className).indexOf(name) >= 0;\n};\n/**\n * @hidden\n */\nconst matchesClasses = (classes) => {\n const list = toClassList(classes);\n return (element) => {\n const classList = toClassList(element.className);\n return Boolean(list.find(name => classList.indexOf(name) >= 0));\n };\n};\n/**\n * @hidden\n */\nconst nodeIndex = (node) => node.getAttribute(NODE_INDEX);\n/**\n * @hidden\n */\nconst closestItem = (node, scope) => closestInScope(node, nodeIndex, scope);\n/**\n * @hidden\n */\nconst closestList = (node) => {\n let list = closest(node, matchesClasses('k-menu-popup k-menu k-menu-group'));\n if (list && hasClass(list, 'k-menu-popup')) {\n list = list.querySelector('.k-menu-group');\n }\n return list;\n};\n/**\n * @hidden\n */\nconst inMenu = (node, itemsService) => {\n if (node === itemsService.lists[0].element.nativeElement) {\n return false;\n }\n const list = closestList(node);\n return list && itemsService.containsList(list);\n};\n/**\n * @hidden\n */\nconst findInContainer = (element, selector, container) => {\n const id = container.getAttribute('id');\n if (!id) {\n container.setAttribute('id', DEFAULT_ID);\n }\n const contextSelector = `#${id || DEFAULT_ID} ${selector}`;\n const match = closestInScope(element, node => matches(node, contextSelector), container);\n if (!id) {\n container.removeAttribute('id');\n }\n return match;\n};\n\n/**\n * Represents a template for the Menu items ([see example]({% slug templates_menu %})). To define a template\n * for an item, nest an `` tag with the `kendoMenuItemTemplate` directive inside a ``\n * component. To define a template for all Menu items, nest the template inside the `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
    \n * My Template for: {{ item.text }} at index: {{ index }}\n *
    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nclass ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemTemplateDirective, selector: \"[kendoMenuItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template for the links of the Menu items ([see example]({% slug templates_menu %})). To define a template\n * for an item, nest an `` tag with the `kendoMenuItemLinkTemplate` directive inside a ``\n * component. To define a template for all Menu items, nest the template inside the `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * {{ item.text }}\n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nclass ItemLinkTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemLinkTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemLinkTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nItemLinkTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemLinkTemplateDirective, selector: \"[kendoMenuItemLinkTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemLinkTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemLinkTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template for the content of the Menu items ([see example]({% slug templates_menu %})). To define the template,\n * nest an `` tag with the `kendoMenuItemContentTemplate` directive inside a `` component.\n *\n * The available fields in the template context are:\n * - `item`—The item data.\n * - `index`—The item index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
    \n * My Content Template for: {{ item.text }} at index: {{ index }}\n *
    \n *
    \n *
    \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nclass ItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nItemContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemContentTemplateDirective, selector: \"[kendoMenuItemContentTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemContentTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemContentTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * A component that can be used to specify the Menu items\n * ([more information and examples]({% slug items_menu %})).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
    \n * My Content Template: {{ item.text }}\n *
    \n *
    \n * \n *
    \n * My Template: {{ item.text }}\n *
    \n *
    \n *
    \n * \n * \n * \n * {{ item.text }}\n * \n * \n * \n * \n *
    \n * `\n * })\n *\n * class AppComponent {\n * }\n * ```\n */\nclass MenuItemComponent {\n /**\n * @hidden\n */\n get template() {\n if (this.itemTemplate && this.itemTemplate.length) {\n return this.itemTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get linkTemplate() {\n if (this.itemLinkTemplate && this.itemLinkTemplate.length) {\n return this.itemLinkTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get contentTemplate() {\n if (this.itemContentTemplate && this.itemContentTemplate.length) {\n return this.itemContentTemplate.first.templateRef;\n }\n }\n /**\n * @hidden\n */\n get items() {\n if (this.children.length) {\n return this.children.toArray().filter(c => c !== this);\n }\n }\n}\nMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MenuItemComponent, selector: \"kendo-menu-item\", inputs: { text: \"text\", url: \"url\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\", icon: \"icon\", data: \"data\", separator: \"separator\" }, queries: [{ propertyName: \"itemTemplate\", predicate: ItemTemplateDirective }, { propertyName: \"itemLinkTemplate\", predicate: ItemLinkTemplateDirective }, { propertyName: \"itemContentTemplate\", predicate: ItemContentTemplateDirective }, { propertyName: \"children\", predicate: MenuItemComponent }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuItemComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-menu-item',\n template: ``\n }]\n }], propDecorators: { text: [{\n type: Input\n }], url: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], icon: [{\n type: Input\n }], data: [{\n type: Input\n }], separator: [{\n type: Input\n }], itemTemplate: [{\n type: ContentChildren,\n args: [ItemTemplateDirective]\n }], itemLinkTemplate: [{\n type: ContentChildren,\n args: [ItemLinkTemplateDirective]\n }], itemContentTemplate: [{\n type: ContentChildren,\n args: [ItemContentTemplateDirective]\n }], children: [{\n type: ContentChildren,\n args: [MenuItemComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass MenuBase {\n constructor() {\n /**\n * Specifies if the Menu will be vertical ([see example]({% slug vertical_menu %})).\n */\n this.vertical = false;\n /**\n * Specifies that the root items can be opened only on click\n * ([see example]({% slug openclose_menu %}#toc-opening-on-click)).\n */\n this.openOnClick = false;\n /**\n * Specifies the delay in milliseconds before the Menu items are opened or closed on item hover\n * or leave ([see example]({% slug openclose_menu %}#toc-delay-on-hover)). Used to avoid the accidental\n * opening or closing of the items.\n */\n this.hoverDelay = 100;\n /**\n * Sets the Menu animation.\n */\n this.animate = true;\n }\n /**\n * @hidden\n */\n get rootItems() {\n return this.items || (this.children ? this.children.toArray() : []);\n }\n}\nMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuBase, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMenuBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MenuBase, selector: \"kendo-menu-base\", inputs: { items: \"items\", vertical: \"vertical\", openOnClick: \"openOnClick\", hoverDelay: \"hoverDelay\", animate: \"animate\" }, queries: [{ propertyName: \"itemTemplate\", predicate: ItemTemplateDirective }, { propertyName: \"itemLinkTemplate\", predicate: ItemLinkTemplateDirective }, { propertyName: \"children\", predicate: MenuItemComponent }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-menu-base',\n template: ``\n }]\n }], propDecorators: { items: [{\n type: Input\n }], vertical: [{\n type: Input\n }], openOnClick: [{\n type: Input\n }], hoverDelay: [{\n type: Input\n }], animate: [{\n type: Input\n }], itemTemplate: [{\n type: ContentChildren,\n args: [ItemTemplateDirective]\n }], itemLinkTemplate: [{\n type: ContentChildren,\n args: [ItemLinkTemplateDirective]\n }], children: [{\n type: ContentChildren,\n args: [MenuItemComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass ContextMenuService {\n constructor() {\n this.keydown = new EventEmitter();\n }\n emit(name, args) {\n this.owner.emitMenuEvent(name, args);\n }\n hasObservers(name) {\n return this.owner && hasObservers(this.owner[name]);\n }\n leaveMenu(e) {\n return this.items ? !inMenu(e.target, this.items) : true;\n }\n}\nContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst defined = (value) => typeof value !== 'undefined';\n/**\n * @hidden\n */\nconst bodyFactory = () => {\n if (isDocumentAvailable()) {\n return new ElementRef(document.body);\n }\n};\n\nconst POPUP_ALIGN = {\n vertical: 'top',\n horizontal: 'left'\n};\nconst POPUP_ALIGN_RTL = {\n vertical: 'top',\n horizontal: 'right'\n};\nconst VERTICAL_COLLISION = {\n vertical: 'flip',\n horizontal: 'fit'\n};\nconst HORIZONTAL_COLLISION = {\n vertical: 'fit',\n horizontal: 'flip'\n};\n/**\n * @hidden\n */\nconst POPUP_SETTINGS_RTL = {\n vertical: {\n anchor: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n popup: POPUP_ALIGN_RTL,\n collision: VERTICAL_COLLISION,\n animate: 'down'\n },\n horizontal: {\n anchor: {\n vertical: 'top',\n horizontal: 'left'\n },\n popup: POPUP_ALIGN_RTL,\n collision: HORIZONTAL_COLLISION,\n animate: 'left'\n }\n};\n/**\n * @hidden\n */\nconst POPUP_SETTINGS = {\n vertical: {\n anchor: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n popup: POPUP_ALIGN,\n collision: VERTICAL_COLLISION,\n animate: 'down'\n },\n horizontal: {\n anchor: {\n vertical: 'top',\n horizontal: 'right'\n },\n popup: POPUP_ALIGN,\n collision: HORIZONTAL_COLLISION,\n animate: 'right'\n }\n};\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nclass ListComponent {\n constructor(itemsService, hover, actions, navigation, renderer, ngZone, element) {\n this.itemsService = itemsService;\n this.hover = hover;\n this.actions = actions;\n this.navigation = navigation;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.animate = true;\n }\n hierarchyIndex(index) {\n return this.itemsService.itemIndex(this.index, index);\n }\n ngOnInit() {\n this.itemsService.addList(this);\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.itemsService.removeList(this);\n if (this.domSubscriptions) {\n this.domSubscriptions();\n }\n }\n initDomEvents() {\n if (!isDocumentAvailable() || !this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const element = this.element.nativeElement;\n const container = this.level > 0 ? closest(element, (node) => hasClass(node, 'k-popup')) : element;\n const overSubscription = this.renderer.listen(element, 'mouseover', (e) => {\n if (e.target === element && this.level === 0) {\n this.onLeave();\n }\n else {\n const item = this.nodeItem(e.target) || this.itemsService.get(this.index);\n if (item && !(this.openOnClick && this.openOnClick.toggle === 'click' && item.level === 0 && !item.hasContent)) {\n this.hover.over(item);\n }\n }\n });\n const leaveSubscription = this.renderer.listen(container, 'mouseleave', (e) => {\n if (this.leavesMenu(e)) {\n this.onLeave();\n }\n });\n const keydownSubscription = this.renderer.listen(element, 'keydown', (e) => {\n if (hasClass(e.target, 'k-menu-item')) {\n this.navigation.keydown(e);\n }\n });\n const blurSubscription = this.renderer.listen(element, 'focusout', (e) => {\n if (this.leavesMenu(e)) {\n this.navigation.focusLeave();\n }\n });\n /**\n * Handle focus/blur open/close for iOS devices since it behaves inconsistently with the rest\n * Refer to: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n */\n const touchSubscription = this.renderer.listen(document, 'touchstart', (e) => {\n if (inMenu(e.target, this.itemsService)) {\n const item = this.nodeItem(e.target);\n // Needs to be called because the 'click' handler will be called only on secondary tap and the item will remain unfocused\n this.navigation.focus(item);\n // This is needed since the 'mouseover' event is not always dispatched\n if (!item.opened) {\n this.hover.over(item);\n }\n }\n else if (this.navigation.focusedIdx) {\n // If the touch is outside of the menu and the menu is not currently in focus\n const activeItem = this.itemsService.get(this.navigation.activeIndex);\n this.onLeave(); // needs to be called explicitly since mouseleave event is not triggered\n activeItem.blur(); // needs to be called explicitly otherwise the item remains focused => triggers focusout\n }\n });\n const clickSubscription = this.renderer.listen(element, 'click', this.clickHandler.bind(this));\n this.domSubscriptions = () => {\n overSubscription();\n leaveSubscription();\n keydownSubscription();\n blurSubscription();\n clickSubscription();\n touchSubscription();\n };\n });\n }\n leavesMenu(e) {\n if (!e.relatedTarget) {\n return true;\n }\n return !inMenu(e.relatedTarget, this.itemsService);\n }\n onLeave() {\n const openOnClick = this.openOnClick;\n if (!openOnClick || openOnClick.toggle !== 'click') {\n this.hover.leave(openOnClick && openOnClick.toggle === 'leave');\n }\n }\n nodeItem(target) {\n const node = closestItem(target, this.element.nativeElement);\n if (node) {\n const index = nodeIndex(node);\n return this.itemsService.get(index);\n }\n }\n clickHandler(e) {\n if (isFocusable(e.target) && !hasClass(e.target, 'k-menu-item')) {\n return;\n }\n const item = this.nodeItem(e.target);\n if (!item || item.isContent || item.navigating) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n this.actions.select(item, e, () => {\n e.preventDefault();\n });\n this.navigation.focus(item);\n if (item.level > 0 && !item.hasContent) {\n this.actions.closeToRoot(item);\n }\n if (this.openOnClick) {\n const hover = this.hover;\n if (item.opened) {\n if (item.level === 0) {\n hover.openOnOver = false;\n this.actions.close(item);\n }\n }\n else if (item.hasContent) {\n hover.openOnOver = true;\n this.actions.closeOthers(item);\n this.actions.open(item);\n }\n else {\n hover.openOnOver = false;\n if (item.level === 0 && this.openOnClick.toggle === 'click') {\n this.hover.closeCurrent();\n }\n }\n }\n this.actions.execute();\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: ItemsService }, { token: HoverService }, { token: ActionsService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"[kendoMenuList]\", inputs: { items: \"items\", level: \"level\", index: \"index\", animate: \"animate\", vertical: \"vertical\", rtl: \"rtl\", openOnClick: \"openOnClick\", itemTemplate: \"itemTemplate\", itemLinkTemplate: \"itemLinkTemplate\" }, ngImport: i0, template: \"\\n \\n
  • \\n
  • \\n  \\n
  • \\n
    \\n \", isInline: true, components: [{ type: i0.forwardRef(function () { return ItemComponent; }), selector: \"[kendoMenuItem]\", inputs: [\"item\", \"level\", \"index\", \"siblingIndex\", \"animate\", \"vertical\", \"rtl\", \"openOnClick\", \"itemTemplate\", \"itemLinkTemplate\"] }], directives: [{ type: i0.forwardRef(function () { return i5.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i0.forwardRef(function () { return i5.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i5.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i5.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoMenuList]',\n template: `\n \n
  • \n
  • \n  \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: ItemsService }, { type: HoverService }, { type: ActionsService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { items: [{\n type: Input\n }], level: [{\n type: Input\n }], index: [{\n type: Input\n }], animate: [{\n type: Input\n }], vertical: [{\n type: Input\n }], rtl: [{\n type: Input\n }], openOnClick: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], itemLinkTemplate: [{\n type: Input\n }] } });\n/**\n * @hidden\n */\nclass ItemComponent {\n constructor(itemsService, navigation, changeDetector, renderer, popupService, element) {\n this.itemsService = itemsService;\n this.navigation = navigation;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.popupService = popupService;\n this.element = element;\n this.animate = true;\n this.openOnClick = false;\n this.opened = false;\n this.navigating = false;\n this.destroyed = false;\n }\n set index(index) {\n if (this._index && this._index !== index) {\n this.itemsService.remove(this);\n this._index = index;\n this.itemsService.add(this);\n }\n else {\n this._index = index;\n }\n this.childId = this.itemsService.childId(index);\n }\n get index() {\n return this._index;\n }\n get disabled() {\n return this.item.disabled;\n }\n get hasPopup() {\n return this.hasContent ? true : null;\n }\n get expanded() {\n return this.hasContent ? this.opened : null;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n get activeId() {\n return this.index === this.navigation.activeIndex ? '0' : '-1';\n }\n get popupSettings() {\n const settings = this.rtl ? POPUP_SETTINGS_RTL : POPUP_SETTINGS;\n return this.horizontal ? settings.horizontal : settings.vertical;\n }\n get horizontal() {\n return this.vertical || this.level > 0;\n }\n get hasLink() {\n return Boolean(this.item.url);\n }\n get linkTemplate() {\n return this.item.linkTemplate || this.itemLinkTemplate;\n }\n get hasContent() {\n const items = this.item.items;\n return items && items.length || this.item.contentTemplate;\n }\n get isContent() {\n return Boolean(this.item.content);\n }\n get iconClass() {\n return `k-i-${this.item.icon}`;\n }\n get children() {\n const item = this.item;\n if (item.contentTemplate) {\n if (!this.contentItems) {\n this.contentItems = [{\n content: item.contentTemplate,\n owner: item,\n ownerIndex: this.index\n }];\n }\n return this.contentItems;\n }\n return item.items;\n }\n get template() {\n return this.item.template || this.itemTemplate;\n }\n hasContentTemplates() {\n const item = this.item;\n return this.itemTemplate || item.contentTemplate || this.itemLinkTemplate ||\n (item.items && item.items.find(current => current.template || current.linkTemplate));\n }\n ngOnInit() {\n this.itemsService.add(this);\n }\n ngOnDestroy() {\n this.itemsService.remove(this);\n this.destroyed = true;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n focus() {\n this.element.nativeElement.focus();\n }\n blur() {\n this.element.nativeElement.blur();\n }\n toggleActive(isActive) {\n if (isActive) {\n this.setAttribute('tabindex', '0');\n }\n else {\n this.setAttribute('tabindex', '-1');\n }\n }\n open() {\n if (!this.destroyed && this.hasContent && !this.opened) {\n const popupSettings = this.popupSettings;\n const animate = this.animate ? Object.assign({}, this.animate, {\n direction: popupSettings.animate\n }) : false;\n this.opened = true;\n this.popupRef = this.popupService.open({\n popupAlign: popupSettings.popup,\n anchorAlign: popupSettings.anchor,\n collision: popupSettings.collision,\n anchor: this.element,\n positionMode: 'absolute',\n content: this.popupTemplate,\n popupClass: {\n 'k-rtl': this.rtl,\n 'k-menu-popup': true\n },\n animate: animate\n });\n this.setAttribute('aria-expanded', 'true');\n this.setAttribute('aria-owns', this.childId);\n this.changeDetector.detectChanges();\n }\n }\n close() {\n if (!this.destroyed && this.opened) {\n this.opened = false;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n this.changeDetector.detectChanges();\n this.setAttribute('aria-expanded', 'false');\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-owns');\n }\n }\n navigate() {\n let link;\n if (this.linkTemplate) {\n link = this.element.nativeElement.querySelector('a.k-menu-link');\n }\n else if (this.hasLink) {\n link = this.link.nativeElement;\n }\n if (link) {\n this.navigating = true;\n link.click();\n this.navigating = false;\n }\n }\n setAttribute(name, value) {\n this.renderer.setAttribute(this.element.nativeElement, name, value);\n }\n}\nItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemComponent, deps: [{ token: ItemsService }, { token: NavigationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i6.PopupService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemComponent, selector: \"[kendoMenuItem]\", inputs: { item: \"item\", level: \"level\", index: \"index\", siblingIndex: \"siblingIndex\", animate: \"animate\", vertical: \"vertical\", rtl: \"rtl\", openOnClick: \"openOnClick\", itemTemplate: \"itemTemplate\", itemLinkTemplate: \"itemLinkTemplate\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabled\", \"attr.aria-haspopup\": \"this.hasPopup\", \"attr.aria-expanded\": \"this.expanded\", \"attr.aria-label\": \"this.label\", \"attr.tabindex\": \"this.activeId\" } }, providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }], viewQueries: [{ propertyName: \"link\", first: true, predicate: [\"link\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n\n
    \n \n \n
    \n\n \n
      \n
    \n
    \n\n \n \n \n {{ item.text }}\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"[kendoMenuList]\", inputs: [\"items\", \"level\", \"index\", \"animate\", \"vertical\", \"rtl\", \"openOnClick\", \"itemTemplate\", \"itemLinkTemplate\"] }], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i5.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemComponent, decorators: [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }],\n selector: '[kendoMenuItem]',\n template: `\n \n \n \n \n \n \n \n \n \n \n\n
    \n \n \n
    \n\n \n
      \n
    \n
    \n\n \n \n \n {{ item.text }}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ItemsService }, { type: NavigationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i6.PopupService }, { type: i0.ElementRef }]; }, propDecorators: { item: [{\n type: Input\n }], level: [{\n type: Input\n }], index: [{\n type: Input\n }], siblingIndex: [{\n type: Input\n }], animate: [{\n type: Input\n }], vertical: [{\n type: Input\n }], rtl: [{\n type: Input\n }], openOnClick: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], itemLinkTemplate: [{\n type: Input\n }], link: [{\n type: ViewChild,\n args: ['link', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], disabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], hasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], expanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], activeId: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }] } });\n\n/**\n * Represents the [Kendo UI Menu component for Angular]({% slug overview_menu %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: any[] = [{ text: 'item1', items: [{ text: 'item1.1' }] }, { text: 'item2', disabled: true }];\n * }\n * ```\n */\nclass MenuComponent extends MenuBase {\n constructor(itemsService, hover, actions, navigation, localization, ngZone, renderer, contextService) {\n super();\n this.itemsService = itemsService;\n this.hover = hover;\n this.actions = actions;\n this.navigation = navigation;\n this.localization = localization;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.contextService = contextService;\n /**\n * Fires when a Menu item is selected ([see example]({% slug routing_menu %})).\n */\n this.select = new EventEmitter();\n /**\n * Fires when a Menu item is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when a Menu item is closed.\n */\n this.close = new EventEmitter();\n validatePackage(packageMetadata);\n this.actions.owner = this;\n if (contextService) {\n contextService.items = this.itemsService;\n this.contextKeyDownSubscription = contextService.keydown.subscribe(this.contextKeyDown.bind(this));\n }\n }\n /**\n * @hidden\n */\n get ariaOrientation() {\n if (this.vertical) {\n return 'vertical';\n }\n }\n /**\n * @hidden\n */\n get contextMenuClass() {\n return Boolean(this.contextService);\n }\n get direction() {\n return this.rtl;\n }\n get rtl() {\n return this.localization.rtl;\n }\n /**\n * Opens or closes the specified Menu items.\n *\n * @param open - A Boolean value which indicates if the items will be opened or closed.\n * @param indices - One or more values which represent the hierarchical indices of the items that will be opened or closed.\n */\n toggle(open, ...indices) {\n for (let idx = 0; idx < indices.length; idx++) {\n const item = this.itemsService.get(indices[idx]);\n if (item && !item.disabled) {\n if (open) {\n item.open();\n }\n else {\n item.close();\n }\n }\n }\n }\n /**\n * @hidden\n */\n focus(index) {\n this.navigation.focusIndex(index);\n }\n ngOnChanges(changes) {\n this.navigation.vertical = this.vertical;\n this.hover.delay = this.hoverDelay;\n if (changes.openOnClick) {\n const openOnClick = this.openOnClick = normalize(this.openOnClick);\n this.hover.openOnOver = !openOnClick;\n if (openOnClick && openOnClick.toggle === 'click') {\n this.attachCloseClick();\n }\n else {\n this.unsubscribeClick();\n }\n }\n }\n ngAfterViewChecked() {\n this.navigation.updateActive();\n }\n ngOnDestroy() {\n this.unsubscribeClick();\n if (this.contextService) {\n this.contextService.items = null;\n this.contextKeyDownSubscription.unsubscribe();\n }\n }\n attachCloseClick() {\n if (!this.closeClickSubscription && isDocumentAvailable()) {\n this.ngZone.runOutsideAngular(() => {\n this.closeClickSubscription = this.renderer.listen('document', 'click', (e) => {\n if (!inMenu(e.target, this.itemsService)) {\n this.hover.openOnOver = false;\n this.actions.closeAll();\n this.actions.execute();\n }\n });\n });\n }\n }\n unsubscribeClick() {\n if (this.closeClickSubscription) {\n this.closeClickSubscription();\n }\n }\n contextKeyDown(e) {\n if (!this.itemsService.hasItems) {\n return;\n }\n const keyCode = e.keyCode;\n const rtl = this.localization.rtl;\n const first = keyCode === Keys.ArrowDown || keyCode === Keys.ArrowRight;\n const last = keyCode === Keys.ArrowUp || keyCode === Keys.ArrowLeft;\n let index;\n if ((first && !rtl) || (last && rtl)) {\n index = 'first';\n }\n else if ((first && rtl) || (last && !rtl)) {\n index = 'last';\n }\n if (index) {\n e.preventDefault();\n this.focus(index);\n }\n }\n}\nMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuComponent, deps: [{ token: ItemsService }, { token: HoverService }, { token: ActionsService }, { token: NavigationService }, { token: i3.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: ContextMenuService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MenuComponent, selector: \"kendo-menu\", inputs: { menuItemTemplate: \"menuItemTemplate\", menuItemLinkTemplate: \"menuItemLinkTemplate\" }, outputs: { select: \"select\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-rtl\": \"this.direction\" } }, providers: [\n ItemsService,\n ActionsService,\n NavigationService,\n HoverService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.menu'\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => MenuComponent)\n }\n ], exportAs: [\"kendoMenu\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n
      \n
    \n `, isInline: true, components: [{ type: ListComponent, selector: \"[kendoMenuList]\", inputs: [\"items\", \"level\", \"index\", \"animate\", \"vertical\", \"rtl\", \"openOnClick\", \"itemTemplate\", \"itemLinkTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMenu',\n providers: [\n ItemsService,\n ActionsService,\n NavigationService,\n HoverService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.menu'\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => MenuComponent)\n }\n ],\n selector: 'kendo-menu',\n template: `\n
      \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: ItemsService }, { type: HoverService }, { type: ActionsService }, { type: NavigationService }, { type: i3.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ContextMenuService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { menuItemTemplate: [{\n type: Input\n }], menuItemLinkTemplate: [{\n type: Input\n }], select: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['class.k-rtl']\n }] } });\n\n/**\n * Represents a directive that can be used in the [`linkTemplate`]({% slug api_menu_itemlinktemplatedirective %})\n * of the items to apply the default styling and behavior.\n */\nclass LinkDirective {\n constructor(itemsService) {\n this.itemsService = itemsService;\n this.hostClasses = true;\n this.role = 'presentation';\n this.tabindex = '-1';\n }\n get activeClass() {\n return this.item.opened;\n }\n ngOnInit() {\n if (isDevMode() && !this.index) {\n throw new Error('The kendoMenuItemLink directive requires the item index to be set.');\n }\n this.item = this.itemsService.get(this.index) || {};\n }\n}\nLinkDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinkDirective, deps: [{ token: ItemsService }], target: i0.ɵɵFactoryTarget.Directive });\nLinkDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LinkDirective, selector: \"[kendoMenuItemLink]\", inputs: { index: [\"kendoMenuItemLink\", \"index\"] }, host: { properties: { \"class.k-link\": \"this.hostClasses\", \"class.k-menu-link\": \"this.hostClasses\", \"attr.role\": \"this.role\", \"attr.tabindex\": \"this.tabindex\", \"class.k-state-active\": \"this.activeClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMenuItemLink]'\n }]\n }], ctorParameters: function () { return [{ type: ItemsService }]; }, propDecorators: { index: [{\n type: Input,\n args: ['kendoMenuItemLink']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-link']\n }, {\n type: HostBinding,\n args: ['class.k-menu-link']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], activeClass: [{\n type: HostBinding,\n args: ['class.k-state-active']\n }] } });\n\n/**\n * Represents a directive that can be used in the [`linkTemplate`]({% slug api_menu_itemlinktemplatedirective %})\n * of the items to render the default expand arrow.\n */\nclass ExpandArrowDirective {\n constructor(itemsService) {\n this.itemsService = itemsService;\n this.hostClasses = true;\n this.role = 'presentation';\n }\n get arrowDown() {\n return !this.item.horizontal;\n }\n get arrowRight() {\n return this.item.horizontal && !this.item.rtl;\n }\n get arrowLeft() {\n return this.item.horizontal && this.item.rtl;\n }\n ngOnInit() {\n if (isDevMode() && !this.index) {\n throw new Error('The kendoMenuExpandArrow directive requires the item index to be set.');\n }\n this.item = this.itemsService.get(this.index) || {};\n }\n}\nExpandArrowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandArrowDirective, deps: [{ token: ItemsService }], target: i0.ɵɵFactoryTarget.Directive });\nExpandArrowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandArrowDirective, selector: \"[kendoMenuExpandArrow]\", inputs: { index: [\"kendoMenuExpandArrow\", \"index\"] }, host: { properties: { \"class.k-icon\": \"this.hostClasses\", \"class.k-menu-expand-arrow\": \"this.hostClasses\", \"attr.role\": \"this.role\", \"class.k-i-arrow-60-down\": \"this.arrowDown\", \"class.k-i-arrow-60-right\": \"this.arrowRight\", \"class.k-i-arrow-60-left\": \"this.arrowLeft\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandArrowDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMenuExpandArrow]'\n }]\n }], ctorParameters: function () { return [{ type: ItemsService }]; }, propDecorators: { index: [{\n type: Input,\n args: ['kendoMenuExpandArrow']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-icon']\n }, {\n type: HostBinding,\n args: ['class.k-menu-expand-arrow']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], arrowDown: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-down']\n }], arrowRight: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-right']\n }], arrowLeft: [{\n type: HostBinding,\n args: ['class.k-i-arrow-60-left']\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `open` and `close` events of the Menu.\n */\nclass MenuEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `select` event of the Menu.\n */\nclass MenuSelectEvent extends MenuEvent {\n}\n\nconst ITEM_FIELDS = ['textField', 'urlField', 'iconField', 'disabledField', 'cssClassField', 'cssStyleField', 'separatorField'];\n/**\n * @hidden\n */\nclass BindingDirectiveBase {\n constructor(menu) {\n this.menu = menu;\n }\n ngOnChanges() {\n this.rebind();\n }\n /**\n * Rebinds the Menu items.\n */\n rebind() {\n const fields = this.fields = [];\n for (let idx = 0; idx < ITEM_FIELDS.length; idx++) {\n const inputName = ITEM_FIELDS[idx];\n const inputValue = this[inputName];\n if (inputValue) {\n fields.push({ target: inputName.replace('Field', ''), source: inputValue });\n }\n }\n this.menu.items = this.data ? this.mapItems(this.data) : [];\n }\n}\nBindingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BindingDirectiveBase, deps: [{ token: MenuBase }], target: i0.ɵɵFactoryTarget.Directive });\nBindingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BindingDirectiveBase, selector: \"kendoBindingBase\", usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BindingDirectiveBase, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendoBindingBase'\n }]\n }], ctorParameters: function () { return [{ type: MenuBase }]; } });\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\ngetterCache['undefined'] = (obj) => obj;\n/**\n * @hidden\n */\nconst getter = (field) => {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_match, index, indexAccessor, name) => {\n fields.push(index !== undefined ? index : (indexAccessor || name));\n });\n getterCache[field] = (obj) => {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n};\n/**\n * @hidden\n */\nconst last = (arr) => arr[arr.length - 1];\n\nconst getField = (field, level) => Array.isArray(field) ? field[level] || last(field) : field;\n/**\n * A directive that converts the provided hierarchical data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.\n */\nclass HierarchyBindingDirective extends BindingDirectiveBase {\n constructor(menu) {\n super(menu);\n }\n mapItems(items, level = 0) {\n return items.map((item) => {\n const menuItem = this.createItem(item, level);\n const children = this.getChildren(item, level);\n if (children) {\n menuItem.items = this.mapItems(children, level + 1);\n }\n return menuItem;\n });\n }\n createItem(item, level) {\n const result = { data: item };\n const fields = this.fields;\n for (let idx = 0; idx < fields.length; idx++) {\n const { target, source } = fields[idx];\n result[target] = getter(getField(source, level))(item);\n }\n return result;\n }\n getChildren(item, level) {\n if (this.childrenField) {\n const field = getField(this.childrenField, level);\n return item[field];\n }\n }\n}\nHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: MenuBase }], target: i0.ɵɵFactoryTarget.Directive });\nHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HierarchyBindingDirective, selector: \"[kendoMenuHierarchyBinding]\", inputs: { data: [\"kendoMenuHierarchyBinding\", \"data\"], textField: \"textField\", urlField: \"urlField\", iconField: \"iconField\", disabledField: \"disabledField\", cssClassField: \"cssClassField\", cssStyleField: \"cssStyleField\", separatorField: \"separatorField\", childrenField: \"childrenField\" }, exportAs: [\"kendoMenuHierarchyBinding\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoMenuHierarchyBinding',\n selector: '[kendoMenuHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: MenuBase }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"kendoMenuHierarchyBinding\"]\n }], textField: [{\n type: Input\n }], urlField: [{\n type: Input\n }], iconField: [{\n type: Input\n }], disabledField: [{\n type: Input\n }], cssClassField: [{\n type: Input\n }], cssStyleField: [{\n type: Input\n }], separatorField: [{\n type: Input\n }], childrenField: [{\n type: Input\n }] } });\n\n/**\n * A directive that converts the provided flat data to [MenuItems]({% slug api_menu_menuitem %}) and binds them to the Menu.\n */\nclass FlatBindingDirective extends BindingDirectiveBase {\n constructor(menu) {\n super(menu);\n }\n mapItems(items) {\n if (!this.idField || !this.parentIdField) {\n return items.map(item => this.createItem(item));\n }\n const result = [];\n const map = {};\n for (let idx = 0; idx < items.length; idx++) {\n const item = items[idx];\n const menuItem = this.createItem(item);\n const id = getter(this.idField)(item);\n const parentId = getter(this.parentIdField)(item);\n if (parentId === null || parentId === undefined) {\n result.push(menuItem);\n }\n else {\n const parent = map[parentId] = map[parentId] || {};\n parent.items = parent.items || [];\n parent.items.push(menuItem);\n }\n if (map[id]) {\n menuItem.items = map[id].items;\n }\n map[id] = menuItem;\n }\n return result;\n }\n createItem(dataItem) {\n const result = { data: dataItem };\n const fields = this.fields;\n for (let idx = 0; idx < fields.length; idx++) {\n const { source, target } = fields[idx];\n result[target] = getter(source)(dataItem);\n }\n return result;\n }\n}\nFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatBindingDirective, deps: [{ token: MenuBase }], target: i0.ɵɵFactoryTarget.Directive });\nFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatBindingDirective, selector: \"[kendoMenuFlatBinding]\", inputs: { data: [\"kendoMenuFlatBinding\", \"data\"], textField: \"textField\", urlField: \"urlField\", iconField: \"iconField\", disabledField: \"disabledField\", cssClassField: \"cssClassField\", cssStyleField: \"cssStyleField\", separatorField: \"separatorField\", idField: \"idField\", parentIdField: \"parentIdField\" }, exportAs: [\"kendoMenuFlatBinding\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoMenuFlatBinding',\n selector: '[kendoMenuFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: MenuBase }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"kendoMenuFlatBinding\"]\n }], textField: [{\n type: Input\n }], urlField: [{\n type: Input\n }], iconField: [{\n type: Input\n }], disabledField: [{\n type: Input\n }], cssClassField: [{\n type: Input\n }], cssStyleField: [{\n type: Input\n }], separatorField: [{\n type: Input\n }], idField: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }] } });\n\nconst COMPONENT_EXPORTS = [\n MenuComponent,\n MenuItemComponent,\n ItemTemplateDirective,\n ItemLinkTemplateDirective,\n ItemContentTemplateDirective,\n HierarchyBindingDirective,\n FlatBindingDirective,\n LinkDirective,\n ExpandArrowDirective\n];\nconst COMPONENT_DIRECTIVES$1 = [\n ...COMPONENT_EXPORTS,\n ListComponent,\n ItemComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Menu component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Menu module\n * import { MenuModule } from '@progress/kendo-angular-menu';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, MenuModule], // import Menu module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass MenuModule {\n}\nMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuModule, declarations: [MenuComponent,\n MenuItemComponent,\n ItemTemplateDirective,\n ItemLinkTemplateDirective,\n ItemContentTemplateDirective,\n HierarchyBindingDirective,\n FlatBindingDirective,\n LinkDirective,\n ExpandArrowDirective, ListComponent,\n ItemComponent], imports: [PopupModule, CommonModule], exports: [MenuComponent,\n MenuItemComponent,\n ItemTemplateDirective,\n ItemLinkTemplateDirective,\n ItemContentTemplateDirective,\n HierarchyBindingDirective,\n FlatBindingDirective,\n LinkDirective,\n ExpandArrowDirective] });\nMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuModule, imports: [[PopupModule, CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_EXPORTS],\n imports: [PopupModule, CommonModule]\n }]\n }] });\n\n/**\n * Arguments for the `open` and `close` events of the ContextMenu.\n */\nclass ContextMenuEvent {\n}\n\n/**\n * Arguments for the `select` event of the ContextMenu.\n */\nclass ContextMenuSelectEvent extends ContextMenuEvent {\n}\n\n/**\n * Arguments for the `popupOpen` and `popupClose` events of the ContextMenu.\n */\nclass ContextMenuPopupEvent extends PreventableEvent {\n}\n\n/**\n * Represents a template for the content of the ContextMenu. To define a template, nest an ``\n * tag with the `kendoContextMenuTemplate` directive inside a `` component\n * ([more information and examples]({% slug templates_contextmenu %})).\n *\n * {% meta height:200 %}\n * {% embed_file context-menu/template/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass ContextMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nContextMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nContextMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContextMenuTemplateDirective, selector: \"[kendoContextMenuTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ContextMenuItemsService {\n constructor(contextService) {\n this.contextService = contextService;\n }\n get(index) {\n if (this.contextService.items) {\n return this.contextService.items.get(index);\n }\n }\n}\nContextMenuItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuItemsService, deps: [{ token: ContextMenuService }], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuItemsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuItemsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: ContextMenuService }]; } });\n\n/**\n * @hidden\n */\nclass ContextMenuTargetService {\n constructor() {\n this.targets = [];\n }\n add(target) {\n this.targets.push(target);\n }\n remove(target) {\n const index = this.targets.indexOf(target);\n this.targets.splice(index, 1);\n }\n find(targetElement) {\n return this.targets.find(target => target.element === targetElement);\n }\n}\nContextMenuTargetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuTargetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Specifies a container for the [targets]({% slug api_menu_contextmenutargetdirective %}) of the ContextMenu.\n */\nclass ContextMenuTargetContainerDirective {\n /**\n * @hidden\n */\n constructor(elementRef, targetService) {\n this.targetService = targetService;\n if (elementRef) {\n this.element = elementRef.nativeElement;\n }\n }\n}\nContextMenuTargetContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetContainerDirective, deps: [{ token: i0.ElementRef }, { token: ContextMenuTargetService }], target: i0.ɵɵFactoryTarget.Directive });\nContextMenuTargetContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContextMenuTargetContainerDirective, selector: \"[kendoContextMenuTargetContainer]\", providers: [ContextMenuTargetService], exportAs: [\"kendoContextMenuTargetContainer\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTargetContainer]',\n exportAs: 'kendoContextMenuTargetContainer',\n providers: [ContextMenuTargetService]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ContextMenuTargetService }]; } });\n\n/**\n * @hidden\n */\nconst TARGET_CLASS = 'k-contextmenu-target';\n/**\n * Specifies a [target]({% slug api_menu_contextmenutargetdirective %}) for the ContextMenu\n * ([see example]({% slug target_contextmenu %}#toc-directives)).\n */\nclass ContextMenuTargetDirective {\n constructor(elementRef, targetService) {\n this.targetService = targetService;\n /**\n * @hidden\n */\n this.hostClass = true;\n if (elementRef) {\n this.element = elementRef.nativeElement;\n }\n targetService.add(this);\n }\n ngOnDestroy() {\n this.targetService.remove(this);\n }\n}\nContextMenuTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetDirective, deps: [{ token: i0.ElementRef }, { token: ContextMenuTargetService }], target: i0.ɵɵFactoryTarget.Directive });\nContextMenuTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContextMenuTargetDirective, selector: \"[kendoContextMenuTarget]\", inputs: { data: [\"kendoContextMenuTarget\", \"data\"] }, host: { properties: { \"class.k-contextmenu-target\": \"this.hostClass\" } }, exportAs: [\"kendoContextMenuTarget\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuTargetDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoContextMenuTarget]',\n exportAs: 'kendoContextMenuTarget'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ContextMenuTargetService }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoContextMenuTarget']\n }], hostClass: [{\n type: HostBinding,\n args: [`class.${TARGET_CLASS}`]\n }] } });\n\nconst CONTEXT_MENU = 'contextmenu';\nconst DEFAULT_ANCHOR_ALIGN = { horizontal: 'left', vertical: 'bottom' };\nconst DEFAULT_POPUP_ALIGN = { horizontal: 'left', vertical: 'top' };\nconst DEFAULT_COLLISION = { horizontal: 'fit', vertical: 'flip' };\nconst preventDefault = e => e.preventDefault();\n/**\n * Represents the [Kendo UI ContextMenu component for Angular]({% slug overview_contextmenu %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Right-click to open Context menu

    \n *
    \n * \n * `\n * })\n * class AppComponent {\n * public items: any[] = [{ text: 'item1', items: [{ text: 'item1.1' }] }, { text: 'item2', disabled: true }];\n * }\n * ```\n */\nclass ContextMenuComponent extends MenuBase {\n constructor(popupService, service, ngZone, renderer) {\n super();\n this.popupService = popupService;\n this.service = service;\n this.ngZone = ngZone;\n this.renderer = renderer;\n /**\n * Specifies the event on which the ContextMenu will open ([see example]({% slug showon_contextmenu %})).\n * Accepts the name of a native DOM event. Defaults to `contextmenu` which opens the ContextMenu for the target element.\n */\n this.showOn = CONTEXT_MENU;\n /**\n * Indicates that the ContextMenu will be aligned to the target or to the `filter` element (if specified).\n */\n this.alignToAnchor = false;\n /**\n * Specifies if the Menu will be vertically rendered ([see example]({% slug orientation_contextmenu %})).\n * @default true\n */\n this.vertical = true;\n /**\n * Fires when the Menu is opened ([see example]({% slug target_contextmenu %}#toc-changing-items-for-specified-targets)).\n */\n this.popupOpen = new EventEmitter();\n /**\n * Fires when the Menu is closed.\n */\n this.popupClose = new EventEmitter();\n /**\n * Fires when a Menu item is selected.\n */\n this.select = new EventEmitter();\n /**\n * Fires when a Menu item is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when a Menu item is closed.\n */\n this.close = new EventEmitter();\n this.service.owner = this;\n this.popupKeyDownHandler = this.popupKeyDownHandler.bind(this);\n }\n /**\n * Hides the ContextMenu.\n */\n hide() {\n this.removePopup();\n }\n /**\n * Shows the ContextMenu for the specified target.\n * @param target - The offset or the target element for which the ContextMenu will open.\n */\n show(target) {\n if (!target) {\n return;\n }\n const showTarget = target;\n this.removePopup();\n if (defined(showTarget.left) && defined(showTarget.top)) {\n this.createPopup({ offset: showTarget });\n }\n else {\n this.currentTarget = showTarget.nativeElement || showTarget;\n this.createPopup({ anchor: this.currentTarget });\n }\n }\n ngOnChanges(changes) {\n if (changes.target || changes.showOn) {\n this.bindShowHandler();\n }\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n const closeClickSubscription = this.renderer.listen('document', 'mousedown', (e) => {\n if (this.popupRef && !closest(e.target, node => node === this.popupRef.popupElement) && this.service.leaveMenu(e)) {\n this.closePopup(e);\n }\n });\n const closeBlurSubscription = this.renderer.listen('window', 'blur', (e) => {\n if (this.popupRef) {\n this.closePopup(e);\n }\n });\n this.closeSubscription = () => {\n closeClickSubscription();\n closeBlurSubscription();\n };\n });\n }\n ngOnDestroy() {\n if (this.closeSubscription) {\n this.closeSubscription();\n this.closeSubscription = null;\n }\n this.unbindShowHandler();\n this.removePopup();\n }\n /**\n * @hidden\n */\n emitMenuEvent(name, args) {\n args.target = this.currentTarget;\n args.sender = this;\n this[name].emit(args);\n if (name === 'select' && !args.hasContent) {\n this.closeAndFocus(args.originalEvent);\n }\n }\n bindShowHandler() {\n this.unbindShowHandler();\n this.ngZone.runOutsideAngular(() => {\n const element = this.targetElement();\n if (!element) {\n return;\n }\n const eventName = this.showOn || CONTEXT_MENU;\n this.showSubscription = this.renderer.listen(element, this.showOn || CONTEXT_MENU, (e) => {\n this.showContextMenu(e, element);\n });\n if (eventName === CONTEXT_MENU) {\n this.keydownSubscription = this.renderer.listen(element, 'keydown', (e) => {\n if (e.shiftKey && e.keyCode === Keys.F10) {\n this.showContextMenu(e, element);\n }\n });\n }\n });\n }\n showContextMenu(e, element) {\n const filter = this.targetFilter();\n let currentTarget = element;\n if (filter) {\n currentTarget = findInContainer(e.target, filter, element);\n if (currentTarget && currentTarget !== e.target && isFocusable(e.target)) {\n return;\n }\n if (currentTarget && this.directiveTarget) {\n currentTarget = this.target.targetService.find(currentTarget);\n }\n }\n if (!currentTarget) {\n this.closePopup(e);\n return;\n }\n this.ngZone.run(() => {\n if (!this.closePopup(e)) {\n this.currentTarget = currentTarget;\n this.openPopup(e);\n }\n });\n }\n unbindShowHandler() {\n if (this.showSubscription) {\n this.showSubscription();\n this.showSubscription = null;\n }\n if (this.keydownSubscription) {\n this.keydownSubscription();\n this.keydownSubscription = null;\n }\n }\n targetElement() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.directiveTarget = false;\n let target = this.target;\n if (typeof target === 'string') {\n target = document.querySelector(target); // maybe querySelectorAll?\n }\n else if (target && target.nativeElement) {\n target = target.nativeElement;\n }\n else if (target instanceof ContextMenuTargetContainerDirective) {\n target = target.element;\n this.directiveTarget = true;\n }\n return target;\n }\n targetFilter() {\n if (this.directiveTarget) {\n return `.${TARGET_CLASS}`;\n }\n return this.filter;\n }\n closePopup(e) {\n if (!this.popupRef) {\n return;\n }\n return this.popupAction('popupClose', e, () => {\n this.removePopup();\n });\n }\n removePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.currentTarget = null;\n }\n if (this.popupSubscriptions) {\n this.popupSubscriptions();\n this.popupSubscriptions = null;\n }\n }\n openPopup(e) {\n this.popupAction('popupOpen', e, () => {\n e.preventDefault();\n let anchor, offset;\n if (this.alignToAnchor || e.type === 'keydown') {\n anchor = this.currentTargetElement;\n }\n else {\n offset = { left: e.pageX, top: e.pageY };\n }\n this.createPopup({ anchor, offset });\n });\n }\n createPopup(options) {\n this.popupRef = this.popupService.open(Object.assign({\n animate: defined(this.popupAnimate) ? this.popupAnimate : true,\n appendTo: this.appendTo,\n collision: this.collision || DEFAULT_COLLISION,\n popupAlign: this.popupAlign || DEFAULT_POPUP_ALIGN,\n anchorAlign: this.anchorAlign || DEFAULT_ANCHOR_ALIGN,\n content: this.contentTemplate ? this.contentTemplate.templateRef : this.defaultContentTemplate,\n popupClass: 'k-menu-popup'\n }, options));\n const element = this.popupRef.popupElement;\n this.renderer.addClass(element, 'k-context-menu-popup');\n this.renderer.setAttribute(element, 'tabindex', '-1');\n this.renderer.setStyle(element, 'outline', '0'); //possibly move to styles\n if (this.ariaLabel) {\n this.renderer.setAttribute(element, 'aria-label', this.ariaLabel);\n }\n this.activeTarget = this.currentTargetElement === document.activeElement;\n this.ngZone.runOutsideAngular(() => {\n const unbindKeyDown = this.renderer.listen(element, 'keydown', this.popupKeyDownHandler);\n const unbindContextmenu = this.renderer.listen(element, 'contextmenu', preventDefault);\n this.popupSubscriptions = () => {\n unbindKeyDown();\n unbindContextmenu();\n };\n });\n element.focus();\n }\n closeAndFocus(e) {\n const currentTarget = this.currentTargetElement;\n if (!this.closePopup(e) && this.activeTarget) {\n currentTarget.focus();\n }\n }\n popupKeyDownHandler(e) {\n const element = this.popupRef.popupElement;\n if (e.keyCode === Keys.Escape && (hasClass(e.target, 'k-menu-item') || e.target === element)) {\n this.closeAndFocus(e);\n }\n else if (e.target === element) {\n this.service.keydown.emit(e);\n }\n }\n popupAction(name, originalEvent, callback) {\n const emitter = this[name];\n let prevented = false;\n if (hasObservers(emitter)) {\n this.ngZone.run(() => {\n const args = new ContextMenuPopupEvent({\n originalEvent: originalEvent,\n sender: this,\n target: this.currentTarget\n });\n emitter.emit(args);\n if (!args.isDefaultPrevented()) {\n callback();\n }\n prevented = args.isDefaultPrevented();\n });\n }\n else {\n callback();\n }\n return prevented;\n }\n get currentTargetElement() {\n return this.directiveTarget && this.currentTarget ? this.currentTarget.element : this.currentTarget;\n }\n}\nContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i6.PopupService }, { token: ContextMenuService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContextMenuComponent, selector: \"kendo-contextmenu\", inputs: { showOn: \"showOn\", target: \"target\", filter: \"filter\", alignToAnchor: \"alignToAnchor\", vertical: \"vertical\", popupAnimate: \"popupAnimate\", popupAlign: \"popupAlign\", anchorAlign: \"anchorAlign\", collision: \"collision\", appendTo: \"appendTo\", ariaLabel: \"ariaLabel\" }, outputs: { popupOpen: \"popupOpen\", popupClose: \"popupClose\", select: \"select\", open: \"open\", close: \"close\" }, providers: [\n ContextMenuService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.contextmenu'\n },\n {\n provide: ItemsService,\n useClass: ContextMenuItemsService\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => ContextMenuComponent)\n },\n PopupService,\n {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }\n ], queries: [{ propertyName: \"contentTemplate\", first: true, predicate: ContextMenuTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"defaultContentTemplate\", first: true, predicate: [\"default\"], descendants: true }], exportAs: [\"kendoContextMenu\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: MenuComponent, selector: \"kendo-menu\", inputs: [\"menuItemTemplate\", \"menuItemLinkTemplate\"], outputs: [\"select\", \"open\", \"close\"], exportAs: [\"kendoMenu\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoContextMenu',\n providers: [\n ContextMenuService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.contextmenu'\n },\n {\n provide: ItemsService,\n useClass: ContextMenuItemsService\n },\n {\n provide: MenuBase,\n useExisting: forwardRef(() => ContextMenuComponent)\n },\n PopupService,\n {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }\n ],\n selector: 'kendo-contextmenu',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i6.PopupService }, { type: ContextMenuService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { showOn: [{\n type: Input\n }], target: [{\n type: Input\n }], filter: [{\n type: Input\n }], alignToAnchor: [{\n type: Input\n }], vertical: [{\n type: Input\n }], popupAnimate: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], popupOpen: [{\n type: Output\n }], popupClose: [{\n type: Output\n }], select: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], contentTemplate: [{\n type: ContentChild,\n args: [ContextMenuTemplateDirective, { static: false }]\n }], defaultContentTemplate: [{\n type: ViewChild,\n args: ['default', { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n ContextMenuComponent,\n ContextMenuTemplateDirective,\n ContextMenuTargetDirective,\n ContextMenuTargetContainerDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ContextMenu component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ContextMenu module\n * import { ContextMenuModule } from '@progress/kendo-angular-menu';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, ContextMenuModule], // import ContextMenuModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ContextMenuModule {\n}\nContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenuComponent,\n ContextMenuTemplateDirective,\n ContextMenuTargetDirective,\n ContextMenuTargetContainerDirective], imports: [PopupModule, CommonModule, MenuModule], exports: [ContextMenuComponent,\n ContextMenuTemplateDirective,\n ContextMenuTargetDirective,\n ContextMenuTargetContainerDirective, MenuModule] });\nContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuModule, imports: [[PopupModule, CommonModule, MenuModule], MenuModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextMenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES, MenuModule],\n imports: [PopupModule, CommonModule, MenuModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Menu and ContextMenu components and directives.\n * Imports the MenusModule into your application [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * or any other sub-module that will use the Menu and ContextMenu components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { MenusModule } from '@progress/kendo-angular-menu';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, BrowserAnimationsModule, MenusModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass MenusModule {\n}\nMenusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMenusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenusModule, exports: [MenuModule, ContextMenuModule] });\nMenusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenusModule, imports: [MenuModule, ContextMenuModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenusModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [MenuModule, ContextMenuModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ContextMenuComponent, ContextMenuEvent, ContextMenuModule, ContextMenuPopupEvent, ContextMenuSelectEvent, ContextMenuService, ContextMenuTargetContainerDirective, ContextMenuTargetDirective, ContextMenuTemplateDirective, ExpandArrowDirective, FlatBindingDirective, HierarchyBindingDirective, ItemComponent, ItemContentTemplateDirective, ItemLinkTemplateDirective, ItemTemplateDirective, LinkDirective, ListComponent, MenuComponent, MenuEvent, MenuItemComponent, MenuModule, MenuSelectEvent, MenusModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { forwardRef, Directive, Input, EventEmitter, ViewContainerRef, Component, ViewChild, HostBinding, TemplateRef, InjectionToken, ApplicationRef, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass NotificationSettings {\n constructor() {\n /**\n * Specifies the time in milliseconds after which the\n * Notification will hide\n * ([see example]({% slug hiding_notifications %}#toc-definig-a-delay-before-hiding)).\n * Defaults to `5000`.\n */\n this.hideAfter = 5000;\n /**\n * Defines the position of the Notification\n * ([see example]({% slug positioning_notification %})).\n *\n * The possible values are:\n * * `horizontal: 'left'|'center'|'right'`\n * * `vertical: 'top'|'bottom'`\n */\n this.position = { horizontal: 'right', vertical: 'top' };\n /**\n * Specifies the animation settings of the Notification\n * ([see example]({% slug animations_notification %})).\n *\n * The possible values are:\n * * `duration`—Accepts a number in milliseconds. Defaults to `500ms`.\n * * `type?: 'slide'| (Default) 'fade'`\n */\n this.animation = { type: 'fade', duration: 500 };\n /**\n * Specifies if the Notification will require a user action to hide.\n * If the property is set to `true`, the Notification renders a **Close** button\n * ([see example]({% slug hiding_notifications %}#toc-defining-a-closable-notification)).\n *\n * The possible values are:\n * * (Default) `false`\n * * `true`\n */\n this.closable = false;\n /**\n * Specifies the type of the Notification\n * ([see example]({% slug types_notification %})).\n *\n * The possible values are:\n * * `style: (Default) 'none'|'success'|'error'|'warning'|'info'`\n * * `icon: 'true'|'false'`\n */\n this.type = { style: 'none', icon: true };\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-notification',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441322,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nfunction slideAnimation(height, duration) {\n return [\n style({ overflow: 'hidden', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction slideCloseAnimation(height, duration) {\n return [\n style({ height: `${height}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeAnimation(duration) {\n return [\n style({ opacity: 0 }),\n animate(`${duration}ms ease-in`, style({ opacity: 1 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeCloseAnimation(duration) {\n return [\n style({ opacity: 1 }),\n animate(`${duration}ms ease-in`, style({ opacity: 0 }))\n ];\n}\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoNotificationLocalizedMessages]\", inputs: { closeTitle: \"closeTitle\" }, providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `[kendoNotificationLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { closeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n */\nclass NotificationComponent {\n constructor(cdr, element, renderer, builder, localizationService) {\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.builder = builder;\n this.localizationService = localizationService;\n this.close = new EventEmitter();\n this.width = null;\n this.height = null;\n this.defaultHideAfter = 5000;\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get containerClass() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n notificationClasses() {\n return `${this.type ? this.typeClass() : ''}\n ${this.closable ? 'k-notification-closable' : ''}`;\n }\n ngOnInit() {\n clearTimeout(this.hideTimeout);\n }\n ngOnDestroy() {\n clearTimeout(this.hideTimeout);\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (!this.closable && !this.animation) {\n this.setHideTimeout();\n }\n if (!this.closable && this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => this.setHideTimeout());\n }\n if (this.animation) {\n this.animate(this.animation);\n }\n }\n typeClass() {\n return {\n 'none': '',\n 'success': 'k-notification-success',\n 'warning': 'k-notification-warning',\n 'error': 'k-notification-error',\n 'info': 'k-notification-info'\n }[this.type.style];\n }\n typeIconClass() {\n return {\n 'none': '',\n 'success': 'k-i-success',\n 'warning': 'k-i-warning',\n 'error': 'k-i-error',\n 'info': 'k-i-info'\n }[this.type.style];\n }\n onCloseClick() {\n clearTimeout(this.hideTimeout);\n this.hide();\n }\n hide(customComponent) {\n const elementHeight = getComputedStyle(this.element.nativeElement).height;\n if (this.animation && elementHeight) {\n this.animate(this.animation, true);\n this.animationEnd.subscribe(() => {\n this.emitClose(customComponent);\n });\n return;\n }\n this.emitClose(customComponent);\n }\n setHideTimeout() {\n const hideAfter = this.hideAfter || this.defaultHideAfter;\n this.hideTimeout = window.setTimeout(() => this.onCloseClick(), hideAfter);\n }\n emitClose(customComponent) {\n if (customComponent) {\n customComponent.destroy();\n }\n this.close.emit();\n }\n play(animation, animatedElement) {\n const factory = this.builder.build(animation);\n const element = this.element.nativeElement;\n this.renderer.addClass(element, 'k-notification-container-animating');\n let player = factory.create(animatedElement);\n player.onDone(() => {\n this.renderer.removeClass(element, 'k-notification-container-animating');\n this.animationEnd.emit();\n if (player) {\n player.destroy();\n player = null;\n }\n });\n player.play();\n }\n animate(animation, onclose) {\n const element = this.element.nativeElement;\n const duration = animation.duration;\n const height = element.offsetHeight;\n const generatedAnimation = animation.type === 'slide' ?\n this.slideAnimation(height, duration, onclose) :\n this.fadeAnimation(duration, onclose);\n this.play(generatedAnimation, element);\n }\n slideAnimation(height, duration, onclose) {\n return onclose ? slideCloseAnimation(height, duration) : slideAnimation(height, duration);\n }\n fadeAnimation(duration, onclose) {\n return onclose ? fadeCloseAnimation(duration) : fadeAnimation(duration);\n }\n}\nNotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.AnimationBuilder }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotificationComponent, selector: \"kendo-notification\", inputs: { templateRef: \"templateRef\", templateString: \"templateString\", width: \"width\", height: \"height\", cssClass: \"cssClass\", hideAfter: \"hideAfter\", closable: \"closable\", type: \"type\", animation: \"animation\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-notification-container\": \"this.containerClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `\n \n \n
    \n
    \n \n\n
    \n \n \n \n {{ templateString }}\n \n \n
    \n\n \n
    \n
    \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoNotificationLocalizedMessages]\", inputs: [\"closeTitle\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-notification',\n template: `\n \n \n
    \n
    \n \n\n
    \n \n \n \n {{ templateString }}\n \n \n
    \n\n \n
    \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.AnimationBuilder }, { type: i1.LocalizationService }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], hideAfter: [{\n type: Input\n }], closable: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], containerClass: [{\n type: HostBinding,\n args: ['class.k-notification-container']\n }] } });\n\n/**\n * @hidden\n */\nclass NotificationContainerComponent {\n constructor(element, renderer, resolver) {\n this.element = element;\n this.renderer = renderer;\n this.resolver = resolver;\n this.id = '';\n this.notifications = [];\n }\n ngOnDestroy() {\n this.notifications.forEach((notification) => {\n if (notification.closeClickSubscription) {\n notification.closeClickSubscription.unsubscribe();\n }\n });\n this.notifications = [];\n }\n addNotification(settings) {\n this.position = settings.position;\n this.id = `${this.position.horizontal} ${this.position.vertical}`;\n const factory = this.resolver.resolveComponentFactory(NotificationComponent);\n const notificationRef = this.container.createComponent(factory);\n this.applySettings(notificationRef, settings);\n let customComponent = null;\n if (typeof settings.content === 'function') {\n const customFactory = this.resolver.resolveComponentFactory(settings.content);\n customComponent = notificationRef.instance.container.createComponent(customFactory);\n }\n notificationRef.changeDetectorRef.detectChanges();\n this.notifications.push(notificationRef.instance);\n if (settings.appendTo) {\n this.applyAbsolutePosition(settings.appendTo);\n }\n this.applyPosition();\n this.applyContainerWrap();\n return {\n afterHide: notificationRef.instance.close,\n hide: () => notificationRef.instance.hide(customComponent),\n notification: notificationRef,\n content: customComponent || null\n };\n }\n hide(notificationRef) {\n const instance = notificationRef.instance;\n const index = this.notifications.indexOf(instance);\n this.notifications.splice(index, 1);\n if (instance.closeClickSubscription) {\n instance.closeClickSubscription.unsubscribe();\n }\n instance.templateRef = null;\n instance.templateString = null;\n notificationRef.destroy();\n }\n applyContainerWrap() {\n const value = this.position.horizontal === 'right' ? 'wrap-reverse' : 'wrap';\n this.renderer.setStyle(this.group.nativeElement, 'flex-wrap', value);\n }\n applySettings(notificationRef, settings) {\n const notification = notificationRef.instance;\n const content = settings.content;\n const animation = settings.animation || null;\n notification.closeClickSubscription = notification.close\n .subscribe(() => this.hide(notificationRef));\n if (typeof content === 'string') {\n notification.templateString = content;\n }\n if (content instanceof TemplateRef) {\n notification.templateRef = content;\n }\n notification.animation = animation;\n let type = settings.type;\n if (type && type.style === undefined) {\n type.style = 'none';\n }\n if (type && type.icon === undefined) {\n type.icon = true;\n }\n notification.type = type;\n notification.closeTitle = settings.closeTitle;\n if (settings.cssClass) {\n notification.cssClass = settings.cssClass;\n }\n notification.closable = settings.closable;\n notification.hideAfter = settings.hideAfter;\n notification.width = settings.width;\n notification.height = settings.height;\n }\n applyAbsolutePosition(appendToContainer) {\n const appendTo = appendToContainer.element.nativeElement;\n const el = this.element.nativeElement.children[0];\n if (window.getComputedStyle(appendTo).position === 'static') {\n this.renderer.setStyle(appendTo, 'position', 'relative');\n }\n this.renderer.setStyle(el, 'position', 'absolute');\n }\n applyPosition() {\n const element = this.element.nativeElement.children[0];\n const elementHalfWidth = element.getBoundingClientRect().width / 2;\n const positionStyles = this.setContainerPosition(this.position, elementHalfWidth);\n Object.keys(positionStyles).forEach((cssStyle) => {\n element.style[cssStyle] = positionStyles[cssStyle];\n });\n }\n setContainerPosition(position, offsetMargin) {\n const positionLayout = {\n horizontal: {\n left: { left: 0, alignItems: 'flex-start' },\n right: { right: 0, alignItems: 'flex-start' },\n center: { left: '50%', marginLeft: `${-offsetMargin}px`, alignItems: 'center' }\n },\n vertical: {\n top: { top: 0 },\n bottom: { bottom: 0 }\n }\n };\n const horizontal = positionLayout.horizontal[position.horizontal];\n const vertical = positionLayout.vertical[position.vertical];\n return Object.assign({}, horizontal, vertical);\n }\n}\nNotificationContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationContainerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });\nNotificationContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotificationContainerComponent, selector: \"kendo-notification-container\", inputs: { id: \"id\" }, viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"group\", first: true, predicate: [\"group\"], descendants: true, static: true }], ngImport: i0, template: `\n
    \n \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-notification-container',\n template: `\n
    \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], group: [{\n type: ViewChild,\n args: ['group', { static: true }]\n }], id: [{\n type: Input\n }] } });\n\n/**\n * Used to inject the Notification container. If not provided, the first root component of\n * the application is used.\n *\n * > The `NOTIFICATION_CONTAINER` can be used only with the [`NotificationService`]({% slug api_notification_notificationservice %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule, NOTIFICATION_CONTAINER } from '@progress/kendo-angular-notification';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NotificationModule], // import Notification module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: NOTIFICATION_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the notification will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst NOTIFICATION_CONTAINER = new InjectionToken('Notification Container');\n/**\n * A service for opening Notification components dynamically\n * ([see example]({% slug overview_notification %})).\n *\n * @export\n * @class NotificationService\n */\nclass NotificationService {\n /**\n * @hidden\n */\n constructor(resolver, injector, container) {\n this.resolver = resolver;\n this.injector = injector;\n this.container = container;\n this.notificationContainers = [];\n this.position = { horizontal: 'right', vertical: 'top' };\n }\n /**\n * Opens a Notification component. Created Notification are mounted\n * in the DOM directly in the root application component.\n *\n * @param {NotificationSettings} settings - The settings which define the Notification.\n *\n * @returns {NotificationRef} - A reference to the Notification object and the convenience properties.\n */\n show(settings) {\n if (!settings) {\n throw new Error('NotificationSettings settings are required');\n }\n let target = this.findGroupContainer(settings);\n const position = settings.position || this.position;\n const currentId = `${position.horizontal} ${position.vertical}`;\n let container;\n let notificationRef;\n let notificationContainer = this.notificationContainers.find(c => target.nativeElement.contains(c.element.nativeElement) && c.id === currentId);\n if (!notificationContainer) {\n container = this.resolver\n .resolveComponentFactory(NotificationContainerComponent)\n .create(this.injector);\n notificationContainer = container.instance;\n this.appRef.attachView(container.hostView);\n const hostViewElement = container.location.nativeElement;\n let groupContainer = this.findGroupContainer(settings);\n if (!groupContainer) {\n throw new Error(`\n View Container not found! Inject the NOTIFICATION_CONTAINER or define a specific ViewContainerRef via\n the appendTo option. See http://www.telerik.com/kendo-angular-ui/components/notification/api/NOTIFICATION_CONTAINER/\n for more details.\n `);\n }\n groupContainer.nativeElement.appendChild(hostViewElement);\n this.notificationContainers.push(notificationContainer);\n }\n settings.position = position;\n notificationRef = notificationContainer.addNotification(settings);\n return notificationRef;\n }\n get appRef() {\n if (!this.applicationRef) {\n this.applicationRef = this.injector.get(ApplicationRef);\n }\n return this.applicationRef;\n }\n findGroupContainer(settings) {\n let container;\n if (settings.appendTo) {\n container = settings.appendTo.element;\n }\n else if (this.container) {\n container = this.container;\n }\n else {\n const appRoot = this.appRef.components && this.appRef.components[0];\n container = appRoot ? appRoot.location : null;\n }\n return container;\n }\n}\nNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: NOTIFICATION_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [NOTIFICATION_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Notification component.\n *\n * The package exports:\n * - `NotificationService`—The Notification service class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule } from '@progress/kendo-angular-notification';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NotificationModule], // import NotificationModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass NotificationModule {\n}\nNotificationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNotificationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, declarations: [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective], imports: [CommonModule], exports: [NotificationComponent, NotificationContainerComponent] });\nNotificationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, providers: [NotificationService], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective],\n entryComponents: [NotificationComponent, NotificationContainerComponent],\n imports: [CommonModule],\n exports: [NotificationComponent, NotificationContainerComponent],\n providers: [NotificationService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NOTIFICATION_CONTAINER, NotificationComponent, NotificationContainerComponent, NotificationModule, NotificationService, NotificationSettings };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Optional, Component, Input, ContentChild, NgModule } from '@angular/core';\nimport { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-pdf-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441084,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nclass PDFExportTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPDFExportTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPDFExportTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportTemplateDirective, selector: \"[kendoPDFTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPDFTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst FIELDS = ['bottom', 'left', 'right', 'top'];\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n */\nclass PDFExportMarginComponent {\n /**\n * @hidden\n */\n get options() {\n const options = {};\n for (let idx = 0; idx < FIELDS.length; idx++) {\n const field = FIELDS[idx];\n const value = this[field];\n if (typeof value !== 'undefined') {\n options[field] = value;\n }\n }\n return options;\n }\n}\nPDFExportMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportMarginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPDFExportMarginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportMarginComponent, selector: \"kendo-pdf-export-margin\", inputs: { left: \"left\", top: \"top\", right: \"right\", bottom: \"bottom\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportMarginComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export-margin',\n template: ``\n }]\n }], propDecorators: { left: [{\n type: Input\n }], top: [{\n type: Input\n }], right: [{\n type: Input\n }], bottom: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst compileTemplate = (templateRef) => {\n const context = {};\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = (data) => {\n Object.assign(context, data);\n embeddedView.detectChanges();\n const templateWrap = document.createElement('span');\n embeddedView.rootNodes.forEach((rootNode) => {\n templateWrap.appendChild(rootNode.cloneNode(true));\n });\n return templateWrap;\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\n\n/**\n * Represents the [Kendo UI PDF Export component for Angular]({% slug overview_pdfexport %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n *\n * \n * Content goes here\n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nclass PDFExportComponent {\n constructor(element) {\n this.element = element;\n /**\n * The creator of the PDF document.\n * @default \"Kendo UI PDF Generator\"\n */\n this.creator = 'Kendo UI PDF Generator';\n /**\n * Specifies the name of the exported PDF file.\n * @default \"Export.pdf\"\n */\n this.fileName = 'export.pdf';\n validatePackage(packageMetadata);\n }\n get drawMargin() {\n const marginComponent = this.marginComponent;\n let margin = this.margin;\n if (marginComponent) {\n margin = Object.assign(margin || {}, marginComponent.options);\n }\n return margin;\n }\n /**\n * Saves the content as a PDF file with the specified name.\n * @param fileName - The name of the exported file.\n */\n saveAs(fileName = this.fileName) {\n this.save(this.element.nativeElement, fileName);\n }\n /**\n * Exports the content as a `Group` for further processing.\n *\n * @return - The root group of the exported scene.\n */\n export() {\n return this.exportElement(this.element.nativeElement);\n }\n save(element, fileName) {\n this.exportElement(element)\n .then(group => this.exportGroup(group, this.pdfOptions()))\n .then(dataUri => this.saveDataUri(dataUri, fileName, this.saveOptions()));\n }\n exportElement(element) {\n const promise = this.drawElement(element, this.drawOptions());\n const cleanup = this.cleanup.bind(this);\n promise.then(cleanup, cleanup);\n return promise;\n }\n cleanup() {\n if (this.pageTemplate) {\n this.pageTemplate.destroy();\n delete this.pageTemplate;\n }\n }\n drawOptions() {\n if (this.pageTemplateDirective) {\n this.pageTemplate = compileTemplate(this.pageTemplateDirective.templateRef);\n }\n return {\n avoidLinks: this.avoidLinks,\n forcePageBreak: this.forcePageBreak,\n keepTogether: this.keepTogether,\n margin: this.drawMargin,\n paperSize: this.paperSize,\n landscape: this.landscape,\n repeatHeaders: this.repeatHeaders,\n scale: this.scale,\n template: this.pageTemplate\n };\n }\n pdfOptions() {\n return {\n autoPrint: this.autoPrint,\n author: this.author,\n creator: this.creator,\n date: this.date,\n imgDPI: this.imageResolution,\n keywords: this.keywords,\n landscape: this.landscape,\n margin: this.drawMargin,\n multiPage: true,\n paperSize: this.paperSize,\n producer: this.producer,\n subject: this.subject,\n title: this.title\n };\n }\n saveOptions() {\n return {\n forceProxy: this.forceProxy,\n proxyData: this.proxyData,\n proxyTarget: this.proxyTarget,\n proxyURL: this.proxyURL\n };\n }\n drawElement(element, options) {\n return drawDOM(element, options);\n }\n exportGroup(group, options) {\n return exportPDF(group, options);\n }\n saveDataUri(dataUri, fileName, options) {\n saveAs(dataUri, fileName, options);\n }\n}\nPDFExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPDFExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportComponent, selector: \"kendo-pdf-export\", inputs: { autoPrint: \"autoPrint\", author: \"author\", avoidLinks: \"avoidLinks\", forcePageBreak: \"forcePageBreak\", keepTogether: \"keepTogether\", creator: \"creator\", date: \"date\", imageResolution: \"imageResolution\", fileName: \"fileName\", forceProxy: \"forceProxy\", keywords: \"keywords\", landscape: \"landscape\", margin: \"margin\", paperSize: \"paperSize\", repeatHeaders: \"repeatHeaders\", scale: \"scale\", proxyData: \"proxyData\", proxyURL: \"proxyURL\", proxyTarget: \"proxyTarget\", producer: \"producer\", subject: \"subject\", title: \"title\" }, queries: [{ propertyName: \"pageTemplateDirective\", first: true, predicate: PDFExportTemplateDirective, descendants: true }, { propertyName: \"marginComponent\", first: true, predicate: PDFExportMarginComponent, descendants: true }], ngImport: i0, template: `
    `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export',\n template: `
    `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { autoPrint: [{\n type: Input\n }], author: [{\n type: Input\n }], avoidLinks: [{\n type: Input\n }], forcePageBreak: [{\n type: Input\n }], keepTogether: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], imageResolution: [{\n type: Input\n }], fileName: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], keywords: [{\n type: Input\n }], landscape: [{\n type: Input\n }], margin: [{\n type: Input\n }], paperSize: [{\n type: Input\n }], repeatHeaders: [{\n type: Input\n }], scale: [{\n type: Input\n }], proxyData: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], proxyTarget: [{\n type: Input\n }], producer: [{\n type: Input\n }], subject: [{\n type: Input\n }], title: [{\n type: Input\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFExportTemplateDirective, { static: false }]\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFExportMarginComponent, { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the PDF Export directive.\n */\nclass PDFExportModule {\n}\nPDFExportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPDFExportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, declarations: [PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective], exports: [PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective] });\nPDFExportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PDFExportComponent, PDFExportMarginComponent, PDFExportModule, PDFExportTemplateDirective, compileTemplate };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, Optional, EventEmitter, isDevMode, Component, Input, Output, ViewChild, TemplateRef, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport * as i7 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i8 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nconst replaceOffset = (rect, offset) => {\n if (!offset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst isDifferentOffset = (oldOffset, newOffset) => {\n const { left: oldLeft, top: oldTop } = oldOffset;\n const { left: newLeft, top: newTop } = newOffset;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst hasBoundingRect = (elem) => !!elem.getBoundingClientRect;\n/**\n * @hidden\n */\nconst OVERFLOW_REGEXP = /auto|scroll/;\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n/**\n * @hidden\n */\nconst scrollableParents = (element) => {\n const parentElements = [];\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n let parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nconst FRAME_DURATION = 1000 / 60; //1000ms divided by 60fps\nfunction memoize(fun) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fun(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!isDocumentAvailable() && document.body !== null) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * @hidden\n */\nconst zIndex = (anchor, container) => {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n const sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\n/**\n * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale).\n *\n * The document or container scale is required to compute the popup position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. See [Support for Document Scale]({% slug documentscale_popup %}).\n *\n * > Using this token is not necessary for user-applied browser zoom.\n *\n * {% meta height:300 %}\n * {% embed_file scale/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n *\n *\n */\nconst SCALE = new InjectionToken('Popup Document Scale');\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n/**\n * @hidden\n */\nclass DOMService {\n addOffset(current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n }\n addScroll(rect, scroll) {\n return addScroll(rect, scroll);\n }\n align(settings) {\n return align(settings);\n }\n boundingOffset(el) {\n return boundingOffset(el);\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(el);\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n }\n getWindow() {\n return isWindowAvailable() ? window : null;\n }\n hasOffsetParent(el) {\n if (!el) {\n return false;\n }\n return !!this.nativeElement(el).offsetParent;\n }\n offset(el) {\n if (!el) {\n return null;\n }\n return offset(el);\n }\n offsetAtPoint(el, currentLocation) {\n if (!el) {\n return null;\n }\n const element = this.nativeElement(el);\n const { left, top, transition } = element.style;\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n const currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n // prevents elements with transition to be animated because of the change\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.style.transition = transition;\n return currentOffset;\n }\n nativeElement(el) {\n if (!el) {\n return null;\n }\n return el.nativeElement || el;\n }\n position(element, popup, scale = 1) {\n if (!element || !popup) {\n return null;\n }\n return positionWithScroll(element, this.nativeElement(popup), scale);\n }\n removeScroll(rect, scroll) {\n return removeScroll(rect, scroll);\n }\n restrictToView(settings) {\n return restrictToView(settings);\n }\n scrollPosition(el) {\n return scrollPosition(this.nativeElement(el));\n }\n scrollableParents(el) {\n return scrollableParents(el);\n }\n stackingElementOffset(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n }\n stackingElementScroll(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n }\n getRelativeContextElement(el) {\n if (!el || !hasRelativeStackingContext()) {\n return null;\n }\n let parent = this.nativeElement(el).parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n }\n useRelativePosition(el) {\n return !!this.getRelativeContextElement(el);\n }\n windowViewPort(el) {\n return getWindowViewPort(this.nativeElement(el));\n }\n zIndex(anchor, container) {\n return zIndex(anchor, this.nativeElement(container));\n }\n zoomLevel() {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n }\n isZoomed() {\n return this.zoomLevel() > 1;\n }\n}\nDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass AlignService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n alignElement(settings) {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode } = settings;\n const scale = this.scale || 1;\n const fixedMode = positionMode === 'fixed' || !this._dom.hasOffsetParent(element);\n const anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset, scale) : this.relativeRect(anchor, element, offset, scale);\n const elementRect = scaleRect(this._dom.offset(element.nativeElement), scale);\n const result = this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n return result;\n }\n absoluteRect(anchor, element, offset, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset);\n const stackScale = 2 * scale;\n const stackScroll = this._dom.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n const stackOffset = this._dom.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n return this._dom.removeScroll(this._dom.addScroll(removeStackingOffset(scaleRect(rect, scale), stackOffset), stackScroll), scrollPos);\n }\n elementScrollPosition(anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n }\n relativeRect(anchor, element, offset, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset);\n return scaleRect(rect, scale);\n }\n}\nAlignService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAlignService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PositionService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n positionElement(settings) {\n const { anchor, currentLocation, element, anchorAlign, elementAlign, collisions, margin } = settings;\n const dom = this._dom;\n const scale = this.scale || 1;\n const elementOffset = dom.offsetAtPoint(element, currentLocation);\n const elementRect = scaleRect(elementOffset, scale);\n const anchorOffset = scaleRect(dom.offset(anchor), scale);\n const anchorRect = eitherRect(anchorOffset, currentLocation);\n const viewPort = settings.viewPort || dom.windowViewPort(element);\n viewPort.width = viewPort.width / scale;\n viewPort.height = viewPort.height / scale;\n const result = dom.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n const offset = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n }\n}\nPositionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPositionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n subscribe(callback) {\n if (!isDocumentAvailable()) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this._dom.getWindow(), \"resize\")\n .pipe(auditTime(FRAME_DURATION))\n .subscribe(() => callback());\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isUnsubscribed() {\n return this.subscription && this.subscription.closed;\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nclass ScrollableService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n forElement(element) {\n this.unsubscribe();\n this.element = element;\n return this;\n }\n subscribe(callback) {\n if (!callback || !isDocumentAvailable() || !this.element) {\n return;\n }\n const parents = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents.filter(p => p === target).length > 0;\n const isDocument = target === document;\n const isWindow = target === window;\n if (isParent || isDocument || isWindow) {\n callback(this.isVisible(this.element, target));\n }\n };\n this.subscription = merge(...observables).subscribe(subscriber);\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isVisible(elem, container) {\n const elemRect = this._dom.boundingOffset(elem);\n const containerRect = this._dom.boundingOffset(this._dom.nativeElement(container));\n if (THRESHOLD_DIFF < (containerRect.top - elemRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.top - containerRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.left - containerRect.right)) {\n return false;\n }\n if (THRESHOLD_DIFF < (containerRect.left - elemRect.right)) {\n return false;\n }\n return true;\n }\n}\nScrollableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\nanimationTypes.expand = (direction) => {\n const scale = direction === UP || direction === DOWN ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === DOWN) {\n origin = 'top';\n }\n else if (direction === LEFT) {\n origin = RIGHT;\n }\n else if (direction === RIGHT) {\n origin = LEFT;\n }\n else {\n origin = 'bottom';\n }\n return {\n start: { transform: `${scale}(${startScale})`, transformOrigin: origin },\n end: { transform: `${scale}(${endScale})` }\n };\n};\nanimationTypes.slide = (direction) => {\n const translate = direction === LEFT || direction === RIGHT ? 'translateX' : 'translateY';\n const start = direction === RIGHT || direction === DOWN ? -100 : 100;\n const end = 0;\n return {\n start: { transform: `${translate}(${start}%)` },\n end: { transform: `${translate}(${end}%)` }\n };\n};\nanimationTypes.fade = () => {\n return {\n start: { opacity: 0 },\n end: { opacity: 1 }\n };\n};\nanimationTypes.zoom = () => {\n const start = 0;\n const end = 1;\n return {\n start: { transform: `scale(${start})` },\n end: { transform: `scale(${end})` }\n };\n};\n/**\n * @hidden\n */\nclass AnimationService {\n constructor(animationBuilder) {\n this.animationBuilder = animationBuilder;\n this.start = new EventEmitter();\n this.end = new EventEmitter();\n }\n play(element, options, flip) {\n if (!this.flip || this.flip.horizontal !== flip.horizontal ||\n this.flip.vertical !== flip.vertical) {\n this.flip = flip;\n const type = options.type || DEFAULT_TYPE;\n const statesFn = animationTypes[type];\n if (statesFn) {\n const direction = this.getDirection(flip, options);\n const states = statesFn(direction);\n this.playStates(element, states, options);\n }\n else if (isDevMode()) {\n throw new Error(`Unsupported animation type: \"${type}\". The supported types are slide, expand, fade and zoom.`);\n }\n }\n }\n ngOnDestroy() {\n this.stopPlayer();\n }\n playStates(element, states, options) {\n this.stopPlayer();\n const duration = options.duration || DEFAULT_DURATION;\n const factory = this.animationBuilder.build([\n style(states.start),\n animate(`${duration}ms ease-in`, style(states.end))\n ]);\n const player = this.player = factory.create(element);\n player.onDone(() => {\n this.end.emit();\n this.stopPlayer();\n });\n this.start.emit();\n player.play();\n }\n getDirection(flip, options) {\n let direction = options.direction || DOWN;\n if (flip.horizontal) {\n if (direction === LEFT) {\n direction = RIGHT;\n }\n else if (direction === RIGHT) {\n direction = LEFT;\n }\n }\n if (flip.vertical) {\n if (direction === DOWN) {\n direction = UP;\n }\n else if (direction === UP) {\n direction = DOWN;\n }\n }\n return direction;\n }\n stopPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n}\nAnimationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, deps: [{ token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.AnimationBuilder }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-popup',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440793,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DEFAULT_OFFSET = { left: -10000, top: 0 };\nconst ANIMATION_CONTAINER = 'k-animation-container';\nconst ANIMATION_CONTAINER_FIXED = 'k-animation-container-fixed';\n/**\n * Represents the [Kendo UI Popup component for Angular]({% slug overview_popup %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Popup content!\n * \n * `\n * })\n * class AppComponent {\n * public show: boolean = false;\n * }\n * ```\n */\nclass PopupComponent {\n constructor(container, _alignService, domService, _positionService, _resizeService, _scrollableService, animationService, _renderer, _zone) {\n this.container = container;\n this._alignService = _alignService;\n this.domService = domService;\n this._positionService = _positionService;\n this._resizeService = _resizeService;\n this._scrollableService = _scrollableService;\n this.animationService = animationService;\n this._renderer = _renderer;\n this._zone = _zone;\n /**\n * Controls the Popup animation. By default, the opening and closing animations\n * are enabled ([see example]({% slug animations_popup %})).\n */\n this.animate = true;\n /**\n * Specifies the anchor pivot point\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.anchorAlign = { horizontal: 'left', vertical: 'bottom' };\n /**\n * Configures the collision behavior of the Popup\n * ([see example]({% slug viewportboundarydetection_popup %})).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Specifies the pivot point of the Popup\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.popupAlign = { horizontal: 'left', vertical: 'top' };\n /**\n * Controls whether the component will copy the `anchor` font styles.\n */\n this.copyAnchorStyles = false;\n /**\n * Specifies the position mode of the component. By default, the Popup uses fixed positioning.\n * To make the Popup acquire absolute positioning, set this option to `absolute`.\n *\n * > If you need to support mobile browsers with the zoom option,\n * use the `absolute` positioning of the Popup.\n *\n * @example\n * ```html\n * \n * ```\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Position mode:\n * \n * \n *
    \n *
    \n * Append to\n * \n * \n * \n *
    \n *
    \n *
    \n *
    \n * \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n *
    \n * `\n * })\n * class AppComponent {\n * public checked: number = 3;\n * public mode: string = 'absolute';\n * public show: boolean = true;\n * }\n * ```\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the absolute position of the element\n * ([see example]({% slug alignmentpositioning_popup %}#toc-aligning-to-absolute-points)).\n * The Popup opens next to that point. The Popup pivot point is defined by the `popupAlign` configuration option.\n * The boundary detection is applied by using the window viewport.\n */\n this.offset = DEFAULT_OFFSET;\n /**\n * Fires when the anchor is scrolled outside the screen boundaries.\n * ([see example]({% slug closing_popup %}#toc-after-leaving-the-viewport)).\n */\n this.anchorViewportLeave = new EventEmitter();\n /**\n * Fires after the component is closed.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the component is opened and the opening animation ends.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the component is opened and the Popup is positioned.\n */\n this.positionChange = new EventEmitter();\n this.resolvedPromise = Promise.resolve(null);\n this.initialCheck = true;\n validatePackage(packageMetadata);\n this._renderer.addClass(container.nativeElement, ANIMATION_CONTAINER);\n this.updateFixedClass();\n }\n ngOnInit() {\n this.reposition = this.reposition.bind(this);\n this._resizeService.subscribe(this.reposition);\n this.animationSubscriptions = this.animationService.start.subscribe(this.onAnimationStart.bind(this));\n this.animationSubscriptions.add(this.animationService.end.subscribe(this.onAnimationEnd.bind(this)));\n this._scrollableService.forElement(this.domService.nativeElement(this.anchor) || this.container.nativeElement).subscribe(this.onScroll.bind(this));\n this.currentOffset = DEFAULT_OFFSET;\n this.setZIndex();\n this.copyFontStyles();\n this.updateFixedClass();\n this.reposition();\n }\n ngOnChanges(changes) {\n if (changes.copyAnchorStyles) {\n this.copyFontStyles();\n }\n if (changes.positionMode) {\n this.updateFixedClass();\n }\n }\n ngAfterViewInit() {\n if (!this.animate) {\n this.resolvedPromise.then(() => {\n this.onAnimationEnd();\n });\n }\n }\n ngAfterViewChecked() {\n if (this.initialCheck) {\n this.initialCheck = false;\n return;\n }\n this._zone.runOutsideAngular(() => {\n // workarounds https://github.com/angular/angular/issues/19094\n // uses promise because it is executed synchronously after the content is updated\n // does not use onStable in case the current zone is not the angular one.\n this.unsubscribeReposition();\n this.repositionSubscription = from(this.resolvedPromise)\n .subscribe(this.reposition);\n });\n }\n ngOnDestroy() {\n this.anchorViewportLeave.complete();\n this.positionChange.complete();\n this.close.emit();\n this.close.complete();\n this._resizeService.unsubscribe();\n this._scrollableService.unsubscribe();\n this.animationSubscriptions.unsubscribe();\n this.unsubscribeReposition();\n }\n /**\n * @hidden\n */\n onResize() {\n this.reposition();\n }\n onAnimationStart() {\n this._renderer.removeClass(this.container.nativeElement, 'k-animation-container-shown');\n }\n onAnimationEnd() {\n this._renderer.addClass(this.container.nativeElement, 'k-animation-container-shown');\n this.open.emit();\n this.open.complete();\n }\n get currentOffset() {\n return this._currentOffset;\n }\n set currentOffset(offset) {\n this.setContainerStyle('left', `${offset.left}px`);\n this.setContainerStyle('top', `${offset.top}px`);\n this._currentOffset = offset;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.domService.nativeElement(this.anchor), this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset)) {\n this.currentOffset = offset;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset, flip }));\n }\n }\n if (this.animate) {\n this.animationService.play(this.contentContainer.nativeElement, this.animate, flip);\n }\n this.resizeSensor.acceptSize();\n }\n position() {\n const alignedOffset = this._alignService.alignElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin,\n offset: this.offset,\n positionMode: this.positionMode\n });\n return this._positionService.positionElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n collisions: this.collision,\n currentLocation: alignedOffset,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin\n });\n }\n onScroll(isInViewPort) {\n const hasLeaveObservers = hasObservers(this.anchorViewportLeave);\n if (isInViewPort || !hasLeaveObservers) {\n this.reposition();\n }\n else if (hasLeaveObservers) {\n this._zone.run(() => {\n this.anchorViewportLeave.emit();\n });\n }\n }\n copyFontStyles() {\n if (!this.anchor || !this.copyAnchorStyles) {\n return;\n }\n this.domService.getFontStyles(this.domService.nativeElement(this.anchor))\n .forEach(s => this.setContainerStyle(s.key, s.value));\n }\n updateFixedClass() {\n const action = this.positionMode === 'fixed' ? 'addClass' : 'removeClass';\n this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);\n }\n setContainerStyle(name, value) {\n this._renderer.setStyle(this.container.nativeElement, name, value);\n }\n unsubscribeReposition() {\n if (this.repositionSubscription) {\n this.repositionSubscription.unsubscribe();\n }\n }\n}\nPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ElementRef }, { token: AlignService }, { token: DOMService }, { token: PositionService }, { token: ResizeService }, { token: ScrollableService }, { token: AnimationService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopupComponent, selector: \"kendo-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", popupClass: \"popupClass\", positionMode: \"positionMode\", offset: \"offset\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService], viewQueries: [{ propertyName: \"contentContainer\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: [\"kendo-popup\"], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n \n \n
    \n `, isInline: true, components: [{ type: i7.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i8.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i8.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-popup',\n providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService],\n selector: 'kendo-popup',\n template: `\n
    \n \n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], margin: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] } });\n\nconst removeElement = (element) => {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n};\n/**\n * Used to inject the Popup container. If not provided, the first root component of\n * the application is used.\n *\n * > The `POPUP_CONTAINER` can be used only with the [`PopupService`]({% slug service_popup %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule, POPUP_CONTAINER } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: POPUP_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the popup will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst POPUP_CONTAINER = new InjectionToken('Popup Container');\n/**\n * A service for opening Popup components dynamically\n * ([see example]({% slug service_popup %})).\n *\n * @export\n * @class PopupService\n */\nclass PopupService {\n constructor(applicationRef, componentFactoryResolver, injector, container) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.container = container;\n }\n /**\n * Gets the root view container into which the component will be injected.\n *\n * @returns {ComponentRef}\n */\n get rootViewContainer() {\n // https://github.com/angular/angular/blob/4.0.x/packages/core/src/application_ref.ts#L571\n const rootComponents = this.applicationRef.components || [];\n if (rootComponents[0]) {\n return rootComponents[0];\n }\n throw new Error(`\n View Container not found! Inject the POPUP_CONTAINER or define a specific ViewContainerRef via the appendTo option.\n See http://www.telerik.com/kendo-angular-ui/components/popup/api/POPUP_CONTAINER/ for more details.\n `);\n }\n /**\n * Sets or gets the HTML element of the root component container.\n *\n * @returns {HTMLElement}\n */\n get rootViewContainerNode() {\n return this.container ? this.container.nativeElement : this.getComponentRootNode(this.rootViewContainer);\n }\n /**\n * Opens a Popup component. Created Popups are mounted\n * in the DOM directly in the root application component.\n *\n * @param {PopupSettings} options - The options which define the Popup.\n * @returns {ComponentRef} - A reference to the Popup object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Popup content\n * \n * \n * `\n * })\n * export class AppComponent {\n * public popupRef: PopupRef;\n *\n * constructor( private popupService: PopupService ) {}\n *\n * public open(anchor: ElementRef, template: TemplateRef): void {\n * if (this.popupRef) {\n * this.popupRef.close();\n * this.popupRef = null;\n * return;\n * }\n *\n * this.popupRef = this.popupService.open({\n * anchor: anchor,\n * content: template\n * });\n * }\n * }\n * ```\n */\n open(options = {}) {\n const { component, nodes } = this.contentFrom(options.content);\n const popupComponentRef = this.appendPopup(nodes, options.appendTo);\n const popupInstance = popupComponentRef.instance;\n this.projectComponentInputs(popupComponentRef, options);\n popupComponentRef.changeDetectorRef.detectChanges();\n if (component) {\n component.changeDetectorRef.detectChanges();\n }\n const popupElement = this.getComponentRootNode(popupComponentRef);\n return {\n close: () => {\n if (component) {\n component.destroy();\n }\n popupComponentRef.destroy();\n // Angular will not remove the element unless the change detection is triggered\n removeElement(popupElement);\n },\n content: component,\n popup: popupComponentRef,\n popupAnchorViewportLeave: popupInstance.anchorViewportLeave,\n popupClose: popupInstance.close,\n popupElement: popupElement,\n popupOpen: popupInstance.open,\n popupPositionChange: popupInstance.positionChange\n };\n }\n appendPopup(nodes, container) {\n const popupComponentRef = this.createComponent(PopupComponent, nodes, container);\n if (!container) {\n this.rootViewContainerNode.appendChild(this.getComponentRootNode(popupComponentRef));\n }\n return popupComponentRef;\n }\n /**\n * Gets the HTML element for a component reference.\n *\n * @param {ComponentRef} componentRef\n * @returns {HTMLElement}\n */\n getComponentRootNode(componentRef) {\n return componentRef.location.nativeElement;\n }\n /**\n * Gets the `ComponentFactory` instance by its type.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n getComponentFactory(componentClass) {\n return this.componentFactoryResolver.resolveComponentFactory(componentClass);\n }\n /**\n * Creates a component reference from a `Component` type class.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n createComponent(componentClass, nodes, container) {\n const factory = this.getComponentFactory(componentClass);\n if (container) {\n return container.createComponent(factory, undefined, this.injector, nodes);\n }\n else {\n const component = factory.create(this.injector, nodes);\n this.applicationRef.attachView(component.hostView);\n return component;\n }\n }\n /**\n * Projects the inputs on the component.\n *\n * @param {ComponentRef} component\n * @param {*} options\n * @returns {ComponentRef}\n */\n projectComponentInputs(component, options) {\n Object.getOwnPropertyNames(options)\n .filter(prop => prop !== 'content' || options.content instanceof TemplateRef)\n .map((prop) => {\n component.instance[prop] = options[prop];\n });\n return component;\n }\n /**\n * Gets the component and the nodes to append from the `content` option.\n *\n * @param {*} content\n * @returns {any}\n */\n contentFrom(content) {\n if (!content || content instanceof TemplateRef) {\n return { component: null, nodes: [[]] };\n }\n const component = this.createComponent(content);\n const nodes = component ? [component.location.nativeElement] : [];\n return {\n component: component,\n nodes: [\n nodes // \n ]\n };\n }\n}\nPopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\nconst POPUP_DIRECTIVES = [PopupComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Popup component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopupModule {\n}\nPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, declarations: [PopupComponent], imports: [CommonModule, ResizeSensorModule], exports: [PopupComponent] });\nPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [POPUP_DIRECTIVES],\n entryComponents: [POPUP_DIRECTIVES],\n exports: [POPUP_DIRECTIVES],\n imports: [CommonModule, ResizeSensorModule],\n providers: [PopupService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { POPUP_CONTAINER, PopupComponent, PopupModule, PopupService, SCALE };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { isDevMode, Component, HostBinding, Input, EventEmitter, Output, ViewChild, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { hasObservers } from '@progress/kendo-angular-common';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-progressbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441158,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nconst MIN_MAX_ERROR_MESSAGE = `The max value should be greater than the min.`;\n/**\n * @hidden\n */\nconst LABEL_DECIMALS = 3;\n/**\n * @hidden\n */\nconst MIN_RATIO = 0.0001;\n\n/**\n * @hidden\n */\nconst reverseChunks = (orientation, reverse) => (orientation === 'vertical' && !reverse || orientation === 'horizontal' && reverse);\n/**\n * @hidden\n */\nconst formatValue = (value, min, max, label) => {\n const defaultFormattedValue = truncateNumber(value);\n if (typeof label !== 'boolean') {\n if (typeof label.format === 'string') {\n switch (label.format) {\n case 'value':\n return defaultFormattedValue;\n case 'percent':\n return `${Math.floor(calculatePercentage(value, min, max))}%`;\n default:\n return defaultFormattedValue;\n }\n }\n else if (typeof label.format === 'function') {\n return label.format(value);\n }\n else {\n return defaultFormattedValue;\n }\n }\n return defaultFormattedValue;\n};\n/**\n * @hidden\n */\nconst validateRange = (min, max) => {\n if (isDevMode && min > max) {\n throw new Error(MIN_MAX_ERROR_MESSAGE);\n }\n};\n/**\n * @hidden\n */\nconst adjustValueToRange = (min, max, value) => Math.max(Math.min(value, max), min);\n/**\n * @hidden\n */\nconst calculatePercentage = (value, min, max) => {\n const onePercent = Math.abs((max - min) / 100);\n return Math.abs((value - min) / onePercent);\n};\n/**\n * @hidden\n */\nconst truncateNumber = (value) => {\n const numberParts = value.toString().split('.');\n return numberParts.length === 1 ? `${numberParts[0]}` : `${numberParts[0]}.${numberParts[1].substr(0, LABEL_DECIMALS)}`;\n};\n/**\n * @hidden\n */\nconst calculateRatio = (min, max, value) => Math.max((value - min) / (max - min), MIN_RATIO);\n/**\n * @hidden\n */\nconst extractValueFromChanges = (changes, type, value) => changes[type] && changes[type].currentValue !== undefined ? changes[type].currentValue : value;\n/**\n * @hidden\n */\nconst runAnimation = (changes, animation, previousValue, displayValue) => animation && typeof requestAnimationFrame !== 'undefined' && changes.value && previousValue !== displayValue;\n/**\n * @hidden\n */\nconst stopCurrentAnimation = (changes) => {\n const isAnimationChanged = Boolean(changes.animation);\n const hasAnimation = isAnimationChanged && changes.animation.currentValue;\n return isAnimationChanged && !hasAnimation;\n};\n\n/**\n * @hidden\n */\nclass ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization) {\n this.localization = localization;\n this.widgetClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * The maximum value of the ProgressBar.\n * Defaults to `100`.\n */\n this.max = 100;\n /**\n * The minimum value of the ProgressBar.\n * Defaults to `0`.\n */\n this.min = 0;\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * By default, the value is equal to the `min` value.\n */\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * Defaults to `0`.\n */\n this.value = 0;\n /**\n * Defines the orientation of the ProgressBar\n * ([see example]({% slug progressbar_orientation %})).\n * Defaults to `horizontal`.\n */\n this.orientation = 'horizontal';\n /**\n * If set to `true`, the ProgressBar will be disabled\n * ([see example]({% slug progressbar_disabled %})).\n * It will still allow you to change its value.\n * Defaults to `false`.\n */\n this.disabled = false;\n /**\n * If set to `true`, the ProgressBar will be reversed\n * ([see example]({% slug progressbar_direction %})).\n * Defaults to `false`.\n */\n this.reverse = false;\n /**\n * Sets the `indeterminate` state of the ProgressBar.\n * Defaults to `false`.\n */\n this.indeterminate = false;\n this.displayValue = 0;\n this.previousValue = 0;\n validatePackage(packageMetadata);\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n get isVertical() {\n return this.orientation === 'vertical';\n }\n get disabledClass() {\n return this.disabled;\n }\n get reverseClass() {\n return this.reverse;\n }\n get indeterminateClass() {\n return this.indeterminate;\n }\n get dirAttribute() {\n return this.direction;\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.displayValue);\n }\n /**\n * @hidden\n */\n get isCompleted() {\n return this.value === this.max;\n }\n /**\n * @hidden\n */\n get statusWidth() {\n return this.orientation === 'horizontal' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusHeight() {\n return this.orientation === 'vertical' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperWidth() {\n return this.orientation === 'horizontal' ? 100 / this._progressRatio : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperHeight() {\n return this.orientation === 'vertical' ? 100 / this._progressRatio : 100;\n }\n get _progressRatio() {\n return calculateRatio(this.min, this.max, this.displayValue);\n }\n ngOnChanges(changes) {\n const min = extractValueFromChanges(changes, 'min', this.min);\n const max = extractValueFromChanges(changes, 'max', this.max);\n const value = extractValueFromChanges(changes, 'value', this.value);\n if (changes.min || changes.max || changes.value) {\n if (changes.min || changes.max) {\n validateRange(min, max);\n }\n if (changes.value) {\n if (value == null || Number.isNaN(value)) {\n this.value = min;\n }\n const previousValue = this.displayValue;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n this.previousValue = previousValue;\n }\n this.min = min;\n this.max = max;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n}\nProgressBarBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarBase, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nProgressBarBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ProgressBarBase, selector: \"ng-component\", inputs: { max: \"max\", min: \"min\", value: \"value\", orientation: \"orientation\", disabled: \"disabled\", reverse: \"reverse\", indeterminate: \"indeterminate\" }, host: { properties: { \"class.k-widget\": \"this.widgetClasses\", \"class.k-progressbar\": \"this.widgetClasses\", \"class.k-progressbar-horizontal\": \"this.isHorizontal\", \"class.k-progressbar-vertical\": \"this.isVertical\", \"class.k-state-disabled\": \"this.disabledClass\", \"class.k-progressbar-reverse\": \"this.reverseClass\", \"class.k-progressbar-indeterminate\": \"this.indeterminateClass\", \"attr.dir\": \"this.dirAttribute\", \"attr.role\": \"this.roleAttribute\", \"attr.aria-valuemin\": \"this.ariaMinAttribute\", \"attr.aria-valuemax\": \"this.ariaMaxAttribute\", \"attr.aria-valuenow\": \"this.ariaValueAttribute\" } }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarBase, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { widgetClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-progressbar']\n }], isHorizontal: [{\n type: HostBinding,\n args: ['class.k-progressbar-horizontal']\n }], isVertical: [{\n type: HostBinding,\n args: ['class.k-progressbar-vertical']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], reverseClass: [{\n type: HostBinding,\n args: ['class.k-progressbar-reverse']\n }], indeterminateClass: [{\n type: HostBinding,\n args: ['class.k-progressbar-indeterminate']\n }], dirAttribute: [{\n type: HostBinding,\n args: ['attr.dir']\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaMinAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], ariaMaxAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }], ariaValueAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], value: [{\n type: Input\n }], orientation: [{\n type: Input\n }], disabled: [{\n type: Input\n }], reverse: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI ProgressBar component for Angular]({% slug overview_progressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 50;\n * }\n * ```\n */\nclass ProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, zone, renderer) {\n super(localization);\n this.localization = localization;\n this.zone = zone;\n this.renderer = renderer;\n /**\n * Determines whether the status label will be visible.\n * Defaults to `true`—the label will be visible and displayed with the default\n * `LabelSettings` having its position set to `end` and its format set to `value`.\n */\n this.label = true;\n /**\n * The animation configuration of the ProgressBar.\n * Defaults to `false`.\n */\n this.animation = false;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n }\n /**\n * @hidden\n */\n get showLabel() {\n if (typeof this.label === 'boolean') {\n return this.label;\n }\n else {\n if (this.label && !this.label.hasOwnProperty('visible')) {\n this.label.visible = true;\n }\n return this.label.visible;\n }\n }\n /**\n * @hidden\n */\n get labelPosition() {\n if (typeof this.label === 'boolean') {\n return 'end';\n }\n else {\n if (this.label && !this.label.hasOwnProperty('position')) {\n this.label.position = 'end';\n }\n return this.label.position;\n }\n }\n /**\n * @hidden\n */\n get isPositionStart() {\n return this.labelPosition === 'start';\n }\n /**\n * @hidden\n */\n get isPositionCenter() {\n return this.labelPosition === 'center';\n }\n /**\n * @hidden\n */\n get isPositionEnd() {\n return this.labelPosition === 'end';\n }\n /**\n * @hidden\n */\n get formattedLabelValue() {\n return formatValue(this.displayValue, this.min, this.max, this.label);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (this.isAnimationInProgress && stopCurrentAnimation(changes)) {\n this.cancelCurrentAnimation = true;\n }\n if (runAnimation(changes, this.animation, this.previousValue, this.displayValue) && !changes.value.firstChange) {\n this.startAnimation(this.previousValue);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n /**\n * @hidden\n */\n startAnimation(previousValue) {\n this.isAnimationInProgress = true;\n const element = this.progressStatusElement.nativeElement;\n const wrapperElement = this.progressStatusWrapperElement.nativeElement;\n const animationOptions = this.getAnimationOptions(previousValue);\n this.zone.runOutsideAngular(() => {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n const animate = () => {\n const elapsed = new Date().getTime() - animationOptions.startTime;\n const position = Math.min(elapsed / animationOptions.duration, 1);\n const size = animationOptions.startSize + animationOptions.deltaSize * position;\n const wrapperSize = (100 / size) * 100;\n this.renderValueChange(element, wrapperElement, animationOptions.property, size, wrapperSize);\n if (position < 1) {\n if (this.cancelCurrentAnimation) {\n this.resetProgress(element, wrapperElement, animationOptions.property);\n return;\n }\n this.animationFrame = requestAnimationFrame(animate);\n }\n else {\n this.stopAnimation(previousValue);\n }\n };\n animate();\n });\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'boolean') {\n return 400;\n }\n else {\n if (this.animation && !this.animation.hasOwnProperty('duration')) {\n this.animation.duration = 400;\n }\n return this.animation.duration;\n }\n }\n stopAnimation(value) {\n if (hasObservers(this.animationEnd)) {\n this.zone.run(() => {\n this.animationEnd.emit({\n from: value,\n to: this.displayValue\n });\n });\n }\n this.zone.run(() => {\n this.isAnimationInProgress = false;\n });\n }\n getAnimationOptions(value) {\n const isHorizontal = this.orientation === 'horizontal';\n const previousRatio = calculateRatio(this.min, this.max, value);\n const previousStatusWidth = isHorizontal ? previousRatio * 100 : 100;\n const previousStatusHeight = !isHorizontal ? previousRatio * 100 : 100;\n const property = isHorizontal ? 'width' : 'height';\n const startTime = new Date().getTime();\n const startSize = isHorizontal ? previousStatusWidth : previousStatusHeight;\n const deltaSize = isHorizontal ? this.statusWidth - previousStatusWidth : this.statusHeight - previousStatusHeight;\n const duration = this.animationDuration * Math.abs((deltaSize / 100));\n return {\n property,\n startTime,\n startSize,\n deltaSize,\n duration\n };\n }\n renderValueChange(element, wrapperElement, property, size, wrapperSize) {\n this.renderer.setStyle(element, property, size + '%');\n this.renderer.setStyle(wrapperElement, property, wrapperSize + '%');\n }\n resetProgress(element, wrapperElement, property) {\n const size = calculateRatio(this.min, this.max, this.value);\n const newSize = size * 100;\n const newWrapperSize = 100 / size;\n this.renderValueChange(element, wrapperElement, property, newSize, newWrapperSize);\n this.zone.run(() => {\n this.cancelCurrentAnimation = false;\n this.isAnimationInProgress = false;\n });\n }\n}\nProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ProgressBarComponent, selector: \"kendo-progressbar\", inputs: { label: \"label\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\", animation: \"animation\" }, outputs: { animationEnd: \"animationEnd\" }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ], viewQueries: [{ propertyName: \"progressStatusElement\", first: true, predicate: [\"progressStatus\"], descendants: true }, { propertyName: \"progressStatusWrapperElement\", first: true, predicate: [\"progressStatusWrap\"], descendants: true }], exportAs: [\"kendoProgressBar\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n {{formattedLabelValue}}\n \n \n \n {{formattedLabelValue}}\n \n \n `, isInline: true, directives: [{ type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoProgressBar',\n selector: 'kendo-progressbar',\n template: `\n \n {{formattedLabelValue}}\n \n \n \n {{formattedLabelValue}}\n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { label: [{\n type: Input\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }], animation: [{\n type: Input\n }], animationEnd: [{\n type: Output\n }], progressStatusElement: [{\n type: ViewChild,\n args: ['progressStatus', { static: false }]\n }], progressStatusWrapperElement: [{\n type: ViewChild,\n args: ['progressStatusWrap', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ChunkProgressBar component for Angular]({% slug overview_chunkprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 40;\n * }\n * ```\n */\nclass ChunkProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization) {\n super(localization);\n this.localization = localization;\n /**\n * Sets the number of chunks into which the ChunkProgressBar will be split.\n * Defaults to `5`.\n */\n this.chunkCount = 5;\n this._orientationStyles = {\n width: `${this.chunkSizePercentage}%`\n };\n }\n /**\n * @hidden\n */\n get chunks() {\n const count = this.chunkCount;\n const chunks = Array(count).fill(false);\n const completedChunks = Math.floor(this._progressRatio * count);\n for (let i = 0; i < completedChunks; i++) {\n chunks[i] = true;\n }\n if (reverseChunks(this.orientation, this.reverse)) {\n chunks.reverse();\n }\n return chunks;\n }\n /**\n * @hidden\n */\n get chunkSizePercentage() {\n return 100 / this.chunkCount;\n }\n /**\n * @hidden\n */\n get orientationStyles() {\n if (this.orientation === 'horizontal') {\n this._orientationStyles.width = `${this.chunkSizePercentage}%`;\n this._orientationStyles.height = undefined;\n }\n else {\n this._orientationStyles.height = `${this.chunkSizePercentage}%`;\n this._orientationStyles.width = undefined;\n }\n return this._orientationStyles;\n }\n}\nChunkProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChunkProgressBarComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nChunkProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChunkProgressBarComponent, selector: \"kendo-chunkprogressbar\", inputs: { chunkCount: \"chunkCount\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\" }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ], exportAs: [\"kendoChunkProgressBar\"], usesInheritance: true, ngImport: i0, template: `\n
      \n
    • \n
    • \n
    \n `, isInline: true, directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChunkProgressBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoChunkProgressBar',\n selector: 'kendo-chunkprogressbar',\n template: `\n
      \n
    • \n
    • \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { chunkCount: [{\n type: Input\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES = [ProgressBarComponent, ChunkProgressBarComponent];\nconst MODULES = [CommonModule];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the ProgressBar components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ProgressBar module\n * import { ProgressBarModule } from '@progress/kendo-angular-progressbar';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ProgressBarModule], // import ProgressBar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ProgressBarModule {\n}\nProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBarComponent, ChunkProgressBarComponent], imports: [CommonModule], exports: [ProgressBarComponent, ChunkProgressBarComponent] });\nProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarModule, imports: [MODULES] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: COMPONENT_DIRECTIVES,\n exports: COMPONENT_DIRECTIVES,\n imports: MODULES\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ChunkProgressBarComponent, ProgressBarComponent, ProgressBarModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Optional, Injectable, EventEmitter, Input, Inject, isDevMode, Component, HostBinding, ChangeDetectionStrategy, ViewChild, Output, forwardRef, ViewChildren, NgZone, ViewContainerRef, ViewEncapsulation, ContentChild, ContentChildren, NgModule, LOCALE_ID, ElementRef, TemplateRef, Pipe, HostListener } from '@angular/core';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport * as i12$1 from '@progress/kendo-angular-common';\nimport { hasObservers, isDocumentAvailable, isChanged, Keys, anyChanged, ResizeSensorComponent, EventsModule, guid, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { isEqualDate, timezoneNames, ZonedDate, toLocalDate, getDate, Day, MS_PER_DAY, addDays, firstDayOfMonth, addMonths, firstDayInWeek } from '@progress/kendo-date-math';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i4 from '@progress/kendo-angular-dateinputs';\nimport { PreventableEvent as PreventableEvent$1, CalendarModule, DateInputsModule } from '@progress/kendo-angular-dateinputs';\nimport { Subject, BehaviorSubject, fromEvent, Subscription, combineLatest, merge } from 'rxjs';\nimport { auditTime, buffer, filter, map, debounceTime, take, switchMap, tap, distinctUntilChanged } from 'rxjs/operators';\nimport * as i11 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport * as i1 from '@progress/kendo-angular-dialog';\nimport { DialogCloseResult, DialogModule } from '@progress/kendo-angular-dialog';\nimport * as i1$4 from '@progress/kendo-angular-intl';\nimport { formatDate, IntlModule, IntlService, CldrIntlService, parseDate } from '@progress/kendo-angular-intl';\nimport * as i1$2 from '@progress/kendo-angular-popup';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport * as i3 from '@progress/kendo-angular-buttons';\nimport { Button, ButtonsModule } from '@progress/kendo-angular-buttons';\nimport * as i10 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$3 from '@progress/kendo-angular-dropdowns';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { parseRule, serializeRule, expand } from '@progress/kendo-recurrence';\nimport * as i12 from '@progress/kendo-angular-inputs';\nimport { CheckBoxModule, TextAreaModule, NumericTextBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { orderBy, groupBy } from '@progress/kendo-data-query';\nimport Draggable from '@telerik/kendo-draggable';\nimport { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-scheduler',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652259001,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Arguments for the `dateChange` event.\n */\nclass DateChangeEvent {\n /**\n * @hidden\n */\n constructor(sender, selectedDate, dateRange) {\n this.sender = sender;\n this.selectedDate = selectedDate;\n this.dateRange = dateRange;\n }\n}\n\n/**\n * Arguments for the `navigate` event.\n */\nclass NavigateEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(sender, action) {\n super();\n this.sender = sender;\n this.action = action;\n }\n}\n\n/**\n * Arguments for `slotClick` and `slotDblClick` events.\n */\nclass SlotClickEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `eventClick` and `eventDblClick` events.\n */\nclass EventClickEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `eventKeydown` event.\n */\nclass EventKeydownEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `create` event.\n */\nclass CreateEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `dragEnd` event.\n */\nclass DragEndEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `drag` event.\n */\nclass DragEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `dragStart` event.\n */\nclass DragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `remove` event.\n */\nclass RemoveEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `resizeEnd` event.\n */\nclass ResizeEndEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `resize` event.\n */\nclass ResizeEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `resizeStart` event.\n */\nclass ResizeStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n *\n * Maps the name of the event to the argument type of the event.\n */\nconst VIEW_EVENT_MAP = {\n slotClick: SlotClickEvent,\n slotDblClick: SlotClickEvent,\n eventClick: EventClickEvent,\n eventDblClick: EventClickEvent,\n eventKeydown: EventKeydownEvent,\n create: CreateEvent,\n remove: RemoveEvent,\n resizeStart: ResizeStartEvent,\n resize: ResizeEvent,\n resizeEnd: ResizeEndEvent,\n dragStart: DragStartEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent\n};\n\n/**\n * @hidden\n */\nclass EditEventBase {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `cancel` event.\n */\nclass CancelEvent extends EditEventBase {\n}\n\n/**\n * Arguments for the `save` event.\n */\nclass SaveEvent extends EditEventBase {\n}\n\n/**\n * Arguments for the `edit` event of the editing directives.\n */\nclass EditEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `add` event of the editing directives.\n */\nclass AddEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `slotDragStart` event.\n * The event is preventable and if prevented, subsequent `slotDrag`, `slotDragEnd`, and `slotSelectionChange` will not be fired.\n */\nclass SlotDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n super();\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `slotDrag` event.\n */\nclass SlotDragEvent {\n /**\n * @hidden\n */\n constructor(sender, args) {\n this.sender = sender;\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `slotDragEnd` event.\n */\nclass SlotDragEndEvent extends SlotDragEvent {\n}\n\n/**\n * Represents the toolbar template of the Scheduler. To define a toolbar\n * template, nest an `` tag\n * inside ``. For more information and examples, refer to the article on\n * [customizing the toolbar]({% slug toolbar_scheduler %}) of the Scheduler.\n *\n * The template context receives the following template variables:\n * * `selectedDate`—The currently selected date.\n * * `dateRange`—The currently selected [`DateRange`]({% slug api_scheduler_daterange %}).\n * * `views`—A [`SchedulerView`]({% slug api_scheduler_schedulerview %}) array with the available views.\n * * `selectedView`—The currently selected [`SchedulerView`]({% slug api_scheduler_schedulerview %}).\n *\n * You can declare either of the following built-in navigation components in the toolbar template:\n * * `kendoSchedulerToolbarNavigation`—Renders navigation buttons, a calendar, and a date-range label.\n * * `kendoSchedulerToolbarViewSelector`—Renders the buttons for selecting the view.\n *\n * To emit navigation events, the components inside the toolbar can inject\n * the [`ToolbarService`]({% slug api_scheduler_toolbarservice %}).\n *\n * {% meta height:700 %}\n * {% embed_file toolbar/template/app.component.ts preview %}\n * {% embed_file toolbar/template/my-navigation.component.ts %}\n * {% embed_file toolbar/template/app.module.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass ToolbarTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nToolbarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarTemplateDirective, selector: \"[kendoSchedulerToolbarTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerToolbarTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * A service for communication with the toolbar controls\n * which is used by the toolbar components for publishing navigation actions\n * ([see example]({% slug toolbar_scheduler %}#toc-using-the-toolbar-service)).\n */\nclass ToolbarService {\n /** @hidden */\n constructor() {\n this.actionSource = new Subject();\n this.action = this.actionSource.asObservable();\n }\n /**\n * Emits the specified navigation action.\n *\n * @param action - The navigation action that will be executed.\n */\n navigate(action) {\n this.actionSource.next(action);\n }\n}\nToolbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nToolbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * An abstract class which contains meta information about a Scheduler view.\n */\nclass SchedulerView {\n}\n\n/**\n * The selected edit mode during the update or removal of events.\n * For non-recurring events, set to `Event`.\n *\n * The supported values are:\n * * `Event`—Edits the selected event.\n * * `Occurrence`—Edits the selected occurrence.\n * * `Series`—Edits all events in the series.\n */\nvar EditMode;\n(function (EditMode) {\n EditMode[EditMode[\"Event\"] = 0] = \"Event\";\n EditMode[EditMode[\"Occurrence\"] = 1] = \"Occurrence\";\n EditMode[EditMode[\"Series\"] = 2] = \"Series\";\n})(EditMode || (EditMode = {}));\n\n/**\n * The selected CRUD operation when the user edits or removes recurring events.\n *\n * The supported values are:\n * * `Edit`\n * * `Remove`\n */\nvar CrudOperation;\n(function (CrudOperation) {\n CrudOperation[CrudOperation[\"Edit\"] = 0] = \"Edit\";\n CrudOperation[CrudOperation[\"Remove\"] = 1] = \"Remove\";\n})(CrudOperation || (CrudOperation = {}));\n\n/**\n * The arguments for the [`isSlotSelected`]({% slug api_scheduler_schedulercomponent %}#toc-isslotselected) callback.\n */\nclass IsSlotSelectedArgs {\n}\n/**\n * @hidden\n */\nvar slotDragEventName;\n(function (slotDragEventName) {\n slotDragEventName[\"initDragSelect\"] = \"initDragSelect\";\n slotDragEventName[\"dragSelect\"] = \"dragSelect\";\n slotDragEventName[\"refreshSlotSelection\"] = \"refreshSlotSelection\";\n slotDragEventName[\"dragSelectRelease\"] = \"dragSelectRelease\";\n})(slotDragEventName || (slotDragEventName = {}));\n\n/**\n * Represents the template which renders the date header in the **Agenda** view.\n * To define the date template, nest an `` tag with the `kendoSchedulerAgendaDateTemplate`\n * directive inside the `` or `` components.\n *\n * The available fields in the template context are:\n * - `date`—The header date.\n *\n * {% meta height:500 %}\n * {% embed_file templates/agenda-date-header/app.component.ts preview %}\n * {% embed_file templates/agenda-date-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass AgendaDateTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nAgendaDateTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaDateTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nAgendaDateTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaDateTemplateDirective, selector: \"[kendoSchedulerAgendaDateTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaDateTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerAgendaDateTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template which renders the time header in the **Agenda** view.\n * To define the time template, nest an `` tag with the `kendoSchedulerAgendaTimeTemplate`\n * directive inside the `` or in the `` component.\n *\n * The available fields in the template context are:\n * - `start`—The start date of the event.\n * - `end`—The end date of the event.\n * - `title`—The title of the event.\n * - `description`—The description of the event.\n * - `isAllDay`—A Boolean value which indicates if the event is all-day.\n * - `resources`—The resources of the event.\n *\n * {% meta height:500 %}\n * {% embed_file templates/agenda-time-header/app.component.ts preview %}\n * {% embed_file templates/agenda-time-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass AgendaTimeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nAgendaTimeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaTimeTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nAgendaTimeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaTimeTemplateDirective, selector: \"[kendoSchedulerAgendaTimeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaTimeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerAgendaTimeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for and assists the content customization of all-day events.\n * To define the all-day event template, nest an `` tag with the `kendoSchedulerAllDayEventTemplate`\n * directive inside the ``, ``, or `kendo-scheduler-week-view` component.\n *\n * The available fields in the template context are:\n * - `event`—The event that is associated with the item.\n * - `resources`—The resources of the event.\n *\n * {% meta height:500 %}\n * {% embed_file templates/all-day-event/app.component.ts preview %}\n * {% embed_file templates/all-day-event/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass AllDayEventTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nAllDayEventTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AllDayEventTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nAllDayEventTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AllDayEventTemplateDirective, selector: \"[kendoSchedulerAllDayEventTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AllDayEventTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerAllDayEventTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for and assists the content customization of all-day slots.\n * To define the all-day slot template, nest an `` tag with the `kendoSchedulerAllDaySlotTemplate`\n * directive inside the ``, ``, or `kendo-scheduler-week-view` component.\n *\n * The available fields in the template context are:\n * - `date`—The date of the slot.\n * - `resources`—The resources of the slot.\n *\n * {% meta height:500 %}\n * {% embed_file templates/all-day-slot/app.component.ts preview %}\n * {% embed_file templates/all-day-slot/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass AllDaySlotTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nAllDaySlotTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AllDaySlotTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nAllDaySlotTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AllDaySlotTemplateDirective, selector: \"[kendoSchedulerAllDaySlotTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AllDaySlotTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerAllDaySlotTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template which renders the date header in the **Day**, **Week**, and **Timeline** views.\n * To define the day template, nest an `` tag with the `kendoSchedulerDateHeaderTemplate`\n * directive inside the ``, or in the ``, ``,\n * ``, ``, and `` components.\n *\n * The available fields in the template context are:\n * - `date`—The header date.\n *\n * {% meta height:500 %}\n * {% embed_file templates/date-header/app.component.ts preview %}\n * {% embed_file templates/date-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass DateHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDateHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDateHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateHeaderTemplateDirective, selector: \"[kendoSchedulerDateHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerDateHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for and assists the content customization of the Scheduler events.\n * To define the event template, nest an `` tag with the `kendoSchedulerEventTemplate`\n * directive inside the ``, or in the view components.\n *\n * The available fields in the template context are:\n * - `event`—The event that is associated with the item.\n * - `resources`—The resources of the event.\n *\n * {% meta height:500 %}\n * {% embed_file templates/event/app.component.ts preview %}\n * {% embed_file templates/event/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass EventTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nEventTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nEventTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EventTemplateDirective, selector: \"[kendoSchedulerEventTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerEventTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template which renders the resource group header in the **Day**, **Week**, and **Timeline** views.\n * To define the template, nest an `` tag with the `kendoSchedulerGroupHeaderTemplate`\n * directive inside the ``, or in the ``, ``,\n * ``, ``, and `` components.\n *\n * The available fields in the template context are:\n * - `resource`—The resource item.\n *\n * {% meta height:500 %}\n * {% embed_file templates/group-header/app.component.ts preview %}\n * {% embed_file templates/group-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderTemplateDirective, selector: \"[kendoSchedulerGroupHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerGroupHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the major-time headers in the **Day** and **Week** views.\n * To define the major-time header template, nest an `` tag with the `kendoSchedulerMajorTimeHeaderTemplate`\n * directive inside the ``, or in the `` and `` components.\n *\n * The available fields in the template context are:\n * - `date`—The date of the header.\n *\n * {% meta height:500 %}\n * {% embed_file templates/major-header/app.component.ts preview %}\n * {% embed_file templates/major-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass MajorTimeHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMajorTimeHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MajorTimeHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMajorTimeHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MajorTimeHeaderTemplateDirective, selector: \"[kendoSchedulerMajorTimeHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MajorTimeHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerMajorTimeHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the minor-time headers in the **Day** and **Week** views.\n * To define the minor-time header template, nest an `` tag with the `kendoSchedulerMinorTimeHeaderTemplate`\n * directive inside the ``, or in the `` and `` components.\n *\n * The available fields in the template context are:\n * - `date`—The date of the header.\n *\n * {% meta height:500 %}\n * {% embed_file templates/minor-header/app.component.ts preview %}\n * {% embed_file templates/minor-header/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass MinorTimeHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMinorTimeHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinorTimeHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMinorTimeHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MinorTimeHeaderTemplateDirective, selector: \"[kendoSchedulerMinorTimeHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinorTimeHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerMinorTimeHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for rendering the day slots in the **Month** view.\n * To define the day template, nest an `` tag with the `kendoSchedulerMonthDaySlotTemplate`\n * directive inside the ``, or in the `` component.\n *\n * The available fields in the template context are:\n * - `date`—The date of the slot.\n * - `resources`—The resources of the slot.\n *\n * {% meta height:500 %}\n * {% embed_file templates/month-slot/app.component.ts preview %}\n * {% embed_file templates/month-slot/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass MonthDaySlotTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMonthDaySlotTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthDaySlotTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMonthDaySlotTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthDaySlotTemplateDirective, selector: \"[kendoSchedulerMonthDaySlotTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthDaySlotTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerMonthDaySlotTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the time-slot renderer in the **Day**, **Week**, and **Timeline** views.\n * To define the time-slot template, nest an `` tag with the `kendoSchedulerTimeSlotTemplate`\n * directive inside the ``, or in the ``, ``,\n * ``, ``, and `` components.\n *\n * The available fields in the template context are:\n * - `date`—The date of the slot.\n * - `resources`—The resources of the slot.\n *\n * {% meta height:500 %}\n * {% embed_file templates/time-slot/app.component.ts preview %}\n * {% embed_file templates/time-slot/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass TimeSlotTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTimeSlotTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSlotTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTimeSlotTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSlotTemplateDirective, selector: \"[kendoSchedulerTimeSlotTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSlotTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerTimeSlotTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * A service which publishes information from the Scheduler to the views.\n * Views subscribe to changes in the context (selected date, event, and resource data) through this service.\n */\nclass ViewContextService {\n constructor() {\n this.actionSource = new Subject();\n this.itemsSource = new BehaviorSubject([]);\n this.selectedDateSource = new BehaviorSubject(null);\n this.resizeSource = new Subject();\n this.optionsChangeSource = new BehaviorSubject({});\n this.executeSource = new Subject();\n this.action = this.actionSource.asObservable();\n this.items = this.itemsSource.asObservable();\n this.selectedDate = this.selectedDateSource.asObservable();\n this.resize = this.resizeSource.asObservable();\n this.optionsChange = this.optionsChangeSource.asObservable();\n this.execute = this.executeSource.asObservable();\n }\n /**\n * An internal method which is used by the Scheduler to publish unhandled navigation actions.\n *\n * @hidden\n */\n notifyAction(action) {\n this.actionSource.next(action);\n }\n /**\n * An internal method which is used by the Scheduler to publish the current set of items.\n *\n * @hidden\n */\n notifyItems(items) {\n this.itemsSource.next(items);\n }\n /**\n * An internal method which is used by the Scheduler to publish the currently selected date.\n *\n * @hidden\n */\n notifySelectedDate(date) {\n this.selectedDateSource.next(date);\n }\n /**\n * An internal method which is used by the Scheduler to notify that the size changed.\n *\n * @hidden\n */\n notifyResize() {\n this.resizeSource.next();\n }\n /**\n * An internal method which is used by the Scheduler to notify that the options changed.\n *\n * @hidden\n */\n notifyOptionsChange(changes) {\n this.optionsChangeSource.next(changes);\n }\n /**\n * An internal method which is used by the Scheduler to execute a view method.\n *\n * @hidden\n */\n executeMethod(name, args) {\n let result;\n this.executeSource.next({ name, args, result: (r) => {\n result = r;\n } });\n return result;\n }\n}\nViewContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nViewContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewContextService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewContextService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\nconst emptyDateRange = () => ({\n start: new Date(0),\n end: new Date(0),\n text: '',\n shortText: ''\n});\n/**\n * A service for publishing the view state and actions to the Scheduler.\n */\nclass ViewStateService {\n constructor() {\n this.dateRangeSource = new BehaviorSubject(emptyDateRange());\n this.nextDateSource = new Subject();\n this.navigateSource = new Subject();\n this.viewEventSource = new Subject();\n this.layoutEndSource = new Subject();\n this.optionsChangeSource = new Subject();\n this.slotSelectionStartSource = new Subject();\n this.slotSelectionStartDragSource = new Subject();\n this.slotSelectionStartEndSource = new Subject();\n this.dateRange = this.dateRangeSource.asObservable();\n this.nextDate = this.nextDateSource.asObservable();\n this.navigate = this.navigateSource.asObservable();\n this.viewEvent = this.viewEventSource.asObservable();\n this.layoutEnd = this.layoutEndSource.asObservable();\n this.optionsChange = this.optionsChangeSource.asObservable();\n this.slotSelectionStart = this.slotSelectionStartSource.asObservable();\n this.slotSelectionDrag = this.slotSelectionStartDragSource.asObservable();\n this.slotSelectionEnd = this.slotSelectionStartEndSource.asObservable();\n }\n /**\n * Publishes the date that will be displayed by the Scheduler\n * typically as a result from processing a navigation action.\n */\n notifyNextDate(date) {\n this.nextDateSource.next(date);\n }\n /**\n * Publishes the visible date range of the view.\n * The view will calculate and set the new data range when\n * the selected date changes.\n */\n notifyDateRange(range) {\n this.dateRangeSource.next(range);\n }\n /**\n * Notifies the Scheduler that the view has completed its layout.\n */\n notifyLayoutEnd() {\n this.layoutEndSource.next();\n }\n /**\n * Navigates to another view.\n */\n navigateTo(args) {\n this.navigateSource.next(args);\n }\n /**\n * Notifies the Scheduler that the view options have been changed.\n */\n notifyOptionsChange() {\n this.optionsChangeSource.next(null);\n }\n /**\n * Emits a DOM event to the Scheduler.\n */\n emitEvent(name, args) {\n this.viewEventSource.next({\n name: name,\n args: args\n });\n }\n /** @hidden */\n notifySlotSelectionStart(selection) {\n this.slotSelectionStartSource.next(selection);\n }\n /** @hidden */\n notifySlotSelectionDrag(selection) {\n this.slotSelectionStartDragSource.next(selection);\n }\n /** @hidden */\n notifySlotSelectionEnd(selection) {\n this.slotSelectionStartEndSource.next(selection);\n }\n}\nViewStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nViewStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewStateService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\nconst FIELD_REGEX$1 = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\ngetterCache['undefined'] = () => undefined;\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nfunction getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = [];\n field.replace(FIELD_REGEX$1, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst setterCache = {};\nsetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nfunction setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n setterCache[field] = function (obj, value) {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || {};\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n\n/**\n * @hidden\n */\nconst OCCURRENCE_ID = 0;\n\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst capitalize = (value) => value.charAt(0).toUpperCase() + value.slice(1);\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isTruthy = (value) => !!value;\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || (value.trim && value.trim().length === 0);\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isNumber = (value) => typeof value === \"number\" && !isNaN(value);\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isString = (value) => typeof value === 'string';\n/**\n * @hidden\n *\n * TODO: Move to @progress/kendo-common\n */\nconst isObject = (value) => typeof value === 'object';\n/**\n * @hidden\n */\nconst isRecurring = (event, fields) => {\n const recurrenceId = getter(fields.recurrenceId)(event);\n const recurrenceRule = getter(fields.recurrenceRule)(event);\n return !!(recurrenceRule || recurrenceId);\n};\n/**\n * @hidden\n */\nconst isException = (event, fields) => {\n const id = getter(fields.id)(event);\n const recurrenceId = getter(fields.recurrenceId)(event);\n return isPresent(id) && id !== OCCURRENCE_ID && isPresent(recurrenceId);\n};\n/**\n * @hidden\n */\nconst copyResources = (event, resources) => {\n if (resources) {\n for (let idx = 0; idx < resources.length; idx++) {\n assignField(event, event.dataItem, resources[idx].field);\n }\n }\n};\n/**\n * @hidden\n */\nconst readEvent = (dataItem, fields, resources) => {\n const result = {\n id: getter(fields.id)(dataItem),\n start: getter(fields.start)(dataItem),\n startTimezone: getter(fields.startTimezone)(dataItem),\n end: getter(fields.end)(dataItem),\n endTimezone: getter(fields.endTimezone)(dataItem),\n isAllDay: getter(fields.isAllDay)(dataItem),\n title: getter(fields.title)(dataItem),\n description: getter(fields.description)(dataItem),\n recurrenceRule: getter(fields.recurrenceRule)(dataItem),\n recurrenceExceptions: getter(fields.recurrenceExceptions)(dataItem),\n recurrenceId: getter(fields.recurrenceId)(dataItem),\n dataItem\n };\n copyResources(result, resources);\n return result;\n};\n/**\n * @hidden\n */\nconst isRecurrenceMaster$1 = (event) => event.recurrenceRule && !isPresent(event.recurrenceId);\n/**\n * @hidden\n */\nfunction groupResources(group, resources) {\n const result = [];\n if (group && group.resources && group.resources.length) {\n const groups = group.resources;\n for (let idx = 0; idx < groups.length; idx++) {\n const resource = resources.find(r => r.name === groups[idx]);\n result.push(resource);\n }\n }\n return result;\n}\n/**\n * @hidden\n */\nconst getField = (obj, field) => getter(field)(obj);\n/**\n * @hidden\n */\nconst setField = (obj, field, value) => setter(field)(obj, value);\n/**\n * @hidden\n */\nfunction assignField(target, source, field) {\n setField(target, field, getField(source, field));\n}\n/**\n * @hidden\n */\nfunction assignFields(target, source, ...fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n assignField(target, source, fields[idx]);\n }\n}\n/**\n * @hidden\n */\nfunction assignValues(target, source) {\n cloneTo(source, target);\n return target;\n}\n/**\n * @hidden\n */\nfunction cloneTo(obj, result) {\n for (let field in obj) {\n if (obj.hasOwnProperty(field)) {\n const value = obj[field];\n if (Array.isArray(value)) {\n result[field] = value.slice(0);\n }\n else if (value && typeof value === 'object' && !(value instanceof Date)) {\n result[field] = result[field] || {};\n cloneTo(value, result[field]);\n }\n else {\n result[field] = value;\n }\n }\n }\n}\n/**\n * @hidden\n */\nfunction clone(obj) {\n const result = {};\n cloneTo(obj, result);\n return result;\n}\n/** @hidden */\nconst iterator = getIterator();\n// TODO: Move to kendo-common\nfunction getIterator() {\n if (typeof Symbol === 'function' && Symbol.iterator) {\n return Symbol.iterator;\n }\n const keys = Object.getOwnPropertyNames(Map.prototype);\n const proto = Map.prototype;\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (key !== 'entries' && key !== 'size' && proto[key] === proto.entries) {\n return key;\n }\n }\n}\n/**\n * @hidden\n */\nfunction fromClick(element) {\n return fromEvent(element, 'click');\n}\n/**\n * @hidden\n */\nfunction fromDoubleClick(element) {\n const DBLCLICK_DELAY = 250;\n const clicks = fromClick(element);\n const endSequence = clicks.pipe(auditTime(DBLCLICK_DELAY));\n return clicks.pipe(buffer(endSequence), filter(sequence => sequence.length === 2), filter((sequence) => sequence[1].target === sequence[0].target), map(sequence => sequence[1]));\n}\n/**\n * @hidden\n */\nfunction sortTasksByTime(tasks) {\n tasks.sort((a, b) => (a.startTime - b.startTime) || (b.endTime - a.endTime));\n return tasks;\n}\n\n// const toSimilarDate = (date: ZonedDate): Date => new Date(\n// date.getFullYear(), date.getMonth(), date.getDay(),\n// date.getHours(), date.getMinutes(), date.getSeconds(),\n// date.getMilliseconds()\n// );\n// const toUTCDateTime = (localDate: Date): Date => new Date(Date.UTC(\n// localDate.getFullYear(),\n// localDate.getMonth(),\n// localDate.getDate(),\n// localDate.getHours(),\n// localDate.getMinutes(),\n// localDate.getSeconds(),\n// localDate.getMilliseconds()\n// ));\n/**\n * @hidden\n */\nclass EditService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n this.changedSource = new Subject();\n this.changed = this.changedSource.asObservable().pipe(debounceTime(0));\n }\n endEdit() {\n const formGroup = this.hasNewEvent ? this.newEventGroup.group : this.editedEvent.formGroup;\n this.changes.emit({ action: 'cancel', formGroup });\n }\n removeEvent(dataItem) {\n this.changes.emit({ action: 'remove', dataItem });\n }\n addEvent(formGroup) {\n this.newEventGroup = { formGroup };\n this.onChanged();\n }\n editEvent(dataItem, formGroup = undefined, mode) {\n this.editedEvent = { dataItem, formGroup, mode };\n this.onChanged();\n }\n close() {\n this.newEventGroup = this.editedEvent = null;\n this.onChanged();\n }\n save() {\n const { dataItem, formGroup } = this.context;\n this.changes.emit({\n action: 'save',\n dataItem,\n formGroup,\n isNew: this.hasNewEvent,\n mode: this.occurrenceEditMode\n });\n }\n isEditing() {\n return isPresent(this.context);\n }\n get occurrenceEditMode() {\n if (this.hasNewEvent) {\n return 2 /* Series */;\n }\n else {\n return this.editedEvent.mode || 0 /* Event */;\n }\n }\n get hasNewEvent() {\n return isPresent(this.newEventGroup);\n }\n get newEvent() {\n if (this.hasNewEvent) {\n return this.newEventGroup.group.value;\n }\n return {};\n }\n get context() {\n if (this.hasNewEvent) {\n return this.newEventGroup;\n }\n return this.editedEvent;\n }\n onChanged() {\n this.ngZone.runOutsideAngular(() => {\n this.changedSource.next();\n });\n }\n}\nEditService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nEditService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the template for the edit dialog of the Scheduler.\n * To define the template, nest an `` tag\n * with the `kendoSchedulerEditDialogTemplate` directive inside the `` tag.\n *\n * The template context is set to the current event and then the following additional fields are passed:\n * - `event`—The currently edited event. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-event`.\n * - `formGroup`—The current [`FormGroup`](https://angular.io/docs/ts/latest/api/forms/index/FormGroup-class.html).\n * - `editMode`—The current edit mode.\n * - `isNew`—The state of the current event.\n */\nclass EditDialogTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nEditDialogTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditDialogTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nEditDialogTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditDialogTemplateDirective, selector: \"[kendoSchedulerEditDialogTemplate]\", inputs: { autoFocusedElement: \"autoFocusedElement\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditDialogTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerEditDialogTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { autoFocusedElement: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalDataChangesService {\n constructor() {\n this.changes = new EventEmitter();\n }\n}\nLocalDataChangesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocalDataChangesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass DomEventsService {\n constructor() {\n this.focus = new EventEmitter();\n this.focusIn = new EventEmitter();\n this.focusOut = new EventEmitter();\n this.click = new EventEmitter();\n this.keydown = new EventEmitter();\n this.windowBlur = new EventEmitter();\n }\n}\nDomEventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDomEventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FocusService {\n constructor(renderer, wrapper, domEvents) {\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.domEvents = domEvents;\n this.items = new Set();\n this.elementMap = new WeakMap();\n this.subs = new Subscription();\n this.subs.add(this.domEvents.focus.subscribe(e => this.onFocusIn(e)));\n this.subs.add(this.domEvents.focusOut.subscribe(() => this.onFocusOut()));\n }\n get activeElement() {\n if (this.activeItem) {\n return this.activeItem.element;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n register(item) {\n if (!this.activeItem) {\n this.activeItem = item;\n item.toggle(true);\n }\n this.items.add(item);\n this.elementMap.set(item.element.nativeElement, item);\n this.toggleWrapper();\n }\n unregister(item) {\n this.items.delete(item);\n this.elementMap.delete(item.element.nativeElement);\n if (item === this.activeItem) {\n this.activateNext();\n }\n this.toggleWrapper();\n }\n focus() {\n if (this.activeItem) {\n this.activeItem.focus();\n }\n else {\n this.wrapper.nativeElement.focus();\n }\n }\n focusNext(options) {\n const currentItem = this.activeItem;\n this.activateNext(options);\n if (this.activeItem) {\n this.activeItem.focus();\n }\n return this.activeItem !== currentItem;\n }\n activate(next) {\n this.items.forEach(item => item.toggle(item === next));\n this.activeItem = next;\n }\n activateNext(position) {\n this.activeItem = this.findNext(position);\n }\n findNext(position) {\n const { offset, nowrap } = Object.assign({ nowrap: false, offset: 1 }, position);\n const items = Array.from(this.items.values())\n .filter(item => item.canFocus())\n .sort((a, b) => a.focusIndex - b.focusIndex);\n if (items.length === 0) {\n return null;\n }\n if (!this.activeItem) {\n return nowrap ? null : items[0];\n }\n const index = items.indexOf(this.activeItem);\n let nextIndex = index + offset;\n if (nowrap) {\n nextIndex = Math.max(0, Math.min(items.length - 1, nextIndex));\n }\n else {\n nextIndex = nextIndex % items.length;\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n }\n return items[nextIndex];\n }\n toggleWrapper() {\n if (this.wrapper) {\n this.renderer.setAttribute(this.wrapper.nativeElement, 'tabindex', this.activeItem ? '-1' : '0');\n }\n }\n onFocusIn(e) {\n const item = this.elementMap.get(e.target);\n if (!item || item === this.focusedItem) {\n return;\n }\n if (this.focusedItem) {\n this.focusedItem.toggleFocus(false);\n }\n this.activate(item);\n item.toggleFocus(true);\n this.focusedItem = item;\n }\n onFocusOut() {\n if (!this.focusedItem) {\n return;\n }\n this.focusedItem.toggleFocus(false);\n this.focusedItem = null;\n }\n}\nFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, deps: [{ token: i0.Renderer2, optional: true }, { token: i0.ElementRef, optional: true }, { token: DomEventsService }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.Renderer2, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef, decorators: [{\n type: Optional\n }] }, { type: DomEventsService }]; } });\n\n/**\n * @hidden\n */\nclass DialogsService {\n constructor(dialogService, localization, changeDetector, focusService, viewState) {\n this.dialogService = dialogService;\n this.localization = localization;\n this.changeDetector = changeDetector;\n this.focusService = focusService;\n this.viewState = viewState;\n this.isOpen = false;\n }\n openRemoveConfirmationDialog() {\n const dialog = this.dialogService.open({\n title: this.textFor('deleteDialogTitle'),\n content: this.textFor('deleteConfirmation'),\n actions: [\n { text: this.textFor('cancel'), value: false },\n { text: this.textFor('destroy'), value: true }\n ],\n appendTo: this.container,\n autoFocusedElement: 'button:nth-child(2)'\n });\n this.isOpen = true;\n this.changeDetector.markForCheck();\n return dialog.result.pipe(map((result) => {\n this.isOpen = false;\n if (result instanceof DialogCloseResult) {\n this.focusService.focus();\n return false;\n }\n this.viewState.layoutEnd.pipe(take(1)).subscribe(() => this.focusService.focus());\n const res = result;\n return res.value;\n }));\n }\n openRecurringConfirmationDialog(operation) {\n const dialog = this.dialogService.open({\n actions: [\n {\n text: operation === 0 /* Edit */ ? this.textFor('editOccurrence') : this.textFor('deleteOccurrence'),\n value: 1 /* Occurrence */\n },\n {\n text: operation === 0 /* Edit */ ? this.textFor('editSeries') : this.textFor('deleteSeries'),\n value: 2 /* Series */\n }\n ],\n appendTo: this.container,\n autoFocusedElement: 'button:nth-child(1)',\n content: operation === 0 /* Edit */ ? this.textFor('editRecurringConfirmation') : this.textFor('deleteRecurringConfirmation'),\n title: operation === 0 /* Edit */ ? this.textFor('editRecurringDialogTitle') : this.textFor('deleteRecurringDialogTitle')\n });\n this.isOpen = true;\n this.changeDetector.markForCheck();\n return dialog.result.pipe(map((result) => {\n this.isOpen = false;\n this.focusService.focus();\n if (result instanceof DialogCloseResult) {\n return undefined;\n }\n const res = result;\n return res.value;\n }));\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nDialogsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsService, deps: [{ token: i1.DialogService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: FocusService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Injectable });\nDialogsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: FocusService }, { type: ViewStateService }]; } });\n\n/**\n * @hidden\n */\nclass SchedulerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n}\nSchedulerLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1$1.MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nSchedulerLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1$1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * @hidden\n */\nconst defaultModelFields = {\n id: 'id',\n start: 'start',\n startTimezone: 'startTimezone',\n end: 'end',\n endTimezone: 'endTimezone',\n isAllDay: 'isAllDay',\n title: 'title',\n description: 'description',\n recurrenceRule: 'recurrenceRule',\n recurrenceId: 'recurrenceId',\n recurrenceExceptions: 'recurrenceExceptions'\n};\n\n/**\n * @hidden\n */\nclass PDFService {\n constructor() {\n this.createElement = new EventEmitter();\n this.exportClick = new EventEmitter();\n this.done = new EventEmitter();\n this.elementReady = new EventEmitter();\n }\n save() {\n if (!hasObservers(this.elementReady)) {\n if (isDevMode()) {\n throw new Error('Creating PDF requires including the PDFModule and adding the component.');\n }\n return;\n }\n if (!hasObservers(this.createElement)) {\n if (isDevMode()) {\n throw new Error('No active Scheduler view to export.');\n }\n return;\n }\n this.createElement.emit();\n }\n}\nPDFService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPDFService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The arguments for the `pdfExport` event.\n */\nclass PDFExportEvent extends PreventableEvent {\n}\n\n/**\n * @hidden\n */\nclass LoadingComponent {\n constructor(element, renderer) {\n this.element = element;\n this.renderer = renderer;\n this.hostClasses = true;\n }\n get display() {\n return this.loading || this.force ? 'block' : 'none';\n }\n toggle(value) {\n this.force = value;\n this.renderer.setStyle(this.element.nativeElement, 'display', this.display);\n }\n}\nLoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nLoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingComponent, selector: \"[kendoSchedulerLoading]\", inputs: { loading: \"loading\" }, host: { properties: { \"class.k-loading-mask\": \"this.hostClasses\", \"style.display\": \"this.display\" } }, ngImport: i0, template: `\n
    \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerLoading]',\n template: `\n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-loading-mask']\n }], loading: [{\n type: Input\n }], display: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\n/**\n * @hidden\n */\nclass FocusableDirective {\n constructor(element, renderer, focusService) {\n this.element = element;\n this.renderer = renderer;\n this.focusService = focusService;\n /**\n * The order of the element with respect to the other focusable elements.\n * If multiple elements share the same value, their relative to each other order follows their position in the component tree.\n */\n this.focusIndex = 0;\n this.toggle(false);\n this.focusService.register(this);\n }\n get visible() {\n return this.element.nativeElement.style.display !== 'none';\n }\n get enabled() {\n return !this.element.nativeElement.disabled;\n }\n ngOnDestroy() {\n this.focusService.unregister(this);\n }\n toggle(active) {\n if (active !== this.active) {\n const index = active ? '0' : '-1';\n this.renderer.setAttribute(this.element.nativeElement, 'tabIndex', index);\n this.active = active;\n }\n }\n canFocus() {\n return this.visible && this.enabled;\n }\n focus() {\n this.element.nativeElement.focus();\n }\n toggleFocus(value) {\n const focusedClass = 'k-state-selected';\n const element = this.element.nativeElement;\n if (value) {\n this.renderer.addClass(element, focusedClass);\n }\n else {\n this.renderer.removeClass(element, focusedClass);\n }\n this.renderer.setAttribute(element, 'aria-selected', value.toString());\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: FocusService }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoSchedulerFocusIndex]\", inputs: { focusIndex: [\"kendoSchedulerFocusIndex\", \"focusIndex\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerFocusIndex]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: FocusService }]; }, propDecorators: { focusIndex: [{\n type: Input,\n args: ['kendoSchedulerFocusIndex']\n }] } });\n\n// TODO: Move to @progress/kendo-common\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst firstElementChild = (node) => {\n const children = node.children;\n const length = children.length;\n for (let idx = 0; idx < length; idx++) {\n if (children[idx].nodeType === 1) {\n return children[idx];\n }\n }\n};\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst wheelDeltaY = (e) => {\n const deltaY = e.wheelDeltaY;\n if (e.wheelDelta && (deltaY === undefined || deltaY)) {\n return e.wheelDelta;\n }\n else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n return (-e.detail) * 10;\n }\n return 0;\n};\n/**\n * @hidden\n */\nconst preventLockedScroll = el => event => {\n const delta = wheelDeltaY(event);\n const scrollTop = el.scrollTop;\n const allowScroll = (scrollTop === 0 && 0 < delta) || (el.scrollHeight <= el.offsetHeight + scrollTop && delta < 0);\n if (!allowScroll) {\n event.preventDefault();\n }\n};\nlet cachedScrollbarWidth = 0;\n/**\n * @hidden\n */\nfunction scrollbarWidth() {\n if (!cachedScrollbarWidth && isDocumentAvailable()) {\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return cachedScrollbarWidth;\n}\n/**\n * @hidden\n */\nfunction hasScrollbar(element, type) {\n const sizeField = type === 'vertical' ? 'Height' : 'Width';\n return element[`scroll${sizeField}`] > element[`client${sizeField}`];\n}\n/**\n * @hidden\n */\nfunction rtlScrollPosition(element, position) {\n const initial = element.scrollLeft;\n let result = position;\n element.scrollLeft = -1;\n if (element.scrollLeft < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n\n/** @hidden */\nconst intersects = (startTime, endTime, periodStart, periodEnd) => (startTime < periodStart && endTime > periodEnd) ||\n (periodStart <= startTime && startTime < periodEnd) ||\n (periodStart < endTime && endTime <= periodEnd && startTime < endTime);\n/** @hidden */\nconst dateInRange = (date, start, end) => start.getTime() <= date.getTime() && date.getTime() <= end.getTime();\n/** @hidden */\nconst roundAllDayEnd = ({ start, end }) => {\n const startDate = start.stripTime();\n const endDate = end.stripTime();\n return endDate.getTime() !== end.getTime() || startDate.getTime() === endDate.getTime() ? endDate.addDays(1) : endDate;\n};\n/** @hidden */\nfunction toInvariantTime(date) {\n var staticDate = new Date(1980, 0, 1, 0, 0, 0);\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n return staticDate;\n}\n/**\n * @hidden\n * TODO Move to date-math\n */\nconst addUTCDays = (date, offset) => {\n const newDate = new Date(date.getTime());\n newDate.setUTCDate(newDate.getUTCDate() + offset);\n return newDate;\n};\n/**\n * @hidden\n */\nfunction timeOnDate(date, hours = 0, minutes = 0, seconds = 0, ms = 0) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, ms);\n}\n// TODO: name? move to date-math\n/** @hidden */\nfunction toUTCTime(localDate, localTime) {\n return new Date(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), localTime.getHours(), localTime.getMinutes(), localTime.getSeconds(), localTime.getMilliseconds()));\n}\n// TODO: move to date-math\n/** @hidden */\nfunction toUTCDate(localDate) {\n return new Date(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate()));\n}\n// TODO: move to date-math\n/** @hidden */\nfunction getUTCDate(utcDate) {\n return new Date(Date.UTC(utcDate.getUTCFullYear(), utcDate.getUTCMonth(), utcDate.getUTCDate()));\n}\n// TODO: move to date-math\n/** @hidden */\nfunction toUTCDateTime(localDate) {\n return new Date(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), localDate.getHours(), localDate.getMinutes(), localDate.getSeconds(), localDate.getMilliseconds()));\n}\n/** @hidden */\nfunction dateWithTime(target, time) {\n return new Date(target.getFullYear(), target.getMonth(), target.getDate(), time.getHours(), time.getMinutes());\n}\n/**\n * @hidden\n * Flips the start and end values of a slot selection based on whether\n * the last dragged-over slot is before or after the slot where the selection began.\n */\nfunction normaliseRangeStartAndEnd(selectionOrigin, currentSlot) {\n let start;\n let end;\n if (currentSlot.end <= selectionOrigin.end) {\n end = selectionOrigin.end;\n start = currentSlot.start;\n }\n else {\n start = selectionOrigin.start;\n end = currentSlot.end;\n }\n return { start, end };\n}\nfunction getDataIdx(value, resource) {\n const data = resource.data;\n for (let dataIdx = 0; dataIdx < data.length; dataIdx++) {\n if (getField(data[dataIdx], resource.valueField) === value) {\n return dataIdx;\n }\n }\n return -1;\n}\nfunction resourceItem(value, resource) {\n const index = getDataIdx(value, resource);\n return index >= 0 ? resource.data[index] : {};\n}\nfunction resourceItems(values, resource) {\n return values.map(value => resourceItem(value, resource));\n}\nfunction cloneResources(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n const clone = Object.assign({}, arr[idx]);\n clone.resources = clone.resources.slice(0);\n result.push(clone);\n }\n return result;\n}\n/** @hidden */\nfunction resourceItemByValue(event, resource) {\n const value = getField(event, resource.field);\n if (Array.isArray(value)) {\n return resourceItems(value, resource);\n }\n return resourceItem(value, resource);\n}\nfunction addNotGroupedResources(event, resources, allResources) {\n for (let resourceIdx = 0; resourceIdx < resources.length; resourceIdx++) {\n const current = resources[resourceIdx];\n for (let idx = 0; idx < allResources.length; idx++) {\n const item = allResources[idx];\n if (!current.resources[idx] && item.data) {\n current.resources[idx] = resourceItemByValue(event, item);\n }\n }\n }\n}\n/** @hidden */\nfunction eventResources(event, { taskResources, hasGroups, spans, allResources = [] }) {\n let resources = [];\n for (let resourceIdx = 0; resourceIdx < taskResources.length; resourceIdx++) {\n const resource = taskResources[resourceIdx];\n if (!resource.data) {\n resources = [{ leafIdx: 0, resources: [] }];\n continue;\n }\n const resourceIndex = allResources.indexOf(resource);\n let values = getField(event, resource.field);\n if (!Array.isArray(values)) {\n values = [values];\n }\n const expandedResources = [];\n for (let valueIdx = 0; valueIdx < values.length; valueIdx++) {\n const dataIdx = getDataIdx(values[valueIdx], resource);\n if (dataIdx < 0) {\n if (hasGroups) {\n // No match for this resource, but the event might still match other resources.\n continue;\n }\n return [{ leafIdx: 0, resources: [] }];\n }\n const item = resource.data[dataIdx];\n // has groups - need all copies of the multiple resource\n // no groups - just the first\n if (resourceIdx === 0 && (hasGroups || valueIdx === 0)) {\n const resourceItems = [];\n resourceItems[resourceIndex] = resource.multiple && !hasGroups ? [item] : item;\n resources.push({\n leafIdx: hasGroups ? dataIdx * spans[resourceIdx] : 0,\n color: getField(item, resource.colorField),\n resources: resourceItems\n });\n }\n else if (hasGroups) { // don't create multiple resource groups if no groups for multiple resources\n let currentResources = resources;\n if (values.length > 1) {\n currentResources = cloneResources(resources);\n expandedResources.push.apply(expandedResources, currentResources);\n }\n for (let currentIdx = 0; currentIdx < currentResources.length; currentIdx++) {\n currentResources[currentIdx].leafIdx += dataIdx * spans[resourceIdx];\n currentResources[currentIdx].resources[resourceIndex] = item;\n }\n }\n else if (valueIdx > 0) {\n for (let idx = 0; idx < resources.length; idx++) {\n resources[idx].resources[resourceIndex].push(item);\n }\n }\n }\n if (expandedResources.length) {\n resources = expandedResources;\n }\n }\n addNotGroupedResources(event, resources, allResources);\n return resources;\n}\n/** @hidden */\nfunction assignTasksResources(tasks, options) {\n for (let idx = 0; idx < tasks.length; idx++) {\n const task = tasks[idx];\n task.resources = eventResources(task.event, options);\n }\n}\n/**\n * @hidden\n */\nfunction isEmptyResource(resources) {\n return Array.isArray(resources) && resources.length === 1 && resources[0] === undefined;\n}\n/**\n * @hidden\n */\nfunction resourcesMatch(res1, res2) {\n if (res1.length !== res2.length) {\n return false;\n }\n if (isEmptyResource(res1) && isEmptyResource(res2)) {\n return true;\n }\n return res1.every(r1 => res2.some(r2 => r2.value === r1.value));\n}\n/**\n * @hidden\n */\nfunction isSameRange(range1, range2) {\n return (range1.start.getTime() === range2.start.getTime() &&\n range1.end.getTime() === range2.end.getTime() &&\n range1.isAllDay === range2.isAllDay &&\n resourcesMatch(range1.resources, range2.resources));\n}\n/** @hidden */\nfunction findRowIndex(events, data) {\n if (data.rowIndex !== undefined) {\n return data.rowIndex;\n }\n for (let idx = 0; idx < events.length; idx++) {\n if (!events[idx]) {\n return idx;\n }\n }\n return events.length;\n}\n/** @hidden */\nfunction isRecurrence(task) {\n return Boolean(task.event && task.event.recurrenceRule);\n}\n/** @hidden */\nfunction isRecurrenceException(task) {\n return task.event && isPresent(task.event.recurrenceId) && !task.event.recurrenceRule;\n}\n/** @hidden */\nconst rectContains = (rect, left, top) => rect.left <= left && left <= rect.left + rect.width && rect.top <= top && top <= rect.top + rect.height;\n/** @hidden */\nconst rectContainsX = (rect, left) => rect.left <= left && left <= rect.left + rect.width;\n/** @hidden */\nconst toPx = value => `${value}px`;\n/** @hidden */\nconst elementOffset = (element) => {\n if (!element) {\n return null;\n }\n const box = element.getBoundingClientRect();\n const documentElement = document.documentElement;\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n};\n/** @hidden */\nconst pointDistance = (x1, y1, x2, y2) => Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n/** @hidden */\nconst ignoreContentChild = child => child.nodeName === 'KENDO-RESIZE-SENSOR' || hasClasses(child, 'k-loading-mask');\n/** @hidden */\nconst setCoordinates = (element, coordinates) => {\n for (let field in coordinates) {\n if (coordinates.hasOwnProperty(field)) {\n element.style[field] = toPx(coordinates[field]);\n }\n }\n};\n/** @hidden */\nconst convertNgClassBindings = (bindingValues) => {\n const result = [];\n if (isString(bindingValues)) {\n result.push(bindingValues);\n }\n else if (isArray(bindingValues)) {\n result.push.apply(result, bindingValues);\n }\n else if (isObject(bindingValues)) {\n for (let field in bindingValues) {\n if (bindingValues.hasOwnProperty(field) && bindingValues[field]) {\n result.push(field);\n }\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nfunction formatEventTime(start, end, isAllDay, localeId) {\n const startTimeFormat = { skeleton: 'yMMMMEEEEdhm' };\n const startDateFormat = { skeleton: 'yMMMMEEEEd' };\n const endFormat = isEqualDate(start, end) ? 't' : startTimeFormat;\n return isAllDay ?\n `${formatDate(start, startDateFormat, localeId)}` :\n `${formatDate(start, startTimeFormat, localeId)}–${formatDate(end, endFormat, localeId)}`;\n}\n/**\n * @hidden\n */\nfunction formValueOrDefault(group, field, defaultValue) {\n const control = group.get(field);\n if (!control) {\n return defaultValue;\n }\n return control.value || defaultValue;\n}\n/**\n * @hidden\n */\nconst isWorkWeekDay = (day, start, end) => {\n if (end < start) {\n return day <= end || start <= day;\n }\n return start <= day && day <= end;\n};\n/**\n * @hidden\n */\nconst alwaysFalse = () => false;\n\n/**\n * A toolbar component which contains the controls for date navigation\n * ([see example]({% slug toolbar_scheduler %}#toc-including-the-built-in-components)).\n *\n * To render the **Previous**, **Today**, **Next**, and **Date picker**\n * buttons, include the component in the\n * [toolbar template]({% slug api_scheduler_toolbartemplatedirective %}).\n *\n * {% meta height:700 %}\n * {% embed_file toolbar/template/app.component.ts preview %}\n * {% embed_file toolbar/template/my-navigation.component.ts %}\n * {% embed_file toolbar/template/app.module.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass ToolbarNavigationComponent {\n constructor(popupService, toolbarService, localization, cd) {\n this.popupService = popupService;\n this.toolbarService = toolbarService;\n this.localization = localization;\n /**\n * @hidden\n * TODO: Drop in next MAJOR version\n */\n this.inlineDisplayStyle = 'flex';\n /**\n * @hidden\n * TODO: Drop in next MAJOR version\n */\n this.inlineFlexFlowStyle = 'inherit';\n /**\n * @hidden\n * TODO: Drop in next MAJOR version\n */\n this.inlineGapStyle = 'inherit';\n this.subs = this.localization.changes.subscribe(() => {\n cd.markForCheck();\n });\n }\n set calendar(calendar) {\n if (calendar) {\n calendar.focus();\n }\n }\n /**\n * @hidden\n */\n get todayText() {\n return this.localization.get('today');\n }\n /**\n * @hidden\n */\n get calendarTodayText() {\n return this.localization.get('calendarToday');\n }\n /**\n * @hidden\n */\n get nextText() {\n return this.localization.get('nextTitle');\n }\n /**\n * @hidden\n */\n get previousText() {\n return this.localization.get('previousTitle');\n }\n /**\n * @hidden\n */\n get ctx() {\n return this.toolbarService.context;\n }\n /**\n * @hidden\n */\n onBlur() {\n this.closePopup();\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n this.closePopup();\n }\n /**\n * @hidden\n */\n toggleSelectedDate(anchor, template) {\n if (this.popupRef) {\n this.closePopup();\n }\n else {\n const popupSettings = {\n anchor: anchor,\n content: template\n };\n if (this.localization.rtl) {\n popupSettings.popupClass = 'k-rtl';\n }\n this.popupRef = this.popupService.open(popupSettings);\n }\n return false;\n }\n /**\n * @hidden\n */\n selectDate(value) {\n this.closePopup();\n this.toolbarService.navigate({\n type: 'select-date',\n date: value\n });\n }\n /**\n * @hidden\n */\n prevClick() {\n this.toolbarService.navigate({\n type: 'prev'\n });\n return false;\n }\n /**\n * @hidden\n */\n nextClick() {\n this.toolbarService.navigate({\n type: 'next'\n });\n return false;\n }\n /**\n * @hidden\n */\n todayClick() {\n this.toolbarService.navigate({\n type: 'today'\n });\n return false;\n }\n closePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n}\nToolbarNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarNavigationComponent, deps: [{ token: i1$2.PopupService }, { token: ToolbarService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nToolbarNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarNavigationComponent, selector: \"[kendoSchedulerToolbarNavigation]\", inputs: { min: \"min\", max: \"max\" }, host: { properties: { \"style.display\": \"this.inlineDisplayStyle\", \"style.flex-flow\": \"this.inlineFlexFlowStyle\", \"style.gap\": \"this.inlineGapStyle\" } }, providers: [\n PopupService\n ], viewQueries: [{ propertyName: \"calendar\", first: true, predicate: [\"calendar\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n\n \n \n {{ (ctx.dateRange | async)?.shortText }}\n {{ (ctx.dateRange | async)?.text }}\n \n\n \n \n \n \n \n \n `, isInline: true, components: [{ type: i4.CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: i4.CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }], directives: [{ type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }], pipes: { \"async\": i10.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarNavigationComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerToolbarNavigation]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PopupService\n ],\n template: `\n \n \n \n \n \n\n \n \n {{ (ctx.dateRange | async)?.shortText }}\n {{ (ctx.dateRange | async)?.text }}\n \n\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$2.PopupService }, { type: ToolbarService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { calendar: [{\n type: ViewChild,\n args: ['calendar', { static: false }]\n }], inlineDisplayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], inlineFlexFlowStyle: [{\n type: HostBinding,\n args: ['style.flex-flow']\n }], inlineGapStyle: [{\n type: HostBinding,\n args: ['style.gap']\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }] } });\n\n/**\n * A toolbar component which contains the controls for switching the views\n * ([see example]({% slug toolbar_scheduler %}#toc-including-the-built-in-components)).\n *\n * To render the view-selection buttons, include the component in the\n * [toolbar template]({% slug api_scheduler_toolbartemplatedirective %}).\n *\n * {% meta height:700 %}\n * {% embed_file toolbar/template/app.component.ts preview %}\n * {% embed_file toolbar/template/my-navigation.component.ts %}\n * {% embed_file toolbar/template/app.module.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass ToolbarViewSelectorComponent {\n constructor(service) {\n this.service = service;\n /**\n * @hidden\n */\n this.hostClasses = true;\n }\n /**\n * @hidden\n */\n get ctx() {\n return this.service.context;\n }\n ngOnDestroy() {\n if (this.detachDomEvents) {\n this.detachDomEvents();\n }\n }\n /**\n * @hidden\n */\n select(view) {\n if (this.ctx.selectedView !== view) {\n this.service.navigate({\n type: 'view-change',\n view: view\n });\n }\n }\n /**\n * @hidden\n */\n onChange(e) {\n const view = this.ctx.views.find(view => view.name === e.target.value);\n if (view) {\n this.select(view);\n }\n }\n /**\n * @hidden\n */\n isSelected(view) {\n return this.ctx.selectedView === view;\n }\n}\nToolbarViewSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarViewSelectorComponent, deps: [{ token: ToolbarService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarViewSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarViewSelectorComponent, selector: \"[kendoSchedulerToolbarViewSelector]\", host: { properties: { \"class.k-scheduler-views-wrapper\": \"this.hostClasses\" } }, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarViewSelectorComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerToolbarViewSelector]',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ToolbarService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-scheduler-views-wrapper']\n }] } });\n\n/**\n * @hidden\n */\nclass ToolbarComponent {\n constructor(service) {\n this.service = service;\n this.hostClasses = true;\n this.navigate = new EventEmitter();\n // The template context is the same as the service context,\n // but with resolved values instead of observables.\n this.templateContext = {};\n this.subs = new Subscription();\n this.subs.add(service.action.subscribe(action => this.navigate.next(action)));\n }\n ngOnInit() {\n this.subs.add(this.selectedDate.subscribe(date => this.templateContext.selectedDate = date));\n this.subs.add(this.dateRange.subscribe(dateRange => this.templateContext.dateRange = dateRange));\n }\n ngOnChanges() {\n this.service.context = {\n dateRange: this.dateRange,\n selectedDate: this.selectedDate,\n views: this.views,\n selectedView: this.selectedView\n };\n Object.assign(this.templateContext, {\n views: this.views,\n selectedView: this.selectedView\n // The dateRange and selectedDate context fields\n // are updated through the subscriptions added in ngOnInit.\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n}\nToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, deps: [{ token: ToolbarService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarComponent, selector: \"kendo-scheduler-toolbar\", inputs: { selectedView: \"selectedView\", views: \"views\", dateRange: \"dateRange\", selectedDate: \"selectedDate\", template: \"template\", min: \"min\", max: \"max\" }, outputs: { navigate: \"navigate\" }, host: { properties: { \"class.k-scheduler-toolbar\": \"this.hostClasses\", \"class.k-toolbar\": \"this.hostClasses\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n\n \n
    \n \n
    \n
    \n `, isInline: true, components: [{ type: ToolbarNavigationComponent, selector: \"[kendoSchedulerToolbarNavigation]\", inputs: [\"min\", \"max\"] }, { type: ToolbarViewSelectorComponent, selector: \"[kendoSchedulerToolbarViewSelector]\" }], directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-scheduler-toolbar',\n template: `\n \n
    \n\n \n
    \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: ToolbarService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-scheduler-toolbar']\n }, {\n type: HostBinding,\n args: ['class.k-toolbar']\n }], selectedView: [{\n type: Input\n }], views: [{\n type: Input\n }], dateRange: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], template: [{\n type: Input\n }], navigate: [{\n type: Output\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ResourceEditorBase {\n constructor() {\n this.valueChange = new EventEmitter();\n this.getField = getField;\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n this.resourceValue = newValue;\n }\n getResourceStyle(dataItem) {\n return {\n 'background-color': getField(dataItem, this.resource.colorField),\n 'margin-right': isPresent(getField(dataItem, this.resource.valueField)) ? '8px' : '4px'\n };\n }\n onResourceValueChange(newValue) {\n this.resourceValue = newValue;\n this.emitChange(this.resourceValue);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n}\nResourceEditorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResourceEditorBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nResourceEditorBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResourceEditorBase, inputs: { resource: \"resource\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResourceEditorBase, decorators: [{\n type: Directive\n }], propDecorators: { resource: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nconst MULTIPLE_RESOURCE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultipleResourceEditorComponent)\n};\n/**\n * @hidden\n */\nclass MultipleResourceEditorComponent extends ResourceEditorBase {\n getTagStyle(dataItem) {\n return {\n 'background-color': dataItem[this.resource.colorField]\n };\n }\n focus() {\n this.resourceMultiSelect.focus();\n }\n}\nMultipleResourceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultipleResourceEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMultipleResourceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultipleResourceEditorComponent, selector: \"kendo-multiple-resource-editor\", providers: [\n MULTIPLE_RESOURCE_VALUE_ACCESSOR\n ], viewQueries: [{ propertyName: \"resourceMultiSelect\", first: true, predicate: [\"resourceMultiSelect\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n `, isInline: true, components: [{ type: i1$3.MultiSelectComponent, selector: \"kendo-multiselect\", inputs: [\"focusableId\", \"autoClose\", \"loading\", \"data\", \"value\", \"valueField\", \"textField\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"placeholder\", \"disabled\", \"itemDisabled\", \"checkboxes\", \"readonly\", \"filterable\", \"virtual\", \"popupSettings\", \"listHeight\", \"valuePrimitive\", \"clearButton\", \"tagMapper\", \"allowCustom\", \"valueNormalizer\"], outputs: [\"filterChange\", \"valueChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\", \"removeTag\"], exportAs: [\"kendoMultiSelect\"] }], directives: [{ type: i1$3.ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\" }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1$3.TagTemplateDirective, selector: \"[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultipleResourceEditorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n MULTIPLE_RESOURCE_VALUE_ACCESSOR\n ],\n selector: 'kendo-multiple-resource-editor',\n template: `\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n `\n }]\n }], propDecorators: { resourceMultiSelect: [{\n type: ViewChild,\n args: ['resourceMultiSelect', { static: true }]\n }] } });\n\n/**\n * @hidden\n */\nconst SINGLE_RESOURCE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SingleResourceEditorComponent)\n};\n/**\n * @hidden\n */\nclass SingleResourceEditorComponent extends ResourceEditorBase {\n focus() {\n this.resourceDropDown.focus();\n }\n}\nSingleResourceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SingleResourceEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSingleResourceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SingleResourceEditorComponent, selector: \"kendo-single-resource-editor\", providers: [\n SINGLE_RESOURCE_VALUE_ACCESSOR\n ], viewQueries: [{ propertyName: \"resourceDropDown\", first: true, predicate: [\"resourceDropDown\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i1$3.ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\" }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SingleResourceEditorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n SINGLE_RESOURCE_VALUE_ACCESSOR\n ],\n selector: 'kendo-single-resource-editor',\n template: `\n \n \n \n {{ getField(dataItem, resource.textField) }}\n \n \n `\n }]\n }], propDecorators: { resourceDropDown: [{\n type: ViewChild,\n args: ['resourceDropDown', { static: true }]\n }] } });\n\n// eslint-disable no-bitwise\n/**\n * @hidden\n */\nvar Modifiers;\n(function (Modifiers) {\n Modifiers[Modifiers[\"None\"] = 0] = \"None\";\n Modifiers[Modifiers[\"AltKey\"] = 1] = \"AltKey\";\n Modifiers[Modifiers[\"CtrlKey\"] = 2] = \"CtrlKey\";\n Modifiers[Modifiers[\"ShiftKey\"] = 4] = \"ShiftKey\";\n Modifiers[Modifiers[\"MetaKey\"] = 8] = \"MetaKey\";\n})(Modifiers || (Modifiers = {}));\n/**\n * @hidden\n */\nfunction withModifiers(e, modifiers) {\n return e.altKey === ((modifiers & Modifiers.AltKey) === Modifiers.AltKey) &&\n e.ctrlKey === ((modifiers & Modifiers.CtrlKey) === Modifiers.CtrlKey) &&\n e.shiftKey === ((modifiers & Modifiers.ShiftKey) === Modifiers.ShiftKey) &&\n e.metaKey === ((modifiers & Modifiers.MetaKey) === Modifiers.MetaKey);\n}\n/**\n * @hidden\n */\nfunction noModifiers(e) {\n return withModifiers(e, Modifiers.None);\n}\n\n/**\n * @hidden\n */\nconst SCHEDULER_DATETIMEPICKER_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SchedulerDateTimePickerComponent)\n};\n/**\n * @hidden\n */\nclass SchedulerDateTimePickerComponent {\n constructor() {\n this.valueChange = new EventEmitter();\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n }\n writeValue(newDate) {\n if (newDate instanceof Date) {\n this.date = newDate;\n }\n }\n onValueChange(newValue) {\n this.onChangeCallback(newValue);\n this.valueChange.emit(newValue);\n }\n /**\n * @hidden\n */\n focus() {\n this.datePicker.focus();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n}\nSchedulerDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerDateTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSchedulerDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SchedulerDateTimePickerComponent, selector: \"kendo-scheduler-datetime-picker\", inputs: { isAllDay: \"isAllDay\" }, outputs: { valueChange: \"valueChange\" }, providers: [\n SCHEDULER_DATETIMEPICKER_VALUE_ACCESSOR\n ], viewQueries: [{ propertyName: \"datePicker\", first: true, predicate: [\"datepicker\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n `, isInline: true, styles: [\"\\n kendo-datepicker,\\n kendo-timepicker {\\n width: 170px;\\n }\\n \"], components: [{ type: i4.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }, { type: i4.TimePickerComponent, selector: \"kendo-timepicker\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"readOnlyInput\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"incompleteDateValidation\", \"cancelButton\", \"nowButton\", \"steps\", \"popupSettings\", \"tabindex\", \"tabIndex\", \"title\", \"rangeValidation\", \"value\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-timepicker\"] }], directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerDateTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n SCHEDULER_DATETIMEPICKER_VALUE_ACCESSOR\n ],\n selector: 'kendo-scheduler-datetime-picker',\n template: `\n \n \n `,\n styles: [`\n kendo-datepicker,\n kendo-timepicker {\n width: 170px;\n }\n `]\n }]\n }], propDecorators: { datePicker: [{\n type: ViewChild,\n args: ['datepicker', { static: true }]\n }], isAllDay: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nconst TIME_ZONE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeZoneEditorComponent)\n};\n/**\n * Represents the Kendo UI TimeZone Editor component for Angular.\n * `TimeZoneEditorComponent` displays the currently loaded timezones.\n * Used for editing the `start` and `end` timezones of the `SchedulerEvent` objects.\n */\nclass TimeZoneEditorComponent {\n constructor() {\n /**\n * Specifies the width of the ComboBox which contains the names of the timezones.\n */\n this.width = 260;\n /**\n * Fires when the value of the component has changed.\n */\n this.valueChange = new EventEmitter();\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.tzNames = timezoneNames();\n this.tzSource = this.tzNames.slice();\n }\n /**\n * @hidden\n */\n onTimeZoneChange(tzName) {\n this.tz = tzName;\n this.onChangeCallback(this.tz);\n this.valueChange.emit(tzName);\n }\n /**\n * @hidden\n */\n onTimeZoneFilterChange(value) {\n this.tzSource = this.tzNames.filter((tz) => tz.toLowerCase().indexOf(value.toLowerCase()) !== -1);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n if (typeof value === 'string' && this.tzNames.indexOf(value) >= 0) {\n this.tz = value;\n }\n }\n /**\n * @hidden\n */\n focus() {\n this.tzComboBox.focus();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n}\nTimeZoneEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeZoneEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTimeZoneEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeZoneEditorComponent, selector: \"kendo-timezone-editor\", inputs: { width: \"width\" }, outputs: { valueChange: \"valueChange\" }, providers: [\n TIME_ZONE_VALUE_ACCESSOR\n ], viewQueries: [{ propertyName: \"tzComboBox\", first: true, predicate: [\"tzcombobox\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i1$3.ComboBoxComponent, selector: \"kendo-combobox\", inputs: [\"focusableId\", \"allowCustom\", \"data\", \"value\", \"textField\", \"valueField\", \"valuePrimitive\", \"valueNormalizer\", \"placeholder\", \"popupSettings\", \"listHeight\", \"iconClass\", \"loading\", \"suggest\", \"clearButton\", \"disabled\", \"itemDisabled\", \"readonly\", \"tabindex\", \"tabIndex\", \"filterable\", \"virtual\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"selectionChange\", \"filterChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoComboBox\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeZoneEditorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n TIME_ZONE_VALUE_ACCESSOR\n ],\n selector: 'kendo-timezone-editor',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { tzComboBox: [{\n type: ViewChild,\n args: ['tzcombobox', { static: true }]\n }], width: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n\nlet uniqueIdCounter = 0;\nconst offsetPositions = ['first', 'second', 'third', 'fourth', 'last'];\nconst frequencies = ['never', 'daily', 'weekly', 'monthly', 'yearly'];\n/**\n * @hidden\n */\nconst dayRule = [\n { day: 0, offset: 0 },\n { day: 1, offset: 0 },\n { day: 2, offset: 0 },\n { day: 3, offset: 0 },\n { day: 4, offset: 0 },\n { day: 5, offset: 0 },\n { day: 6, offset: 0 }\n];\n/**\n * @hidden\n */\nconst weekdayRule = [\n { day: 1, offset: 0 },\n { day: 2, offset: 0 },\n { day: 3, offset: 0 },\n { day: 4, offset: 0 },\n { day: 5, offset: 0 }\n];\n/**\n * @hidden\n */\nconst weekendRule = [\n { day: 0, offset: 0 },\n { day: 6, offset: 0 }\n];\n/**\n * @hidden\n *\n * The internal service for handling changes in the RecurrenceEditor component.\n */\nclass RecurrenceService {\n constructor(intl, localization) {\n this.intl = intl;\n this.localization = localization;\n this.change = new EventEmitter();\n this.endRuleChange = new EventEmitter();\n this.frequencyChange = new EventEmitter();\n this.repeatOnRuleChange = new EventEmitter();\n }\n init(rrule = \"\", start, timezone, weekStart) {\n this.start = start;\n this.timezone = timezone;\n this.weekStart = weekStart;\n this.rrule = parseRule({\n recurrenceRule: rrule,\n weekStart: weekStart\n });\n }\n /**\n * @hidden\n */\n getUniqueId() {\n return uniqueIdCounter++;\n }\n get frequencies() {\n return frequencies.map((freq) => ({\n value: freq,\n text: this.localization.get('frequencies' + capitalize(freq))\n }));\n }\n get frequency() {\n if (isPresent(this.rrule) && !isNullOrEmptyString(this.rrule.freq)) {\n return this.rrule.freq;\n }\n return 'never';\n }\n setFrequency(freq) {\n this.rrule = {};\n this.rrule.freq = freq;\n this.rrule.interval = 1;\n if (freq === 'weekly') {\n this.rrule.byWeekDay = [{\n day: this.start.getDay(),\n offset: 0\n }];\n }\n if (freq === 'monthly' || freq === 'yearly') {\n this.rrule.byMonthDay = [this.start.getDate()];\n }\n if (freq === 'yearly') {\n this.rrule.byMonth = [this.start.getMonth() + 1];\n }\n this.frequencyChange.emit();\n this.onChange();\n }\n set interval(newInterval) {\n this.rrule.interval = newInterval;\n this.onChange();\n }\n set count(newCount) {\n this.rrule.count = newCount;\n this.onChange();\n }\n set until(newUntil) {\n this.rrule.until = ZonedDate.fromLocalDate(newUntil, this.timezone);\n this.onChange();\n }\n get until() {\n if (isPresent(this.rrule.until)) {\n return toLocalDate(this.rrule.until);\n }\n }\n setWeekDays(newWeekDays) {\n this.rrule.byWeekDay = newWeekDays;\n this.onChange();\n }\n set monthDays(newMonthDays) {\n this.rrule.byMonthDay = newMonthDays;\n this.onChange();\n }\n set positions(newPositions) {\n this.rrule.bySetPosition = newPositions;\n this.onChange();\n }\n setMonths(newMonths) {\n this.rrule.byMonth = newMonths;\n this.onChange();\n }\n get months() {\n return this.intl.dateFormatNames({\n type: 'months',\n nameType: 'wide'\n }).map((month, idx) => ({\n text: month,\n value: idx + 1\n }));\n }\n /*\n ToDo Refactor weekDays and extendedWeekDays getters into a single method\n */\n get weekDays() {\n const firstDay = this.weekStart;\n const abbrNames = this.intl.dateFormatNames({\n type: 'days',\n nameType: 'abbreviated'\n }).map((day, idx) => ({\n text: day,\n value: idx\n }));\n /* Sorting according to first week day */\n return (abbrNames.slice(firstDay)).concat(abbrNames.slice(0, firstDay));\n }\n get extendedWeekDays() {\n const firstDay = this.weekStart;\n let wideNames = this.intl.dateFormatNames({\n type: 'days',\n nameType: 'wide'\n }).map((day, idx) => ({\n text: day,\n value: idx\n }));\n const sortedWideNames = (wideNames.slice(firstDay)).concat(wideNames.slice(0, firstDay));\n const specialRules = [\n { text: this.localization.get('weekdaysDay'), value: 'day' },\n { text: this.localization.get('weekdaysWeekday'), value: 'weekday' },\n { text: this.localization.get('weekdaysWeekendday'), value: 'weekend' }\n ];\n return specialRules.concat(sortedWideNames);\n }\n get offsetPositions() {\n const values = [1, 2, 3, 4, -1];\n return offsetPositions.map((offset, idx) => ({\n text: this.localization.get('offsetPositions' + capitalize(offset)),\n value: values[idx]\n }));\n }\n get endRule() {\n if (isPresent(this.rrule.count)) {\n return 'count';\n }\n else if (isPresent(this.rrule.until)) {\n return 'until';\n }\n else {\n return 'never';\n }\n }\n set endRule(endRule) {\n if (endRule === 'count') {\n this.rrule.until = null;\n }\n else if (endRule === 'until') {\n this.rrule.count = null;\n }\n else {\n /* never */\n this.rrule.count = null;\n this.rrule.until = null;\n }\n this.endRuleChange.emit(endRule);\n this.onChange();\n }\n get repeatOnRule() {\n if (isPresent(this.rrule.byWeekDay)) {\n return 'weekday';\n }\n else if (isPresent(this.rrule.byMonthDay)) {\n return 'monthday';\n }\n return null;\n }\n set repeatOnRule(repeatOnRule) {\n if (repeatOnRule === 'monthday') {\n this.rrule.byWeekDay = null;\n this.rrule.bySetPosition = null;\n }\n else {\n /* weekDays */\n this.rrule.byMonthDay = null;\n }\n this.repeatOnRuleChange.emit(repeatOnRule);\n this.onChange();\n }\n onChange() {\n if (this.frequency === 'never') {\n this.change.emit(null);\n }\n else {\n this.change.emit(serializeRule(this.rrule, this.timezone));\n }\n }\n}\nRecurrenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceService, deps: [{ token: i1$4.IntlService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nRecurrenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass RecurrenceLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, schedulerLocalization) {\n super(prefix, messageService, _rtl);\n this.schedulerLocalization = schedulerLocalization;\n }\n get(shortKey) {\n if (this.schedulerLocalization) {\n return this.schedulerLocalization.get('recurrenceEditor' + capitalize(shortKey));\n }\n return super.get(shortKey);\n }\n}\nRecurrenceLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1$1.MessageService, optional: true }, { token: RTL, optional: true }, { token: SchedulerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nRecurrenceLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1$1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: SchedulerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SchedulerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass RecurrenceFrequencyEditorComponent {\n constructor(recurrence, localization) {\n this.recurrence = recurrence;\n this.localization = localization;\n }\n ngOnInit() {\n this.frequencies = this.recurrence.frequencies;\n }\n get selected() {\n return this.recurrence.frequency;\n }\n onClick(newFreq) {\n if (newFreq.value !== this.selected) {\n this.recurrence.setFrequency(newFreq.value);\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n onFrequencyClick() {\n const selected = this.weekDayButtons.toArray().find(r => r.selected);\n if (selected) {\n selected.focus();\n }\n }\n}\nRecurrenceFrequencyEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceFrequencyEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceFrequencyEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceFrequencyEditorComponent, selector: \"kendo-recurrence-frequency-editor\", viewQueries: [{ propertyName: \"weekDayButtons\", predicate: Button, descendants: true }], ngImport: i0, template: `\n
    \n \n\n
    \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: i3.ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"tabIndex\"], outputs: [\"navigate\"], exportAs: [\"kendoButtonGroup\"] }], directives: [{ type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceFrequencyEditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-recurrence-frequency-editor',\n template: `\n
    \n \n\n
    \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$1.LocalizationService }]; }, propDecorators: { weekDayButtons: [{\n type: ViewChildren,\n args: [Button]\n }] } });\n\n/**\n * @hidden\n */\nclass RecurrenceIntervalEditorComponent {\n constructor(recurrence, localization) {\n this.recurrence = recurrence;\n this.localization = localization;\n this.numericOptions = {\n min: 1,\n format: '#',\n autoCorrect: true,\n step: 1,\n spinners: true\n };\n this.intervalValue = this.recurrence.rrule.interval || 1;\n }\n set userNumericOptions(options) {\n this.numericOptions = Object.assign(Object.assign({}, this.numericOptions), options);\n }\n get currentFreq() {\n return this.recurrence.frequency;\n }\n onIntervalChange(newInterval) {\n if (isPresent(newInterval)) {\n this.recurrence.interval = newInterval;\n }\n }\n onIntervalBlur() {\n if (!isPresent(this.intervalValue)) {\n this.recurrence.interval = this.intervalValue = 1;\n }\n }\n textForRepeatEvery() {\n const freq = this.currentFreq;\n switch (freq) {\n case 'daily':\n return this.textFor('dailyRepeatEvery');\n case 'weekly':\n return this.textFor('weeklyRepeatEvery');\n case 'monthly':\n return this.textFor('monthlyRepeatEvery');\n case 'yearly':\n return this.textFor('yearlyRepeatEvery');\n default:\n break;\n }\n }\n textForFrequency() {\n const freq = this.currentFreq;\n switch (freq) {\n case 'daily':\n return this.textFor('dailyInterval');\n case 'weekly':\n return this.textFor('weeklyInterval');\n case 'monthly':\n return this.textFor('monthlyInterval');\n case 'yearly':\n return this.textFor('yearlyInterval');\n default:\n break;\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nRecurrenceIntervalEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceIntervalEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceIntervalEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceIntervalEditorComponent, selector: \"kendo-recurrence-interval-editor\", inputs: { userNumericOptions: \"userNumericOptions\" }, ngImport: i0, template: `\n
    \n \n\n
    \n \n \n\n {{ textForFrequency() }}\n
    \n
    \n `, isInline: true, components: [{ type: i12.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceIntervalEditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-recurrence-interval-editor',\n template: `\n
    \n \n\n
    \n \n \n\n {{ textForFrequency() }}\n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$1.LocalizationService }]; }, propDecorators: { userNumericOptions: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass RecurrenceWeekdayRuleEditorComponent {\n constructor(recurrence, localization) {\n this.recurrence = recurrence;\n this.localization = localization;\n this.selected = [];\n this.weekDays = this.recurrence.weekDays;\n this.setSelectedDays();\n }\n setSelectedDays() {\n for (let i = 0; i < 7; i++) {\n this.selected[i] = false;\n }\n if (isPresent(this.rrule.byWeekDay)) {\n this.rrule.byWeekDay.forEach((rule) => {\n this.selected[rule.day] = true;\n });\n }\n }\n onSelectedChange(isSelected, day) {\n this.selected[day] = isSelected;\n this.recurrence.setWeekDays(this.serializeToWeekDayRuleArray(this.selected));\n }\n isSelected(day) {\n return this.selected[day.value];\n }\n serializeToWeekDayRuleArray(arr) {\n let selectedValues = [];\n arr.forEach((isSelected, idx) => {\n if (isSelected) {\n selectedValues.push({ day: idx, offset: 0 });\n }\n });\n return selectedValues.length > 0 ? selectedValues : null;\n }\n get rrule() {\n return this.recurrence.rrule;\n }\n capitalize(day) {\n return capitalize(day);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n onWeeklyRepeatOnClick() {\n const selected = this.weekDayButtons.toArray().find(r => r.selected);\n if (selected) {\n selected.focus();\n }\n }\n}\nRecurrenceWeekdayRuleEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceWeekdayRuleEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceWeekdayRuleEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceWeekdayRuleEditorComponent, selector: \"kendo-recurrence-weekday-rule-editor\", viewQueries: [{ propertyName: \"weekDayButtons\", predicate: Button, descendants: true }], ngImport: i0, template: `\n
    \n \n\n
    \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: i3.ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"tabIndex\"], outputs: [\"navigate\"], exportAs: [\"kendoButtonGroup\"] }], directives: [{ type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceWeekdayRuleEditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-recurrence-weekday-rule-editor',\n template: `\n
    \n \n\n
    \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$1.LocalizationService }]; }, propDecorators: { weekDayButtons: [{\n type: ViewChildren,\n args: [Button]\n }] } });\n\n/**\n * @hidden\n */\nclass RepeatOnRadioButtonDirective {\n constructor(el, renderer, recurrence, changeDetector) {\n this.el = el;\n this.renderer = renderer;\n this.recurrence = recurrence;\n this.changeDetector = changeDetector;\n this.type = 'radio';\n this.radioClass = true;\n this.radioSizeClass = true;\n this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));\n }\n set repeatOnRule(value) {\n const parts = value.split('-');\n this._repeatOnRule = parts[0];\n this._uniqueId = parts[1];\n }\n ngOnInit() {\n this.renderer.setAttribute(this.elem, 'id', `k-repeaton-${this._repeatOnRule}-${this._uniqueId}`);\n this.renderer.setAttribute(this.elem, 'name', `day-${this._uniqueId}`);\n }\n ngAfterContentChecked() {\n this.setCheckedState();\n }\n ngOnDestroy() {\n if (this.destroyChange) {\n this.destroyChange();\n }\n }\n onChange() {\n if (this.elem.checked) {\n this.recurrence.repeatOnRule = this._repeatOnRule;\n this.changeDetector.markForCheck();\n }\n }\n setCheckedState() {\n const isChecked = this._repeatOnRule === this.recurrence.repeatOnRule;\n this.renderer.setProperty(this.elem, 'checked', isChecked);\n }\n get elem() {\n return this.el.nativeElement;\n }\n}\nRepeatOnRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RepeatOnRadioButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: RecurrenceService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nRepeatOnRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RepeatOnRadioButtonDirective, selector: \"[kendoRecurrenceRepeatOnRadioButton]\", inputs: { repeatOnRule: [\"kendoRecurrenceRepeatOnRadioButton\", \"repeatOnRule\"] }, host: { properties: { \"attr.type\": \"this.type\", \"class.k-radio\": \"this.radioClass\", \"class.k-radio-md\": \"this.radioSizeClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RepeatOnRadioButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoRecurrenceRepeatOnRadioButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: RecurrenceService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{\n type: HostBinding,\n args: ['attr.type']\n }], radioClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }], radioSizeClass: [{\n type: HostBinding,\n args: ['class.k-radio-md']\n }], repeatOnRule: [{\n type: Input,\n args: [\"kendoRecurrenceRepeatOnRadioButton\"]\n }] } });\n\n/**\n * @hidden\n */\nclass RecurrenceMonthlyYearlyEditorComponent {\n constructor(recurrence, localization) {\n this.recurrence = recurrence;\n this.localization = localization;\n this.uniqueId = this.recurrence.getUniqueId();\n this.numericOptions = {\n min: 1,\n max: 31,\n format: '#',\n autoCorrect: true,\n step: 1,\n spinners: true\n };\n this.setInitialValues();\n this.subscribeEventHandlers();\n }\n set userNumericOptions(options) {\n this.numericOptions = Object.assign(Object.assign({}, this.numericOptions), options);\n }\n setInitialValues() {\n this.extendedWeekDays = this.recurrence.extendedWeekDays;\n this.offsetPositions = this.recurrence.offsetPositions;\n this.currentOffset = this.defaultOffset;\n this.currentWeekDay = this.defaultWeekDay;\n if (this.currentFreq === 'yearly') {\n this.months = this.recurrence.months;\n this.currentMonthMonthDay = this.currentMonthWeekDay = this.recurrence.rrule.byMonth[0];\n }\n }\n subscribeEventHandlers() {\n this.subs = this.recurrence.repeatOnRuleChange.subscribe(this.onRepeatOnRuleChange.bind(this));\n this.subs.add(this.recurrence.frequencyChange.subscribe(this.onFrequencyChange.bind(this)));\n }\n onRepeatOnRuleChange(newRepeatOnRule) {\n if (newRepeatOnRule === 'monthday') {\n this.recurrence.rrule.byMonthDay = [this.monthDay];\n if (this.currentFreq === 'yearly') {\n this.recurrence.rrule.byMonth = [this.currentMonthMonthDay];\n }\n }\n else if (newRepeatOnRule === 'weekday') {\n if (typeof this.weekDay === 'string') {\n /* day, weekday or weekend */\n this.recurrence.rrule.bySetPosition = [this.offset];\n this.recurrence.rrule.byWeekDay = this.weekDayRuleFromString(this.weekDay);\n }\n else {\n /* specific weekday */\n this.recurrence.rrule.byWeekDay = [{\n day: this.weekDay,\n offset: this.offset\n }];\n }\n if (this.currentFreq === 'yearly') {\n this.recurrence.rrule.byMonth = [this.currentMonthWeekDay];\n }\n }\n }\n onFrequencyChange() {\n this.setInitialValues();\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n get monthDay() {\n const rrule = this.recurrence.rrule;\n if (isPresent(rrule.byMonthDay) && rrule.byMonthDay.length > 0) {\n return rrule.byMonthDay[0];\n }\n else if (isPresent(this.currentMonthDay)) {\n return this.currentMonthDay;\n }\n else {\n return this.recurrence.start.getDate();\n }\n }\n get weekDay() {\n const rrule = this.recurrence.rrule;\n if (isPresent(rrule.byWeekDay)) {\n const weekDaysCount = rrule.byWeekDay.length;\n switch (weekDaysCount) {\n case 7:\n return 'day';\n case 5:\n return 'weekday';\n case 2:\n return 'weekend';\n case 1:\n return rrule.byWeekDay[0].day;\n default:\n break;\n }\n }\n else if (isPresent(this.currentWeekDay)) {\n return this.currentWeekDay;\n }\n return this.defaultWeekDay;\n }\n get offset() {\n const rrule = this.recurrence.rrule;\n if (isPresent(rrule.byWeekDay)) {\n const weekDaysCount = rrule.byWeekDay.length;\n switch (weekDaysCount) {\n case 7:\n case 5:\n case 2:\n return rrule.bySetPosition[0];\n case 1:\n return rrule.byWeekDay[0].offset;\n default:\n break;\n }\n }\n else if (isPresent(this.currentOffset)) {\n return this.currentOffset;\n }\n return this.defaultOffset;\n }\n onMonthChange(month, repeatOnRule) {\n if (repeatOnRule === 'monthday') {\n this.currentMonthMonthDay = month;\n }\n else {\n this.currentMonthWeekDay = month;\n }\n this.recurrence.setMonths([month]);\n }\n onMonthDayChange(monthDay) {\n this.currentMonthDay = monthDay;\n this.recurrence.monthDays = [monthDay];\n }\n onOffsetPositionChange(offset) {\n const rrule = this.recurrence.rrule;\n if (isPresent(rrule.byWeekDay)) {\n const weekDaysCount = rrule.byWeekDay.length;\n switch (weekDaysCount) {\n case 7:\n case 5:\n case 2:\n this.recurrence.positions = [offset];\n break;\n case 1:\n rrule.byWeekDay[0].offset = offset;\n this.recurrence.onChange();\n break;\n default:\n break;\n }\n }\n this.currentOffset = offset;\n }\n onWeekDayChange(weekDay) {\n let weekDays;\n if (typeof weekDay === 'string') {\n /* day, weekday or weekend */\n weekDays = this.weekDayRuleFromString(weekDay);\n this.recurrence.positions = [this.offset];\n }\n else {\n /* specific weekday */\n weekDays = [{\n day: weekDay,\n offset: this.offset\n }];\n }\n this.currentWeekDay = weekDay;\n this.recurrence.setWeekDays(weekDays);\n }\n isDisabled(repeatOn) {\n return this.recurrence.repeatOnRule !== repeatOn;\n }\n get currentFreq() {\n return this.recurrence.frequency;\n }\n get defaultOffset() {\n return 1;\n }\n get defaultWeekDay() {\n return this.recurrence.start.getDay();\n }\n weekDayRuleFromString(weekDay) {\n switch (weekDay) {\n case 'day':\n return dayRule;\n case 'weekday':\n return weekdayRule;\n case 'weekend':\n return weekendRule;\n default:\n break;\n }\n return null;\n }\n textForRepeatOn() {\n const freq = this.currentFreq;\n switch (freq) {\n case 'monthly':\n return this.textFor('monthlyRepeatOn');\n case 'yearly':\n return this.textFor('yearlyRepeatOn');\n default:\n break;\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n onRepeatOnLabelClick() {\n const selected = this.repeatOnRadioButtons.toArray().find(r => r.elem.checked);\n if (selected) {\n selected.elem.focus();\n }\n }\n}\nRecurrenceMonthlyYearlyEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceMonthlyYearlyEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceMonthlyYearlyEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceMonthlyYearlyEditorComponent, selector: \"kendo-recurrence-monthly-yearly-editor\", inputs: { userNumericOptions: \"userNumericOptions\" }, viewQueries: [{ propertyName: \"repeatOnRadioButtons\", predicate: RepeatOnRadioButtonDirective, descendants: true }], ngImport: i0, template: `\n
    \n \n\n
      \n
    • \n \n\n \n\n \n \n \n \n\n \n \n
    • \n
    • \n \n \n\n \n \n\n \n \n\n \n {{ textFor('yearlyOf') }}\n\n \n \n \n
    • \n
    \n
    \n `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }, { type: i12.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: RepeatOnRadioButtonDirective, selector: \"[kendoRecurrenceRepeatOnRadioButton]\", inputs: [\"kendoRecurrenceRepeatOnRadioButton\"] }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceMonthlyYearlyEditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-recurrence-monthly-yearly-editor',\n template: `\n
    \n \n\n
      \n
    • \n \n\n \n\n \n \n \n \n\n \n \n
    • \n
    • \n \n \n\n \n \n\n \n \n\n \n {{ textFor('yearlyOf') }}\n\n \n \n \n
    • \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$1.LocalizationService }]; }, propDecorators: { userNumericOptions: [{\n type: Input\n }], repeatOnRadioButtons: [{\n type: ViewChildren,\n args: [RepeatOnRadioButtonDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass EndRuleRadioButtonDirective {\n constructor(el, renderer, recurrence, changeDetector) {\n this.el = el;\n this.renderer = renderer;\n this.recurrence = recurrence;\n this.changeDetector = changeDetector;\n this.type = 'radio';\n this.radioClass = true;\n this.radioSizeClass = true;\n this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));\n }\n ngOnInit() {\n this.endRule = this.endRuleId.split('-')[2];\n this.renderer.setAttribute(this.elem, 'id', this.endRuleId);\n this.renderer.setAttribute(this.elem, 'name', `end-${this.endRuleId.split('-').pop()}`);\n }\n ngAfterContentChecked() {\n this.setCheckedState();\n }\n ngOnDestroy() {\n if (this.destroyChange) {\n this.destroyChange();\n }\n }\n onChange() {\n if (this.elem.checked) {\n this.recurrence.endRule = this.endRule;\n this.changeDetector.markForCheck();\n }\n }\n setCheckedState() {\n const isChecked = this.endRule === this.recurrence.endRule;\n this.renderer.setProperty(this.elem, 'checked', isChecked);\n }\n get elem() {\n return this.el.nativeElement;\n }\n}\nEndRuleRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndRuleRadioButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: RecurrenceService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nEndRuleRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EndRuleRadioButtonDirective, selector: \"[kendoRecurrenceEndRuleRadioButton]\", inputs: { endRuleId: [\"kendoRecurrenceEndRuleRadioButton\", \"endRuleId\"] }, host: { properties: { \"attr.type\": \"this.type\", \"class.k-radio\": \"this.radioClass\", \"class.k-radio-md\": \"this.radioSizeClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndRuleRadioButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoRecurrenceEndRuleRadioButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: RecurrenceService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{\n type: HostBinding,\n args: ['attr.type']\n }], radioClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }], radioSizeClass: [{\n type: HostBinding,\n args: ['class.k-radio-md']\n }], endRuleId: [{\n type: Input,\n args: [\"kendoRecurrenceEndRuleRadioButton\"]\n }] } });\n\n/**\n * @hidden\n */\nclass RecurrenceEndRuleEditorComponent {\n constructor(recurrence, localization) {\n this.recurrence = recurrence;\n this.localization = localization;\n this.numericOptions = {\n min: 1,\n format: '#',\n autoCorrect: true,\n step: 1,\n spinners: true\n };\n this.datePickerOptions = {\n activeView: 'month',\n bottomView: 'month',\n topView: 'century',\n disabledDatesValidation: true,\n navigation: true,\n format: 'd'\n };\n this.uniqueId = this.recurrence.getUniqueId();\n this.setInitialValues();\n this.subscribeChanges();\n }\n set userNumericOptions(options) {\n this.numericOptions = Object.assign(Object.assign({}, this.numericOptions), options);\n }\n set userDatePickerOptions(options) {\n this.datePickerOptions = Object.assign(Object.assign({}, this.datePickerOptions), options);\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n setEndRule(endRule) {\n if (endRule === 'count') {\n this.recurrence.rrule.count = this.countValue;\n }\n else if (endRule === 'until') {\n this.recurrence.until = this.untilValue;\n }\n }\n get rrule() {\n return this.recurrence.rrule;\n }\n get isCountDisabled() {\n return this.recurrence.endRule !== 'count';\n }\n get isUntilDisabled() {\n return this.recurrence.endRule !== 'until';\n }\n onCountChange(value) {\n if (isPresent(value)) {\n this.recurrence.count = value;\n }\n }\n onCountBlur() {\n if (!isPresent(this.countValue)) {\n this.recurrence.count = this.countValue = 1;\n }\n }\n onUntilChange(value) {\n if (isPresent(value)) {\n this.recurrence.until = this.createUntil(value);\n }\n }\n onUntilBlur() {\n if (!isPresent(this.untilValue)) {\n this.recurrence.until = this.untilValue = this.createUntil(this.recurrence.start);\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n onEndLabelClick() {\n const selected = this.endRuleRadioButtons.toArray().find(r => r.elem.checked);\n if (selected) {\n selected.elem.focus();\n }\n }\n setInitialValues() {\n this.countValue = this.rrule.count || 1;\n const currentUntil = this.recurrence.until;\n const currentStart = this.recurrence.start;\n this.untilValue = isPresent(currentUntil) ? currentUntil : this.createUntil(currentStart);\n }\n subscribeChanges() {\n this.subscriptions = this.recurrence.endRuleChange.subscribe((endRule) => {\n this.setEndRule(endRule);\n });\n this.subscriptions.add(this.recurrence.frequencyChange.subscribe(() => {\n this.setInitialValues();\n }));\n }\n createUntil(until) {\n // Read the until date as UTC date parts to avoid interfering with the local time zone.\n const untilDate = toUTCDate(until);\n untilDate.setUTCDate(untilDate.getUTCDate() + 1);\n // Convert to the scheduler time zone.\n return ZonedDate.fromUTCDate(untilDate, this.recurrence.timezone).toLocalDate();\n }\n}\nRecurrenceEndRuleEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEndRuleEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceEndRuleEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceEndRuleEditorComponent, selector: \"kendo-recurrence-end-rule-editor\", inputs: { userNumericOptions: \"userNumericOptions\", userDatePickerOptions: \"userDatePickerOptions\" }, viewQueries: [{ propertyName: \"endRuleRadioButtons\", predicate: EndRuleRadioButtonDirective, descendants: true }], ngImport: i0, template: `\n
    \n \n\n
      \n
    • \n \n \n
    • \n
    • \n \n \n\n \n \n {{ textFor('endOccurrence') }}\n
    • \n
    • \n \n \n\n \n \n
    • \n
    \n
    \n `, isInline: true, components: [{ type: i12.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }], directives: [{ type: EndRuleRadioButtonDirective, selector: \"[kendoRecurrenceEndRuleRadioButton]\", inputs: [\"kendoRecurrenceEndRuleRadioButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEndRuleEditorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-recurrence-end-rule-editor',\n template: `\n
    \n \n\n
      \n
    • \n \n \n
    • \n
    • \n \n \n\n \n \n {{ textFor('endOccurrence') }}\n
    • \n
    • \n \n \n\n \n \n
    • \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$1.LocalizationService }]; }, propDecorators: { userNumericOptions: [{\n type: Input\n }], userDatePickerOptions: [{\n type: Input\n }], endRuleRadioButtons: [{\n type: ViewChildren,\n args: [EndRuleRadioButtonDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages$1 extends ComponentMessages {\n}\nMessages$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages$1.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages$1, inputs: { repeat: \"repeat\", dailyInterval: \"dailyInterval\", dailyRepeatEvery: \"dailyRepeatEvery\", weeklyInterval: \"weeklyInterval\", weeklyRepeatEvery: \"weeklyRepeatEvery\", weeklyRepeatOn: \"weeklyRepeatOn\", monthlyDay: \"monthlyDay\", monthlyInterval: \"monthlyInterval\", monthlyRepeatEvery: \"monthlyRepeatEvery\", monthlyRepeatOn: \"monthlyRepeatOn\", yearlyOf: \"yearlyOf\", yearlyRepeatEvery: \"yearlyRepeatEvery\", yearlyRepeatOn: \"yearlyRepeatOn\", yearlyInterval: \"yearlyInterval\", frequenciesDaily: \"frequenciesDaily\", frequenciesMonthly: \"frequenciesMonthly\", frequenciesNever: \"frequenciesNever\", frequenciesWeekly: \"frequenciesWeekly\", frequenciesYearly: \"frequenciesYearly\", offsetPositionsFirst: \"offsetPositionsFirst\", offsetPositionsSecond: \"offsetPositionsSecond\", offsetPositionsThird: \"offsetPositionsThird\", offsetPositionsFourth: \"offsetPositionsFourth\", offsetPositionsLast: \"offsetPositionsLast\", weekdaysDay: \"weekdaysDay\", weekdaysWeekday: \"weekdaysWeekday\", weekdaysWeekendday: \"weekdaysWeekendday\", endAfter: \"endAfter\", endOccurrence: \"endOccurrence\", endLabel: \"endLabel\", endNever: \"endNever\", endOn: \"endOn\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, decorators: [{\n type: Directive\n }], propDecorators: { repeat: [{\n type: Input\n }], dailyInterval: [{\n type: Input\n }], dailyRepeatEvery: [{\n type: Input\n }], weeklyInterval: [{\n type: Input\n }], weeklyRepeatEvery: [{\n type: Input\n }], weeklyRepeatOn: [{\n type: Input\n }], monthlyDay: [{\n type: Input\n }], monthlyInterval: [{\n type: Input\n }], monthlyRepeatEvery: [{\n type: Input\n }], monthlyRepeatOn: [{\n type: Input\n }], yearlyOf: [{\n type: Input\n }], yearlyRepeatEvery: [{\n type: Input\n }], yearlyRepeatOn: [{\n type: Input\n }], yearlyInterval: [{\n type: Input\n }], frequenciesDaily: [{\n type: Input\n }], frequenciesMonthly: [{\n type: Input\n }], frequenciesNever: [{\n type: Input\n }], frequenciesWeekly: [{\n type: Input\n }], frequenciesYearly: [{\n type: Input\n }], offsetPositionsFirst: [{\n type: Input\n }], offsetPositionsSecond: [{\n type: Input\n }], offsetPositionsThird: [{\n type: Input\n }], offsetPositionsFourth: [{\n type: Input\n }], offsetPositionsLast: [{\n type: Input\n }], weekdaysDay: [{\n type: Input\n }], weekdaysWeekday: [{\n type: Input\n }], weekdaysWeekendday: [{\n type: Input\n }], endAfter: [{\n type: Input\n }], endOccurrence: [{\n type: Input\n }], endLabel: [{\n type: Input\n }], endNever: [{\n type: Input\n }], endOn: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass RecurrenceEditorLocalizedMessagesDirective extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nRecurrenceEditorLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nRecurrenceEditorLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceEditorLocalizedMessagesDirective, selector: \"[kendoRecurrenceEditorLocalizedMessages]\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => RecurrenceEditorLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => RecurrenceEditorLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoRecurrenceEditorLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst RECURRENCE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RecurrenceEditorComponent)\n};\n/**\n * Represents the Kendo UI Recurrence Editor component for Angular. [This example]({% slug custom_reactive_editing_scheduler %}#toc-setup) demonstrates the Recurrence Editor, among other components.\n */\nclass RecurrenceEditorComponent {\n constructor(recurrenceService, intl) {\n this.recurrenceService = recurrenceService;\n this.intl = intl;\n this.cssClass = true;\n /**\n * Specifies the id of the timezone that will be used.\n */\n this.timezone = 'Etc/UTC';\n /**\n * Fires when the value of the component has changed.\n */\n this.valueChange = new EventEmitter();\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.weekStart = this.intl.firstDay();\n this.subscriptions = this.recurrenceService.change.subscribe((rrule) => {\n this.emitChange(rrule);\n });\n }\n /**\n * Specifies the start date of the event.\n */\n set start(value) {\n this._start = value;\n }\n get start() {\n return isPresent(this._start) ? this._start : getDate(new Date());\n }\n /**\n * @hidden\n */\n get currentFreq() {\n return this.recurrenceService.frequency;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.recurrenceService.init('', this.start, this.timezone, this.weekStart);\n }\n ngOnChanges(changes) {\n if (isChanged('start', changes)) {\n this.recurrenceService.start = this.start;\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n writeValue(rrule) {\n this.recurrenceService.init(typeof rrule === 'string' ? rrule : '', this.start, this.timezone, this.weekStart);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n emitChange(rrule) {\n this.onChangeCallback(rrule);\n this.valueChange.emit(rrule);\n }\n}\nRecurrenceEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorComponent, deps: [{ token: RecurrenceService }, { token: i1$4.IntlService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceEditorComponent, selector: \"kendo-recurrence-editor\", inputs: { start: \"start\", timezone: \"timezone\", weekStart: \"weekStart\", repeatEveryOptions: \"repeatEveryOptions\", endAfterOptions: \"endAfterOptions\", repeatOnOptions: \"repeatOnOptions\", endOnOptions: \"endOnOptions\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-recurrence-editor\": \"this.cssClass\" } }, providers: [\n RecurrenceLocalizationService,\n {\n provide: LocalizationService,\n useExisting: RecurrenceLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.recurrenceeditor'\n },\n RECURRENCE_VALUE_ACCESSOR,\n RecurrenceService\n ], exportAs: [\"kendoRecurrenceEditor\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n `, isInline: true, components: [{ type: RecurrenceFrequencyEditorComponent, selector: \"kendo-recurrence-frequency-editor\" }, { type: RecurrenceIntervalEditorComponent, selector: \"kendo-recurrence-interval-editor\", inputs: [\"userNumericOptions\"] }, { type: RecurrenceWeekdayRuleEditorComponent, selector: \"kendo-recurrence-weekday-rule-editor\" }, { type: RecurrenceMonthlyYearlyEditorComponent, selector: \"kendo-recurrence-monthly-yearly-editor\", inputs: [\"userNumericOptions\"] }, { type: RecurrenceEndRuleEditorComponent, selector: \"kendo-recurrence-end-rule-editor\", inputs: [\"userNumericOptions\", \"userDatePickerOptions\"] }], directives: [{ type: RecurrenceEditorLocalizedMessagesDirective, selector: \"[kendoRecurrenceEditorLocalizedMessages]\" }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoRecurrenceEditor',\n providers: [\n RecurrenceLocalizationService,\n {\n provide: LocalizationService,\n useExisting: RecurrenceLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.recurrenceeditor'\n },\n RECURRENCE_VALUE_ACCESSOR,\n RecurrenceService\n ],\n selector: 'kendo-recurrence-editor',\n template: `\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: RecurrenceService }, { type: i1$4.IntlService }]; }, propDecorators: { cssClass: [{\n type: HostBinding,\n args: ['class.k-recurrence-editor']\n }], start: [{\n type: Input\n }], timezone: [{\n type: Input\n }], weekStart: [{\n type: Input\n }], repeatEveryOptions: [{\n type: Input\n }], endAfterOptions: [{\n type: Input\n }], repeatOnOptions: [{\n type: Input\n }], endOnOptions: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass EditDialogComponent {\n constructor(ngZone, editService, localization, changeDetector, element, focusService) {\n this.ngZone = ngZone;\n this.editService = editService;\n this.localization = localization;\n this.changeDetector = changeDetector;\n this.element = element;\n this.focusService = focusService;\n this.resources = [];\n this.timezone = 'Etc/UTC';\n this.setTimeZone = false;\n this.setSeparateStartEndTimeZones = false;\n this.subs = this.editService.changed.subscribe(() => {\n this.ngZone.run(() => { this.onChange(); });\n });\n this.subs.add(fromEvent(this.element.nativeElement, 'keydown')\n .pipe(filter(() => this.isActive))\n .subscribe((e) => {\n if (e.keyCode === Keys.Escape) {\n this.reset();\n }\n if (e.keyCode === Keys.Enter && (withModifiers(e, Modifiers.CtrlKey) || withModifiers(e, Modifiers.MetaKey))) {\n this.onSave(e);\n }\n e.stopPropagation();\n }));\n }\n get autoFocusedElement() {\n if (this.editTemplate) {\n return this.editTemplate.autoFocusedElement;\n }\n return '.k-form-field-wrap input';\n }\n get isEditingSeries() {\n return this.editMode === 2 /* Series */ && Boolean(this.formGroup.get(this.fields.recurrenceRule));\n }\n get eventTimezone() {\n return formValueOrDefault(this.formGroup, this.fields.startTimezone, this.timezone);\n }\n get endTimezone() {\n return formValueOrDefault(this.formGroup, this.fields.endTimezone, this.eventTimezone);\n }\n onChange() {\n this.changeDetector.markForCheck();\n if (this.editService.hasNewEvent) {\n this.editMode = 2 /* Series */;\n this.formGroup = this.editService.context.formGroup;\n this.isNew = true;\n this.applyLocalTimezone();\n }\n else if (this.editService.isEditing()) {\n const { dataItem, mode } = this.editService.context;\n this.formGroup = this.editService.context.formGroup;\n this.isNew = false;\n this.editedEvent = dataItem;\n this.editMode = isPresent(mode) ? mode : 2 /* Series */;\n this.applyLocalTimezone();\n }\n else {\n this.reset();\n return;\n }\n if (!this.editTemplate) {\n this.addTimeZoneCheckboxesToFormGroup();\n this.subscribeToFormGroupChanges();\n }\n if (isPresent(this.formGroup)) {\n this.recurrenceStart = this.formGroup.get(this.fields.start).value;\n }\n this.isActive = true;\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n onCancel(e) {\n e.preventDefault();\n this.onClose();\n this.changeDetector.markForCheck();\n }\n onSave(e) {\n e.preventDefault();\n this.applyTimezone();\n this.editService.save();\n this.changeDetector.markForCheck();\n }\n onClose() {\n this.editService.endEdit();\n this.changeDetector.markForCheck();\n this.focusService.focus();\n }\n get hasAllDay() {\n return Boolean(this.formGroup.get(this.fields.isAllDay));\n }\n get hasStartTimeZone() {\n return Boolean(this.formGroup.get(this.fields.startTimezone));\n }\n get isStartTimeZoneVisible() {\n return this.formGroup && this.formGroup.get('startTimezoneCheckbox').value;\n }\n get hasEndTimeZone() {\n return Boolean(this.formGroup.get(this.fields.endTimezone));\n }\n get isEndTimeZoneVisible() {\n return this.formGroup && this.formGroup.get('endTimezoneCheckbox').value;\n }\n getFormValue(field) {\n if (field) {\n return this.formGroup.get(field);\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n onResourceClick(resource) {\n const resourceEditors = resource.multiple ? this.multipleResourceEditors : this.singleResourceEditors;\n const currentEditor = resourceEditors.filter((editor) => editor.resource.field === resource.field).pop();\n if (currentEditor) {\n currentEditor.focus();\n }\n }\n getControl(name) {\n return this.formGroup.get(name);\n }\n reset() {\n this.isActive = false;\n this.setTimeZone = false;\n this.setSeparateStartEndTimeZones = false;\n this.removeTimeZoneCheckboxesFromFormGroup();\n this.focusService.focus();\n }\n addTimeZoneCheckboxesToFormGroup() {\n if (isPresent(this.formGroup)) {\n const startField = this.fields.startTimezone;\n this.formGroup.addControl('startTimezoneCheckbox', new FormControl(this.formGroup.contains(startField) &&\n this.formGroup.get(startField).value));\n const endField = this.fields.endTimezone;\n this.formGroup.addControl('endTimezoneCheckbox', new FormControl(this.formGroup.contains(endField) &&\n this.formGroup.get(endField).value));\n }\n }\n removeTimeZoneCheckboxesFromFormGroup() {\n if (isPresent(this.formGroup)) {\n this.formGroup.removeControl('startTimezoneCheckbox');\n this.formGroup.removeControl('endTimezoneCheckbox');\n }\n }\n subscribeToFormGroupChanges() {\n if (isPresent(this.formGroup)) {\n const fields = this.fields;\n this.formGroup.get('startTimezoneCheckbox').valueChanges.subscribe(isTrue => {\n if (!isTrue) {\n this.formGroup.get(fields.startTimezone).setValue(null, { emitEvent: false });\n this.formGroup.get(fields.endTimezone).setValue(null, { emitEvent: false });\n this.formGroup.get('endTimezoneCheckbox').setValue(false, { emitEvent: false });\n }\n });\n this.formGroup.get('endTimezoneCheckbox').valueChanges.subscribe(isTrue => {\n if (!isTrue) {\n this.formGroup.get(fields.endTimezone).setValue(null, { emitEvent: false });\n }\n });\n this.formGroup.get(fields.start).valueChanges.subscribe((newStart) => {\n this.recurrenceStart = newStart;\n });\n }\n }\n /**\n * Converts the event dates to \"display dates\" that look like the original date in its time zone.\n * The result does not represent the same moment in time and must be converted back to local dates.\n */\n applyLocalTimezone() {\n const fields = this.fields;\n const start = this.readDateAsLocal(fields.start, this.eventTimezone);\n const end = this.readDateAsLocal(fields.end, this.endTimezone);\n this.formGroup.get(fields.start).reset(start);\n this.formGroup.get(fields.end).reset(end);\n }\n /**\n * Converts the \"display dates\" used by the editors back to local dates that represent the true moment in time.\n */\n applyTimezone() {\n const fields = this.fields;\n const start = this.readDateWithTimezone(fields.start, this.eventTimezone);\n const end = this.readDateWithTimezone(fields.end, this.endTimezone);\n this.formGroup.get(fields.start).reset(start);\n this.formGroup.get(fields.end).reset(end);\n }\n readDateWithTimezone(field, timezone) {\n const value = this.formGroup.get(field).value;\n return ZonedDate.fromUTCDate(toUTCDateTime(value), timezone).toLocalDate();\n }\n readDateAsLocal(field, timezone) {\n const value = this.formGroup.get(field).value;\n return toLocalDate(ZonedDate.fromLocalDate(value, timezone).toUTCDate());\n }\n}\nEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditDialogComponent, deps: [{ token: i0.NgZone }, { token: EditService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: FocusService }], target: i0.ɵɵFactoryTarget.Component });\nEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditDialogComponent, selector: \"kendo-scheduler-edit-dialog\", inputs: { resources: \"resources\", timezone: \"timezone\", weekStart: \"weekStart\", fields: \"fields\", editTemplate: \"editTemplate\" }, viewQueries: [{ propertyName: \"multipleResourceEditors\", predicate: MultipleResourceEditorComponent, descendants: true }, { propertyName: \"singleResourceEditors\", predicate: SingleResourceEditorComponent, descendants: true }], ngImport: i0, template: `\n \n \n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n
    \n \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n
    \n\n \n
    \n \n
    \n \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n\n \n \n\n \n
    \n \n\n
    \n \n
    \n
    \n\n \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n\n \n
    \n \n \n
    \n
    \n\n \n \n \n \n
    \n `, isInline: true, components: [{ type: i1.DialogComponent, selector: \"kendo-dialog\", inputs: [\"actions\", \"actionsLayout\", \"autoFocusedElement\", \"title\", \"width\", \"minWidth\", \"maxWidth\", \"height\", \"minHeight\", \"maxHeight\"], outputs: [\"action\", \"close\"], exportAs: [\"kendoDialog\"] }, { type: SchedulerDateTimePickerComponent, selector: \"kendo-scheduler-datetime-picker\", inputs: [\"isAllDay\"], outputs: [\"valueChange\"] }, { type: TimeZoneEditorComponent, selector: \"kendo-timezone-editor\", inputs: [\"width\"], outputs: [\"valueChange\"] }, { type: RecurrenceEditorComponent, selector: \"kendo-recurrence-editor\", inputs: [\"start\", \"timezone\", \"weekStart\", \"repeatEveryOptions\", \"endAfterOptions\", \"repeatOnOptions\", \"endOnOptions\"], outputs: [\"valueChange\"], exportAs: [\"kendoRecurrenceEditor\"] }, { type: MultipleResourceEditorComponent, selector: \"kendo-multiple-resource-editor\" }, { type: SingleResourceEditorComponent, selector: \"kendo-single-resource-editor\" }, { type: i1.DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i11.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i11.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i12.TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: [\"value\"] }, { type: i11.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i11.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i11.FormControlDirective, selector: \"[formControl]\", inputs: [\"disabled\", \"formControl\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i11.CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\" }, { type: i12.CheckBoxDirective, selector: \"input[kendoCheckBox]\", inputs: [\"size\", \"rounded\"] }, { type: i11.FormControlName, selector: \"[formControlName]\", inputs: [\"disabled\", \"formControlName\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { type: i12.TextAreaDirective, selector: \"textarea[kendoTextArea]\", inputs: [\"autoSize\", \"value\"], outputs: [\"valueChange\"] }, { type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditDialogComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-scheduler-edit-dialog',\n template: `\n \n \n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n
    \n \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n
    \n\n \n
    \n \n
    \n \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n
    \n\n \n
    \n \n\n
    \n \n
    \n
    \n\n \n \n\n \n
    \n \n\n
    \n \n
    \n
    \n\n \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n\n \n
    \n \n \n
    \n
    \n\n \n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: EditService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: FocusService }]; }, propDecorators: { multipleResourceEditors: [{\n type: ViewChildren,\n args: [MultipleResourceEditorComponent]\n }], singleResourceEditors: [{\n type: ViewChildren,\n args: [SingleResourceEditorComponent]\n }], resources: [{\n type: Input\n }], timezone: [{\n type: Input\n }], weekStart: [{\n type: Input\n }], fields: [{\n type: Input\n }], editTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { allEvents: \"allEvents\", allDay: \"allDay\", dateHeader: \"dateHeader\", timeHeader: \"timeHeader\", eventHeader: \"eventHeader\", deleteTitle: \"deleteTitle\", nextTitle: \"nextTitle\", previousTitle: \"previousTitle\", today: \"today\", calendarToday: \"calendarToday\", showFullDay: \"showFullDay\", showWorkDay: \"showWorkDay\", dayViewTitle: \"dayViewTitle\", multiDayViewTitle: \"multiDayViewTitle\", weekViewTitle: \"weekViewTitle\", workWeekViewTitle: \"workWeekViewTitle\", monthViewTitle: \"monthViewTitle\", timelineViewTitle: \"timelineViewTitle\", timelineWeekViewTitle: \"timelineWeekViewTitle\", timelineMonthViewTitle: \"timelineMonthViewTitle\", agendaViewTitle: \"agendaViewTitle\", cancel: \"cancel\", save: \"save\", editorEventTitle: \"editorEventTitle\", editorEventStart: \"editorEventStart\", editorEventStartTimeZone: \"editorEventStartTimeZone\", editorEventEnd: \"editorEventEnd\", editorEventEndTimeZone: \"editorEventEndTimeZone\", editorEventAllDay: \"editorEventAllDay\", editorEventDescription: \"editorEventDescription\", editorEventSeparateTimeZones: \"editorEventSeparateTimeZones\", editorEventTimeZone: \"editorEventTimeZone\", recurrenceEditorRepeat: \"recurrenceEditorRepeat\", recurrenceEditorDailyInterval: \"recurrenceEditorDailyInterval\", recurrenceEditorDailyRepeatEvery: \"recurrenceEditorDailyRepeatEvery\", recurrenceEditorWeeklyInterval: \"recurrenceEditorWeeklyInterval\", recurrenceEditorWeeklyRepeatEvery: \"recurrenceEditorWeeklyRepeatEvery\", recurrenceEditorWeeklyRepeatOn: \"recurrenceEditorWeeklyRepeatOn\", recurrenceEditorMonthlyDay: \"recurrenceEditorMonthlyDay\", recurrenceEditorMonthlyInterval: \"recurrenceEditorMonthlyInterval\", recurrenceEditorMonthlyRepeatEvery: \"recurrenceEditorMonthlyRepeatEvery\", recurrenceEditorMonthlyRepeatOn: \"recurrenceEditorMonthlyRepeatOn\", recurrenceEditorYearlyOf: \"recurrenceEditorYearlyOf\", recurrenceEditorYearlyRepeatEvery: \"recurrenceEditorYearlyRepeatEvery\", recurrenceEditorYearlyRepeatOn: \"recurrenceEditorYearlyRepeatOn\", recurrenceEditorYearlyInterval: \"recurrenceEditorYearlyInterval\", recurrenceEditorFrequenciesDaily: \"recurrenceEditorFrequenciesDaily\", recurrenceEditorFrequenciesMonthly: \"recurrenceEditorFrequenciesMonthly\", recurrenceEditorFrequenciesNever: \"recurrenceEditorFrequenciesNever\", recurrenceEditorFrequenciesWeekly: \"recurrenceEditorFrequenciesWeekly\", recurrenceEditorFrequenciesYearly: \"recurrenceEditorFrequenciesYearly\", recurrenceEditorOffsetPositionsFirst: \"recurrenceEditorOffsetPositionsFirst\", recurrenceEditorOffsetPositionsSecond: \"recurrenceEditorOffsetPositionsSecond\", recurrenceEditorOffsetPositionsThird: \"recurrenceEditorOffsetPositionsThird\", recurrenceEditorOffsetPositionsFourth: \"recurrenceEditorOffsetPositionsFourth\", recurrenceEditorOffsetPositionsLast: \"recurrenceEditorOffsetPositionsLast\", recurrenceEditorWeekdaysDay: \"recurrenceEditorWeekdaysDay\", recurrenceEditorWeekdaysWeekday: \"recurrenceEditorWeekdaysWeekday\", recurrenceEditorWeekdaysWeekendday: \"recurrenceEditorWeekdaysWeekendday\", recurrenceEditorEndAfter: \"recurrenceEditorEndAfter\", recurrenceEditorEndOccurrence: \"recurrenceEditorEndOccurrence\", recurrenceEditorEndLabel: \"recurrenceEditorEndLabel\", recurrenceEditorEndNever: \"recurrenceEditorEndNever\", recurrenceEditorEndOn: \"recurrenceEditorEndOn\", editorTitle: \"editorTitle\", destroy: \"destroy\", deleteConfirmation: \"deleteConfirmation\", editRecurringConfirmation: \"editRecurringConfirmation\", editOccurrence: \"editOccurrence\", editSeries: \"editSeries\", deleteRecurringConfirmation: \"deleteRecurringConfirmation\", deleteOccurrence: \"deleteOccurrence\", deleteSeries: \"deleteSeries\", deleteDialogTitle: \"deleteDialogTitle\", deleteRecurringDialogTitle: \"deleteRecurringDialogTitle\", editRecurringDialogTitle: \"editRecurringDialogTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { allEvents: [{\n type: Input\n }], allDay: [{\n type: Input\n }], dateHeader: [{\n type: Input\n }], timeHeader: [{\n type: Input\n }], eventHeader: [{\n type: Input\n }], deleteTitle: [{\n type: Input\n }], nextTitle: [{\n type: Input\n }], previousTitle: [{\n type: Input\n }], today: [{\n type: Input\n }], calendarToday: [{\n type: Input\n }], showFullDay: [{\n type: Input\n }], showWorkDay: [{\n type: Input\n }], dayViewTitle: [{\n type: Input\n }], multiDayViewTitle: [{\n type: Input\n }], weekViewTitle: [{\n type: Input\n }], workWeekViewTitle: [{\n type: Input\n }], monthViewTitle: [{\n type: Input\n }], timelineViewTitle: [{\n type: Input\n }], timelineWeekViewTitle: [{\n type: Input\n }], timelineMonthViewTitle: [{\n type: Input\n }], agendaViewTitle: [{\n type: Input\n }], cancel: [{\n type: Input\n }], save: [{\n type: Input\n }], editorEventTitle: [{\n type: Input\n }], editorEventStart: [{\n type: Input\n }], editorEventStartTimeZone: [{\n type: Input\n }], editorEventEnd: [{\n type: Input\n }], editorEventEndTimeZone: [{\n type: Input\n }], editorEventAllDay: [{\n type: Input\n }], editorEventDescription: [{\n type: Input\n }], editorEventSeparateTimeZones: [{\n type: Input\n }], editorEventTimeZone: [{\n type: Input\n }], recurrenceEditorRepeat: [{\n type: Input\n }], recurrenceEditorDailyInterval: [{\n type: Input\n }], recurrenceEditorDailyRepeatEvery: [{\n type: Input\n }], recurrenceEditorWeeklyInterval: [{\n type: Input\n }], recurrenceEditorWeeklyRepeatEvery: [{\n type: Input\n }], recurrenceEditorWeeklyRepeatOn: [{\n type: Input\n }], recurrenceEditorMonthlyDay: [{\n type: Input\n }], recurrenceEditorMonthlyInterval: [{\n type: Input\n }], recurrenceEditorMonthlyRepeatEvery: [{\n type: Input\n }], recurrenceEditorMonthlyRepeatOn: [{\n type: Input\n }], recurrenceEditorYearlyOf: [{\n type: Input\n }], recurrenceEditorYearlyRepeatEvery: [{\n type: Input\n }], recurrenceEditorYearlyRepeatOn: [{\n type: Input\n }], recurrenceEditorYearlyInterval: [{\n type: Input\n }], recurrenceEditorFrequenciesDaily: [{\n type: Input\n }], recurrenceEditorFrequenciesMonthly: [{\n type: Input\n }], recurrenceEditorFrequenciesNever: [{\n type: Input\n }], recurrenceEditorFrequenciesWeekly: [{\n type: Input\n }], recurrenceEditorFrequenciesYearly: [{\n type: Input\n }], recurrenceEditorOffsetPositionsFirst: [{\n type: Input\n }], recurrenceEditorOffsetPositionsSecond: [{\n type: Input\n }], recurrenceEditorOffsetPositionsThird: [{\n type: Input\n }], recurrenceEditorOffsetPositionsFourth: [{\n type: Input\n }], recurrenceEditorOffsetPositionsLast: [{\n type: Input\n }], recurrenceEditorWeekdaysDay: [{\n type: Input\n }], recurrenceEditorWeekdaysWeekday: [{\n type: Input\n }], recurrenceEditorWeekdaysWeekendday: [{\n type: Input\n }], recurrenceEditorEndAfter: [{\n type: Input\n }], recurrenceEditorEndOccurrence: [{\n type: Input\n }], recurrenceEditorEndLabel: [{\n type: Input\n }], recurrenceEditorEndNever: [{\n type: Input\n }], recurrenceEditorEndOn: [{\n type: Input\n }], editorTitle: [{\n type: Input\n }], destroy: [{\n type: Input\n }], deleteConfirmation: [{\n type: Input\n }], editRecurringConfirmation: [{\n type: Input\n }], editOccurrence: [{\n type: Input\n }], editSeries: [{\n type: Input\n }], deleteRecurringConfirmation: [{\n type: Input\n }], deleteOccurrence: [{\n type: Input\n }], deleteSeries: [{\n type: Input\n }], deleteDialogTitle: [{\n type: Input\n }], deleteRecurringDialogTitle: [{\n type: Input\n }], editRecurringDialogTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoSchedulerLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoSchedulerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst todayDate = () => getDate(new Date());\nconst DAYS_IN_WEEK$1 = 7;\n/**\n * Represents the [Kendo UI Scheduler component for Angular]({% slug overview_scheduler %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass SchedulerComponent {\n constructor(wrapper, viewContext, viewState, editService, dialogsService, intlService, changeDetector, zone, pdfService, localization, domEvents, renderer, focusService) {\n this.wrapper = wrapper;\n this.viewContext = viewContext;\n this.viewState = viewState;\n this.editService = editService;\n this.dialogsService = dialogsService;\n this.intlService = intlService;\n this.changeDetector = changeDetector;\n this.zone = zone;\n this.pdfService = pdfService;\n this.localization = localization;\n this.domEvents = domEvents;\n this.renderer = renderer;\n this.focusService = focusService;\n this.hostClasses = true;\n this.rtl = false;\n /**\n * Specifies if the Scheduler is editable.\n */\n this.editable = false;\n /**\n * Specifies if the Scheduler's day or time slots are selectable ([see example]({% slug slotselection_scheduler %}#toc-custom-callback)).\n *\n * When this input is set to `true`, the Scheduler component will emit [`slotDragStart`]({% slug api_scheduler_schedulercomponent %}#toc-slotdragstart), [`slotDrag`]({% slug api_scheduler_schedulercomponent %}#toc-slotdrag), and [`slotDragEnd`]({% slug api_scheduler_schedulercomponent %}#toc-slotdragend) events upon user interaction.\n */\n this.selectable = false;\n /**\n * The height of the events in the **Month** and **Timeline** views, and the height of the **All day** events in the **Day** and **Week** views.\n */\n this.eventHeight = 25;\n /**\n * Specifies the columns width. Applicable for the **Timeline** views.\n */\n this.columnWidth = 100;\n /**\n * The start time of the view. The Scheduler displays events which start after the start time.\n * Accepts string values in the `HH:mm` format. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.startTime = '00:00';\n /**\n * The end time of the view. The Scheduler displays events which end before the end time.\n * Accepts string values in the `HH:mm` format. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.endTime = '00:00';\n /**\n * The start time of the view when `showWorkHours` is set to `true`.\n * Accepts string values in the `HH:mm` format. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.workDayStart = '08:00';\n /**\n * The end time of the view when `showWorkHours` is set to `true`.\n * Accepts string values in the `HH:mm` format. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.workDayEnd = '17:00';\n /**\n * The duration (in minutes) of the time slots. Applicable for the day, week and timeline views.\n */\n this.slotDuration = 60;\n /**\n * The number of divisions of the time slots. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.slotDivisions = 2;\n /**\n * A numeric value between 0 and 1 that specifies what percentage of the slot will be filled by the events.\n * Applicable for the **Day** and **Week** views.\n * Defaults to `0.9` (90% fill).\n */\n this.slotFill = 0.9;\n /**\n * The time to which the view will initially be scrolled.\n * Accepts string values in the `HH:mm` format or a JavaScript `Date`. Applicable for the **Day**, **Week**, and **Timeline** views.\n */\n this.scrollTime = this.workDayStart;\n /**\n * Specifies the Scheduler current time marker settings.\n */\n this.currentTimeMarker = true;\n /**\n * Specifies the settings for the ongoing events highlight of the Scheduler.\n */\n this.highlightOngoingEvents = true;\n /**\n * A callback that executes for each slot of the Scheduler view.\n * If it returns `true`, the `k-state-selected` CSS class will be added to the cell, making it visibly selected.\n */\n this.isSlotSelected = alwaysFalse;\n /**\n * @hidden\n */\n this.selectedViewIndexChange = new EventEmitter();\n /**\n * Fires when the Scheduler is about to execute a navigation action\n * (a view, date, or focus change).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when the date range that is displayed in the Scheduler changes.\n */\n this.dateChange = new EventEmitter();\n /**\n * Fires when a Scheduler view slot is clicked.\n */\n this.slotClick = new EventEmitter();\n /**\n * Fires when a Scheduler view slot is double-clicked.\n */\n this.slotDblClick = new EventEmitter();\n /**\n * Fires when the user creates a new event using the `'c'` key.\n * ([see example]({% slug keyboard_navigation_scheduler %})).\n */\n this.create = new EventEmitter();\n /**\n * Fires when a Scheduler event is clicked.\n */\n this.eventClick = new EventEmitter();\n /**\n * Fires when a Scheduler event is double-clicked.\n */\n this.eventDblClick = new EventEmitter();\n /**\n * Fires when a key is pressed on a focused Scheduler event.\n */\n this.eventKeydown = new EventEmitter();\n /**\n * Fires when the user cancels the editing by clicking the **Cancel** command button.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the user clicks the **Save** command button to save the changes of the edited event.\n */\n this.save = new EventEmitter();\n /**\n * Fires when the user clicks the **Remove** icon of a Scheduler event.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the user starts resizing a Scheduler event.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Fires when the user is resizing a Scheduler event.\n */\n this.resize = new EventEmitter();\n /**\n * Fires when the user stops resizing a Scheduler event.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * Fires when the user starts dragging a Scheduler event.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the user is dragging a Scheduler event.\n */\n this.drag = new EventEmitter();\n /**\n * Fires when the user stops dragging a Scheduler event.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts drag-selecting a Scheduler slot range.\n */\n this.slotDragStart = new EventEmitter();\n /**\n * Fires when the user is drag-selecting a Scheduler slot range.\n */\n this.slotDrag = new EventEmitter();\n /**\n * Fires when the user stops drag-selecting a Scheduler slot range.\n */\n this.slotDragEnd = new EventEmitter();\n /**\n * Fires when the user clicks the **PDF export** command button.\n */\n this.pdfExport = new EventEmitter();\n /**\n * @hidden\n */\n this.dragEndConfirmed = new EventEmitter();\n /**\n * @hidden\n */\n this.resizeEndConfirmed = new EventEmitter();\n /**\n * @hidden\n */\n this.removeConfirmed = new EventEmitter();\n this.viewIndex = 0;\n this._timezone = '';\n this._modelFields = defaultModelFields;\n validatePackage(packageMetadata);\n this.dateRangeStream = viewState.dateRange;\n this.selectedDateStream = viewContext.selectedDate;\n }\n get dir() {\n return this.direction;\n }\n /**\n * The index of the currently selected view.\n *\n * By default, the selected view index is `0` and\n * indicates that the first declared view is visible.\n */\n set selectedViewIndex(index) {\n this.viewIndex = index;\n this.onViewIndexChange();\n }\n get selectedViewIndex() {\n return this.viewIndex;\n }\n /**\n * The first day of the week. Applicable to **Week**, **Month** and **TimelineWeek** views.\n * Defaults to the locale settings.\n */\n set weekStart(value) {\n this._weekStart = value;\n }\n get weekStart() {\n if (isPresent(this._weekStart)) {\n return this._weekStart;\n }\n return this.intlService.firstDay();\n }\n /**\n * Specifies the id of the timezone that will be displayed in the Scheduler.\n * For example, `Europe/Sofia`.\n * Defaults to `Etc/UTC`.\n */\n set timezone(value) {\n this._timezone = value;\n this.events = this.events || [];\n }\n get timezone() {\n return this._timezone;\n }\n /**\n * An array of event instances which will be shown by the Scheduler.\n */\n set events(value) {\n this._events = value;\n this.processEvents(value);\n }\n get events() {\n return this._events;\n }\n /**\n * The currently selected date of the Scheduler.\n * Determines the period which is displayed.\n */\n set selectedDate(value) {\n if (!value) {\n return;\n }\n this._selectedDate = value;\n this.viewContext.notifySelectedDate(value);\n }\n get selectedDate() {\n return this._selectedDate;\n }\n /**\n * The names of the model fields from which the Scheduler will read its data\n * ([see example]({% slug databinding_scheduler %}#toc-binding-to-models)).\n */\n set modelFields(value) {\n this._modelFields = Object.assign(Object.assign({}, defaultModelFields), value);\n }\n get modelFields() {\n return this._modelFields;\n }\n ngOnInit() {\n if (!this.selectedDate) {\n this.selectedDate = todayDate();\n }\n }\n ngAfterContentInit() {\n if (isDevMode() && this.views.length === 0) {\n throw new Error('No views declared for . Please, declare at least one view.');\n }\n this.subs = this.views.changes.subscribe(() => this.resetViewIndex());\n this.subs.add(this.intlService.changes.subscribe(this.intlChange.bind(this)));\n this.subs.add(this.viewState.nextDate.subscribe(nextDate => {\n this.selectedDate = nextDate;\n }));\n this.subs.add(this.viewState.dateRange.subscribe(dateRange => {\n const isEmpty = dateRange.start.getTime() === 0;\n if (!isEmpty) {\n const args = new DateChangeEvent(this, this.selectedDate, dateRange);\n this.dateChange.emit(args);\n }\n }));\n this.subs.add(this.viewState.navigate.subscribe(({ viewName, date }) => {\n const views = this.views.toArray();\n const view = views.find(v => v.name === viewName);\n const args = new NavigateEvent(this, {\n type: 'show-date',\n view: view || {\n name: viewName,\n title: viewName\n },\n date: date\n });\n this.navigate.next(args);\n if (view && !args.isDefaultPrevented()) {\n const index = views.indexOf(view);\n this.selectedView = view;\n this.setViewIndex(index);\n this.selectedDate = date;\n }\n }));\n this.subs.add(this.viewState.viewEvent.subscribe(({ name, args }) => {\n const emitter = this[name];\n const confirmedEmitter = this[`${name}Confirmed`];\n if (hasObservers(emitter) || (confirmedEmitter && hasObservers(confirmedEmitter))) {\n this.zone.run(() => {\n const eventInstance = new VIEW_EVENT_MAP[name](this, args);\n emitter.emit(eventInstance);\n args.prevented = eventInstance.prevented;\n if (confirmedEmitter && !args.prevented) {\n confirmedEmitter.emit(eventInstance);\n }\n });\n }\n }));\n this.subs.add(this.viewState.layoutEnd.subscribe(() => {\n if (this.resizeSensor) {\n this.resizeSensor.acceptSize();\n }\n }));\n this.subs.add(this.viewState.slotSelectionStart\n .subscribe((e) => {\n if (hasObservers(this.slotDragStart)) {\n this.zone.run(() => {\n this.slotDragStart.emit(Object.assign(e, { sender: this }));\n });\n }\n }));\n this.subs.add(this.viewState.slotSelectionDrag\n .subscribe((value) => {\n if (hasObservers(this.slotDrag)) {\n this.zone.run(() => {\n this.slotDrag.emit(new SlotDragEvent(this, value));\n });\n }\n }));\n this.subs.add(this.viewState.slotSelectionEnd\n .subscribe((value) => {\n if (hasObservers(this.slotDragEnd)) {\n this.zone.run(() => {\n this.slotDragEnd.emit(new SlotDragEndEvent(this, value));\n });\n }\n }));\n this.onViewIndexChange();\n this.notifyOptionsChange = this.notifyOptionsChange.bind(this);\n this.subs.add(this.allDayEventTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.eventTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.timeSlotTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.timeSlotTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.minorTimeHeaderTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.majorTimeHeaderTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.monthDaySlotTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.dateHeaderTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.allDaySlotTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.groupHeaderTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.agendaDateTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.agendaTimeTemplate.changes.subscribe(this.notifyOptionsChange));\n this.subs.add(this.views.changes.subscribe(() => {\n this.changeDetector.markForCheck();\n }));\n //this.editService.timezone = this.timezone;\n this.attachEditHandlers();\n this.dialogsService.container = this.confirmationDialogContainerRef;\n this.notifyOptionsChange();\n this.subs.add(this.pdfService.exportClick.subscribe(() => {\n const args = new PDFExportEvent();\n this.pdfExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.saveAsPDF();\n }\n }));\n this.subs.add(this.pdfService.done.subscribe(() => {\n this.loadingComponent.toggle(false);\n }));\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n this.subs.add(this.viewState.optionsChange.subscribe(() => {\n this.changeDetector.markForCheck();\n }));\n this.attachElementEventHandlers();\n }\n ngOnChanges(changes) {\n if (isChanged('resources', changes) && !isChanged('events', changes) && this.viewItems) {\n this.viewItems.forEach(item => {\n copyResources(item.event, this.resources);\n });\n }\n if (anyChanged([\n 'group', 'resources', 'min', 'max', 'showWorkHours', 'startTime', 'scrollTime', 'endTime', 'eventHeight',\n 'workDayStart', 'workDayEnd', 'workWeekStart', 'workWeekEnd', 'weekStart', 'slotDuration', 'slotDivisions',\n 'editable', 'timezone', 'slotClass', 'slotFill', 'columnWidth', 'eventClass', 'eventStyles', 'isSlotSelected', 'selectable'\n ], changes)) {\n this.notifyOptionsChange(changes);\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n if (this.detachElementEventHandlers) {\n this.detachElementEventHandlers();\n }\n }\n /**\n * @hidden\n */\n onResize(_event) {\n this.viewContext.notifyResize();\n }\n /**\n * @hidden\n */\n onNavigationAction(action) {\n const args = new NavigateEvent(this, action);\n this.navigate.next(args);\n if (args.isDefaultPrevented()) {\n return true;\n }\n if (action.type === 'view-change') {\n const views = this.views.toArray();\n const index = views.indexOf(action.view);\n this.selectedView = action.view;\n this.setViewIndex(index);\n }\n else if (action.type === 'select-date') {\n if (this.isInRange(action.date)) {\n this.selectedDate = action.date;\n }\n }\n else if (action.type === 'today') {\n const date = new Date();\n if (this.isInRange(date)) {\n this.selectedDate = date;\n }\n }\n else {\n this.viewContext.notifyAction(action);\n }\n }\n /**\n * Creates a popup editor for the new event.\n *\n * @param group - The [`FormGroup`](https://angular.io/docs/ts/latest/api/forms/index/FormGroup-class.html) that describes\n * the edit form. If called with a data item, the parameter will build the `FormGroup` from the data item fields.\n */\n addEvent(group) {\n const isFormGroup = group instanceof FormGroup;\n if (!isFormGroup) {\n const createControl = (source) => (acc, key) => {\n acc[key] = new FormControl(source[key]);\n return acc;\n };\n const fields = Object.keys(group).reduce(createControl(group), {});\n group = new FormGroup(fields);\n }\n this.editService.addEvent(group);\n }\n /**\n * Switches the specified event in edit mode.\n *\n * @param dataItem - The event that will be switched to edit mode.\n * @param options - An object which contains the form `group` that will be bound in the edit dialog and the current edit `mode`.\n *\n */\n editEvent(dataItem, options = {}) {\n const { group, mode } = options;\n this.editService.editEvent(dataItem, group, mode);\n }\n /**\n * Closes the event editor, if open.\n */\n closeEvent() {\n this.editService.close();\n }\n /**\n * Returns a flag which indicates if an event is currently edited.\n *\n * @return {boolean} - A flag which indicates if an event is currently edited.\n */\n isEditing() {\n return this.editService.isEditing();\n }\n /**\n * Opens the built-in confirmation dialog for defining the edit mode\n * that will be used when the user edits or removes a recurring event.\n *\n * @param operation - The type of operation that will be confirmed. Has to be either **Edit** or **Remove**.\n *\n * @return {Observable}\n */\n openRecurringConfirmationDialog(operation) {\n return this.dialogsService.openRecurringConfirmationDialog(operation);\n }\n /**\n * Opens the built-in removal confirmation dialog.\n *\n * @return {Observable}\n */\n openRemoveConfirmationDialog() {\n return this.dialogsService.openRemoveConfirmationDialog();\n }\n /**\n * Saves the current view as PDF.\n */\n saveAsPDF() {\n this.loadingComponent.toggle(true);\n this.zone.runOutsideAngular(() => {\n // wait a tick in order for the loading element style to be updated by the browser.\n // if the export is synchronous, the browser will not update the element before the export is finished.\n setTimeout(() => {\n this.pdfService.save();\n }, 0);\n });\n }\n /**\n * Scrolls the view to the specified time.\n */\n scrollToTime(time) {\n this.viewContext.notifyAction({\n type: 'scroll-time',\n time: time\n });\n }\n /**\n * Returns the current view slot that matches the passed document position.\n *\n * @param x - The x document position.\n * @param y - The y document position.\n *\n * @return {SchedulerSlot} - The slot.\n *\n * {% embed_file drag-and-drop/app.component.ts %}\n * {% embed_file drag-and-drop/draggable.directive.ts %}\n * {% embed_file drag-and-drop/app.module.ts %}\n * {% embed_file shared/main.ts %}\n */\n slotByPosition(x, y) {\n return this.viewContext.executeMethod('slotByPosition', { x, y });\n }\n /**\n * Returns the event associated with the specified DOM element, if any.\n *\n * @param element - The DOM element document position.\n * @return the event instance, if found.\n */\n eventFromElement(element) {\n return this.viewContext.executeMethod('eventFromElement', { element });\n }\n /**\n * Gets the currently active event, if any.\n * The active event is the event that can currently receive focus.\n */\n get activeEvent() {\n const activeElement = this.focusService.activeElement;\n if (activeElement) {\n return this.eventFromElement(activeElement.nativeElement);\n }\n }\n /**\n * Focuses the next event or an event at a specified relative position.\n * The `options` parameter can be used to set a positive or negative offset\n * that is relative to the currently focused event.\n * A `nowrap` flag toggles the wrapping to the first or to the last item.\n *\n * @example\n * ```ts-no-run\n * scheduler.focusNext(); // Focuses the next event.\n * scheduler.focusNext({ offset: 1 }); // Focuses the next event.\n * scheduler.focusNext({ offset: -1 }); // Focuses the previous event.\n * scheduler.focusNext({ nowrap: true }); // If the focus is on the last event, does not move the focus to the first event.\n * ```\n *\n * @param position The relative position of the event to focus.\n * @returns `true` if the focused event changed. Otherwise, returns `false`.\n */\n focusNext(position) {\n return this.focusService.focusNext(position);\n }\n /**\n * Focuses the previous event or an event at a specified relative position.\n * The `options` parameter can be used to set a positive or negative offset\n * that is relative to the currently focused event.\n * A `nowrap` flag toggles the wrapping to the first or to the last item.\n *\n * @example\n * ```ts-no-run\n * scheduler.focusPrev(); // Focuses the previous event\n * scheduler.focusPrev({ nowrap: true }); // Does not move the focus to the last event, if focus is on the first one.\n * ```\n *\n * @param position The relative position of the event to focus.\n * @returns `true` if the focused event changed. Otherwise, returns `false`.\n */\n focusPrev(position) {\n const prevPosition = Object.assign({ offset: -1 }, position);\n return this.focusService.focusNext(prevPosition);\n }\n /**\n * Focuses the last focused event or the Scheduler element, if no events are available.\n */\n focus() {\n return this.focusService.focus();\n }\n isInRange(date) {\n return (!this.min || this.min <= date) && (!this.max || date <= this.max);\n }\n notifyOptionsChange(changes) {\n const workweek = this.workWeek;\n this.viewContext.notifyOptionsChange({\n group: this.group,\n resources: this.resources,\n allDayEventTemplate: this.allDayEventTemplate ? this.allDayEventTemplate.first : null,\n eventTemplate: this.eventTemplate ? this.eventTemplate.first : null,\n timeSlotTemplate: this.timeSlotTemplate ? this.timeSlotTemplate.first : null,\n minorTimeHeaderTemplate: this.minorTimeHeaderTemplate ? this.minorTimeHeaderTemplate.first : null,\n majorTimeHeaderTemplate: this.majorTimeHeaderTemplate ? this.majorTimeHeaderTemplate.first : null,\n monthDaySlotTemplate: this.monthDaySlotTemplate ? this.monthDaySlotTemplate.first : null,\n dateHeaderTemplate: this.dateHeaderTemplate ? this.dateHeaderTemplate.first : null,\n allDaySlotTemplate: this.allDaySlotTemplate ? this.allDaySlotTemplate.first : null,\n groupHeaderTemplate: this.groupHeaderTemplate ? this.groupHeaderTemplate.first : null,\n agendaDateTemplate: this.agendaDateTemplate ? this.agendaDateTemplate.first : null,\n agendaTimeTemplate: this.agendaTimeTemplate ? this.agendaTimeTemplate.first : null,\n min: this.min,\n max: this.max,\n showWorkHours: this.showWorkHours,\n startTime: this.startTime,\n scrollTime: this.scrollTime,\n endTime: this.endTime,\n workDayStart: this.workDayStart,\n workDayEnd: this.workDayEnd,\n workWeekStart: workweek.start,\n workWeekEnd: workweek.end,\n weekStart: this.weekStart,\n slotDuration: this.slotDuration,\n slotDivisions: this.slotDivisions,\n eventHeight: this.eventHeight,\n editable: this.editable,\n selectable: this.selectable,\n timezone: this.timezone,\n currentTimeMarker: this.currentTimeMarker,\n highlightOngoingEvents: this.highlightOngoingEvents,\n slotClass: this.slotClass,\n slotFill: this.slotFill,\n columnWidth: this.columnWidth,\n eventClass: this.eventClass,\n eventStyles: this.eventStyles,\n isSlotSelected: this.isSlotSelected,\n changes: changes\n });\n }\n get workWeek() {\n let { start, end } = this.intlService.weekendRange();\n const workWeekStart = isPresent(this.workWeekStart) ? this.workWeekStart : (end + 1) % DAYS_IN_WEEK$1;\n const weekEnd = start > 0 ? start - 1 : Day.Saturday;\n const workWeekEnd = isPresent(this.workWeekEnd) ? this.workWeekEnd : weekEnd;\n return { start: workWeekStart, end: workWeekEnd };\n }\n resetViewIndex() {\n const index = this.selectedViewIndex;\n const newIndex = Math.max(0, Math.min(index, this.views.length - 1));\n this.setViewIndex(newIndex);\n this.onViewIndexChange();\n }\n onViewIndexChange() {\n if (!this.views) {\n return;\n }\n const views = this.views.toArray();\n const selectedView = views[this.viewIndex];\n if (selectedView) {\n this.selectedView = selectedView;\n }\n }\n setViewIndex(newIndex) {\n const changed = this.selectedViewIndex !== newIndex;\n if (changed) {\n this.selectedViewIndex = newIndex;\n this.selectedViewIndexChange.emit(newIndex);\n }\n return changed;\n }\n processEvents(dataItems) {\n const timezone = this.timezone;\n const fields = this.modelFields;\n const items = dataItems\n .map(dataItem => readEvent(dataItem, fields, this.resources))\n .filter(event => !isRecurrenceMaster$1(event))\n .map(event => {\n const start = ZonedDate.fromLocalDate(event.start, timezone);\n const end = ZonedDate.fromLocalDate(event.end, timezone);\n return { start, end, event };\n });\n this.viewItems = items;\n this.viewContext.notifyItems(items);\n }\n attachEditHandlers() {\n if (!this.editService) {\n return;\n }\n this.subs.add(this.editService.changes.subscribe(this.emitCRUDEvent.bind(this)));\n }\n emitCRUDEvent(args) {\n Object.assign(args, { sender: this });\n switch (args.action) {\n case 'cancel':\n this.cancel.emit(args);\n break;\n case 'save':\n this.save.emit(args);\n break;\n default: break;\n }\n }\n intlChange() {\n const currentView = this.selectedView;\n this.selectedView = null;\n if (!isPresent(this.workWeekStart) || !isPresent(this.workWeekEnd)) {\n this.notifyOptionsChange();\n }\n this.changeDetector.detectChanges();\n this.selectedView = currentView;\n if (NgZone.isInAngularZone()) {\n this.changeDetector.markForCheck();\n }\n else {\n this.changeDetector.detectChanges();\n }\n }\n attachElementEventHandlers() {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n this.zone.runOutsideAngular(() => {\n const windowBlurSubscription = this.renderer.listen('window', 'blur', (args) => {\n this.domEvents.windowBlur.emit(args);\n });\n const clickSubscription = this.renderer.listen(wrapper, 'click', (args) => {\n this.domEvents.click.emit(args);\n });\n const keydownSubscription = this.renderer.listen(wrapper, 'keydown', args => {\n this.domEvents.keydown.emit(args);\n });\n let focused = false;\n const focusInSubscription = this.renderer.listen(wrapper, 'focusin', (args) => {\n this.domEvents.focus.emit(args);\n if (!focused) {\n this.domEvents.focusIn.emit(args);\n this.renderer.addClass(this.wrapper.nativeElement, 'k-state-focused');\n focused = true;\n }\n });\n const focusOutSubscription = this.renderer.listen(wrapper, 'focusout', (args) => {\n const next = args.relatedTarget || document.activeElement;\n const outside = !closest(next, (node) => node === wrapper);\n if (outside) {\n this.domEvents.focusOut.emit(args);\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-state-focused');\n focused = false;\n }\n });\n this.detachElementEventHandlers = () => {\n windowBlurSubscription();\n clickSubscription();\n keydownSubscription();\n focusInSubscription();\n focusOutSubscription();\n };\n });\n }\n}\nSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerComponent, deps: [{ token: i0.ElementRef }, { token: ViewContextService }, { token: ViewStateService }, { token: EditService }, { token: DialogsService }, { token: i1$4.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: PDFService }, { token: i1$1.LocalizationService }, { token: DomEventsService }, { token: i0.Renderer2 }, { token: FocusService }], target: i0.ɵɵFactoryTarget.Component });\nSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SchedulerComponent, selector: \"kendo-scheduler\", inputs: { selectedViewIndex: \"selectedViewIndex\", editable: \"editable\", selectable: \"selectable\", min: \"min\", max: \"max\", eventHeight: \"eventHeight\", columnWidth: \"columnWidth\", showWorkHours: \"showWorkHours\", startTime: \"startTime\", endTime: \"endTime\", workDayStart: \"workDayStart\", workDayEnd: \"workDayEnd\", workWeekStart: \"workWeekStart\", workWeekEnd: \"workWeekEnd\", weekStart: \"weekStart\", slotDuration: \"slotDuration\", slotDivisions: \"slotDivisions\", slotFill: \"slotFill\", scrollTime: \"scrollTime\", group: \"group\", resources: \"resources\", loading: \"loading\", timezone: \"timezone\", events: \"events\", selectedDate: \"selectedDate\", modelFields: \"modelFields\", currentTimeMarker: \"currentTimeMarker\", highlightOngoingEvents: \"highlightOngoingEvents\", slotClass: \"slotClass\", eventClass: \"eventClass\", eventStyles: \"eventStyles\", isSlotSelected: \"isSlotSelected\" }, outputs: { selectedViewIndexChange: \"selectedViewIndexChange\", navigate: \"navigate\", dateChange: \"dateChange\", slotClick: \"slotClick\", slotDblClick: \"slotDblClick\", create: \"create\", eventClick: \"eventClick\", eventDblClick: \"eventDblClick\", eventKeydown: \"eventKeydown\", cancel: \"cancel\", save: \"save\", remove: \"remove\", resizeStart: \"resizeStart\", resize: \"resize\", resizeEnd: \"resizeEnd\", dragStart: \"dragStart\", drag: \"drag\", dragEnd: \"dragEnd\", slotDragStart: \"slotDragStart\", slotDrag: \"slotDrag\", slotDragEnd: \"slotDragEnd\", pdfExport: \"pdfExport\" }, host: { properties: { \"class.k-widget\": \"this.hostClasses\", \"class.k-scheduler\": \"this.hostClasses\", \"class.k-floatwrap\": \"this.hostClasses\", \"class.k-rtl\": \"this.rtl\", \"attr.dir\": \"this.dir\" } }, providers: [\n EditService,\n DialogsService,\n DomEventsService,\n LocalDataChangesService,\n FocusService,\n SchedulerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: SchedulerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scheduler'\n },\n ToolbarService,\n ViewContextService,\n ViewStateService,\n PDFService\n ], queries: [{ propertyName: \"editDialogTemplate\", first: true, predicate: EditDialogTemplateDirective, descendants: true }, { propertyName: \"toolbarTemplate\", first: true, predicate: ToolbarTemplateDirective, descendants: true }, { propertyName: \"views\", predicate: SchedulerView }, { propertyName: \"allDayEventTemplate\", predicate: AllDayEventTemplateDirective }, { propertyName: \"eventTemplate\", predicate: EventTemplateDirective }, { propertyName: \"timeSlotTemplate\", predicate: TimeSlotTemplateDirective }, { propertyName: \"minorTimeHeaderTemplate\", predicate: MinorTimeHeaderTemplateDirective }, { propertyName: \"majorTimeHeaderTemplate\", predicate: MajorTimeHeaderTemplateDirective }, { propertyName: \"monthDaySlotTemplate\", predicate: MonthDaySlotTemplateDirective }, { propertyName: \"dateHeaderTemplate\", predicate: DateHeaderTemplateDirective }, { propertyName: \"allDaySlotTemplate\", predicate: AllDaySlotTemplateDirective }, { propertyName: \"groupHeaderTemplate\", predicate: GroupHeaderTemplateDirective }, { propertyName: \"agendaDateTemplate\", predicate: AgendaDateTemplateDirective }, { propertyName: \"agendaTimeTemplate\", predicate: AgendaTimeTemplateDirective }], viewQueries: [{ propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: \"confirmationDialogContainerRef\", first: true, predicate: [\"confirmationDialogContainer\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"loadingComponent\", first: true, predicate: LoadingComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n\n \n \n\n \n \n\n \n\n \n\n
    \n
    \n `, isInline: true, styles: [\".k-scheduler.k-state-focused { box-shadow: 0 0.5px 0.5px 0.5px rgba(0, 0, 0, .12); }\"], components: [{ type: ToolbarComponent, selector: \"kendo-scheduler-toolbar\", inputs: [\"selectedView\", \"views\", \"dateRange\", \"selectedDate\", \"template\", \"min\", \"max\"], outputs: [\"navigate\"] }, { type: EditDialogComponent, selector: \"kendo-scheduler-edit-dialog\", inputs: [\"resources\", \"timezone\", \"weekStart\", \"fields\", \"editTemplate\"] }, { type: i12$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }, { type: LoadingComponent, selector: \"[kendoSchedulerLoading]\", inputs: [\"loading\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoSchedulerLocalizedMessages]\" }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler',\n providers: [\n EditService,\n DialogsService,\n DomEventsService,\n LocalDataChangesService,\n FocusService,\n SchedulerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: SchedulerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scheduler'\n },\n ToolbarService,\n ViewContextService,\n ViewStateService,\n PDFService\n ],\n // TODO: Move to themes\n styles: ['.k-scheduler.k-state-focused { box-shadow: 0 0.5px 0.5px 0.5px rgba(0, 0, 0, .12); }'],\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n\n \n\n \n \n\n \n \n\n \n\n \n\n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ViewContextService }, { type: ViewStateService }, { type: EditService }, { type: DialogsService }, { type: i1$4.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: PDFService }, { type: i1$1.LocalizationService }, { type: DomEventsService }, { type: i0.Renderer2 }, { type: FocusService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-scheduler']\n }, {\n type: HostBinding,\n args: ['class.k-floatwrap']\n }], rtl: [{\n type: HostBinding,\n args: ['class.k-rtl']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], selectedViewIndex: [{\n type: Input\n }], editable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], eventHeight: [{\n type: Input\n }], columnWidth: [{\n type: Input\n }], showWorkHours: [{\n type: Input\n }], startTime: [{\n type: Input\n }], endTime: [{\n type: Input\n }], workDayStart: [{\n type: Input\n }], workDayEnd: [{\n type: Input\n }], workWeekStart: [{\n type: Input\n }], workWeekEnd: [{\n type: Input\n }], weekStart: [{\n type: Input\n }], slotDuration: [{\n type: Input\n }], slotDivisions: [{\n type: Input\n }], slotFill: [{\n type: Input\n }], scrollTime: [{\n type: Input\n }], group: [{\n type: Input\n }], resources: [{\n type: Input\n }], loading: [{\n type: Input\n }], timezone: [{\n type: Input\n }], events: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], modelFields: [{\n type: Input\n }], currentTimeMarker: [{\n type: Input\n }], highlightOngoingEvents: [{\n type: Input\n }], slotClass: [{\n type: Input\n }], eventClass: [{\n type: Input\n }], eventStyles: [{\n type: Input\n }], isSlotSelected: [{\n type: Input\n }], selectedViewIndexChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], dateChange: [{\n type: Output\n }], slotClick: [{\n type: Output\n }], slotDblClick: [{\n type: Output\n }], create: [{\n type: Output\n }], eventClick: [{\n type: Output\n }], eventDblClick: [{\n type: Output\n }], eventKeydown: [{\n type: Output\n }], cancel: [{\n type: Output\n }], save: [{\n type: Output\n }], remove: [{\n type: Output\n }], resizeStart: [{\n type: Output\n }], resize: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], drag: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], slotDragStart: [{\n type: Output\n }], slotDrag: [{\n type: Output\n }], slotDragEnd: [{\n type: Output\n }], pdfExport: [{\n type: Output\n }], editDialogTemplate: [{\n type: ContentChild,\n args: [EditDialogTemplateDirective, { static: false }]\n }], toolbarTemplate: [{\n type: ContentChild,\n args: [ToolbarTemplateDirective, { static: false }]\n }], views: [{\n type: ContentChildren,\n args: [SchedulerView]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }], confirmationDialogContainerRef: [{\n type: ViewChild,\n args: [\"confirmationDialogContainer\", { read: ViewContainerRef, static: true }]\n }], loadingComponent: [{\n type: ViewChild,\n args: [LoadingComponent, { static: true }]\n }], allDayEventTemplate: [{\n type: ContentChildren,\n args: [AllDayEventTemplateDirective]\n }], eventTemplate: [{\n type: ContentChildren,\n args: [EventTemplateDirective]\n }], timeSlotTemplate: [{\n type: ContentChildren,\n args: [TimeSlotTemplateDirective]\n }], minorTimeHeaderTemplate: [{\n type: ContentChildren,\n args: [MinorTimeHeaderTemplateDirective]\n }], majorTimeHeaderTemplate: [{\n type: ContentChildren,\n args: [MajorTimeHeaderTemplateDirective]\n }], monthDaySlotTemplate: [{\n type: ContentChildren,\n args: [MonthDaySlotTemplateDirective]\n }], dateHeaderTemplate: [{\n type: ContentChildren,\n args: [DateHeaderTemplateDirective]\n }], allDaySlotTemplate: [{\n type: ContentChildren,\n args: [AllDaySlotTemplateDirective]\n }], groupHeaderTemplate: [{\n type: ContentChildren,\n args: [GroupHeaderTemplateDirective]\n }], agendaDateTemplate: [{\n type: ContentChildren,\n args: [AgendaDateTemplateDirective]\n }], agendaTimeTemplate: [{\n type: ContentChildren,\n args: [AgendaTimeTemplateDirective]\n }] } });\n\n// TODO\n// Extract as public method\nconst occurrences = (item, fields, range, timezone, weekStart) => {\n const rrule = parseRule({\n recurrenceRule: getField(item, fields.recurrenceRule),\n weekStart: weekStart\n });\n if (!rrule.start) {\n const start = getField(item, fields.start);\n rrule.start = ZonedDate.fromLocalDate(start, timezone);\n }\n if (!rrule.end) {\n const end = getField(item, fields.end);\n rrule.end = ZonedDate.fromLocalDate(end, timezone);\n }\n const exceptions = getField(item, fields.recurrenceExceptions);\n if (exceptions) {\n rrule.exceptionDates = exceptions\n .map(exDate => ZonedDate.fromLocalDate(exDate, timezone));\n // TODO: Merge exceptions from recurrence rule with event.recurrenceException\n }\n const utcRangeStart = toUTCDateTime(range.start);\n const utcRangeEnd = toUTCDateTime(range.end);\n const series = expand(rrule, {\n rangeStart: ZonedDate.fromUTCDate(utcRangeStart, timezone),\n rangeEnd: ZonedDate.fromUTCDate(utcRangeEnd, timezone)\n });\n if (!series.events.length) {\n return [];\n }\n const expanded = series.events.map(occ => {\n const event = clone(item);\n setField(event, fields.id, OCCURRENCE_ID);\n setField(event, fields.recurrenceId, getField(item, fields.id));\n setField(event, fields.start, occ.start.toLocalDate());\n setField(event, fields.end, occ.end.toLocalDate());\n return event;\n });\n return [item, ...expanded];\n};\n/**\n * A directive that processes Scheduler events in-memory.\n *\n * Processing includes the expanding of recurring events and the filtering of data for\n * the currently active period.\n *\n * {% meta height:650 %}\n * {% embed_file overview/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% embed_file shared/events-utc.ts %}\n * {% endmeta %}\n */\nclass DataBindingDirective {\n constructor(scheduler, changeDetector, intl, localDataChangesService) {\n this.scheduler = scheduler;\n this.changeDetector = changeDetector;\n this.intl = intl;\n this.localDataChangesService = localDataChangesService;\n this.originalData = [];\n if (localDataChangesService) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(this.rebind.bind(this));\n }\n }\n /**\n * The array of data which will populate the Scheduler.\n */\n set data(value) {\n this.originalData = value || [];\n if (this.localDataChangesService) {\n this.localDataChangesService.data = value;\n }\n this.scheduler.events = this.process();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscription = this.scheduler\n .dateChange\n .subscribe(e => this.onDateChange(e));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n rebind() {\n this.data = this.originalData;\n this.changeDetector.markForCheck();\n }\n process() {\n if (!this.dateRange) {\n // No processing until a date range is set\n return [];\n }\n const data = [];\n const fields = this.scheduler.modelFields;\n this.originalData\n .forEach(item => {\n if (getField(item, fields.recurrenceRule)) {\n const series = occurrences(item, fields, this.dateRange, this.scheduler.timezone, this.scheduler.weekStart);\n data.push(...series);\n }\n else {\n data.push(item);\n }\n });\n return data;\n }\n onDateChange(e) {\n this.dateRange = e.dateRange;\n this.rebind();\n }\n}\nDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, deps: [{ token: SchedulerComponent }, { token: i0.ChangeDetectorRef }, { token: i1$4.IntlService }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DataBindingDirective, selector: \"[kendoSchedulerBinding]\", inputs: { data: [\"kendoSchedulerBinding\", \"data\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerBinding]'\n }]\n }], ctorParameters: function () { return [{ type: SchedulerComponent }, { type: i0.ChangeDetectorRef }, { type: i1$4.IntlService }, { type: LocalDataChangesService }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoSchedulerBinding']\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SchedulerCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSchedulerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSchedulerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SchedulerCustomMessagesComponent, selector: \"kendo-scheduler-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SchedulerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SchedulerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-scheduler-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst publicDirectives$1 = [\n ToolbarNavigationComponent,\n ToolbarTemplateDirective,\n ToolbarViewSelectorComponent\n];\n/**\n * @hidden\n */\nclass ToolbarModule {\n}\nToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarModule, declarations: [ToolbarComponent, ToolbarNavigationComponent,\n ToolbarTemplateDirective,\n ToolbarViewSelectorComponent], imports: [CommonModule,\n ButtonsModule,\n CalendarModule,\n PopupModule,\n EventsModule], exports: [ToolbarComponent, ToolbarNavigationComponent,\n ToolbarTemplateDirective,\n ToolbarViewSelectorComponent] });\nToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarModule, imports: [[\n CommonModule,\n ButtonsModule,\n CalendarModule,\n PopupModule,\n EventsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ButtonsModule,\n CalendarModule,\n PopupModule,\n EventsModule\n ],\n exports: [\n ToolbarComponent,\n ...publicDirectives$1\n ],\n declarations: [\n ToolbarComponent,\n ...publicDirectives$1\n ]\n }]\n }] });\n\nconst defaultSlotClass = (_args) => null;\n/**\n * @hidden\n */\nclass ConfigurationViewBase extends SchedulerView {\n constructor(localization, changeDetector, viewContext, viewState) {\n super();\n this.localization = localization;\n this.changeDetector = changeDetector;\n this.viewContext = viewContext;\n this.viewState = viewState;\n this.schedulerOptions = {};\n this.subs = this.localization.changes.subscribe(() => {\n changeDetector.markForCheck();\n });\n this.subs.add(this.viewContext.optionsChange.subscribe(this.optionsChange.bind(this)));\n }\n /**\n * @hidden\n */\n get viewSlotClass() {\n return isPresent(this.slotClass) ? this.slotClass : (this.schedulerOptions.slotClass || defaultSlotClass);\n }\n /**\n * @hidden\n */\n get viewEventClass() {\n return isPresent(this.eventClass) ? this.eventClass : this.schedulerOptions.eventClass;\n }\n /**\n * @hidden\n */\n get viewEventStyles() {\n return isPresent(this.eventStyles) ? this.eventStyles : this.schedulerOptions.eventStyles;\n }\n /**\n * @hidden\n */\n get viewHighlightOngoingEvents() {\n return isPresent(this.highlightOngoingEvents) ? this.highlightOngoingEvents : this.schedulerOptions.highlightOngoingEvents;\n }\n /**\n * @hidden\n */\n get viewWeekStart() {\n return this.schedulerOptions.weekStart;\n }\n ngOnChanges(_changes) {\n this.viewState.notifyOptionsChange();\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n optionsChange(options) {\n this.schedulerOptions = options;\n }\n}\nConfigurationViewBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationViewBase, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Directive });\nConfigurationViewBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ConfigurationViewBase, inputs: { slotClass: \"slotClass\", eventClass: \"eventClass\", eventStyles: \"eventStyles\", highlightOngoingEvents: \"highlightOngoingEvents\" }, queries: [{ propertyName: \"eventTemplate\", first: true, predicate: EventTemplateDirective, descendants: true }, { propertyName: \"groupHeaderTemplate\", first: true, predicate: GroupHeaderTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"template\", first: true, predicate: [\"content\"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationViewBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { slotClass: [{\n type: Input\n }], eventClass: [{\n type: Input\n }], eventStyles: [{\n type: Input\n }], highlightOngoingEvents: [{\n type: Input\n }], template: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], eventTemplate: [{\n type: ContentChild,\n args: [EventTemplateDirective, { static: false }]\n }], groupHeaderTemplate: [{\n type: ContentChild,\n args: [GroupHeaderTemplateDirective, { static: false }]\n }] } });\n\nconst flip = fn => a => b => fn(b, a);\nconst sort = flip(orderBy);\nconst group = flip(groupBy);\n/**\n * @hidden\n */\nconst compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nconst processEvents = (_start, _end) => compose(group([{ field: \"startDate\" }]), sort([{ field: \"start\", dir: \"asc\" }, { field: \"end\", dir: \"asc\" }]));\nfunction* flattenGroups(groups) {\n for (let index = 0; index < groups.length; index++) {\n const groupItem = groups[index];\n yield {\n type: \"group\",\n dataItem: groupItem,\n rowSpan: groupItem.items.length\n };\n for (let itemIndex = 1; itemIndex < groupItem.items.length; itemIndex++) {\n const item = groupItem.items[itemIndex];\n yield {\n type: \"event\",\n dataItem: item\n };\n }\n }\n}\n/** @hidden */\nclass EmptyIterator {\n [iterator]() {\n return {\n next: () => ({ done: true, value: null })\n };\n }\n toString() {\n return \"Empty Iterator\";\n }\n}\n/**\n * @hidden\n */\nclass TaskCollection {\n constructor(start, end, events) {\n this.start = start;\n this.end = end;\n this.events = events;\n this.createIterator = compose(flattenGroups, processEvents(this.start, this.end));\n }\n static empty() {\n return (new EmptyIterator());\n }\n [iterator]() {\n return this.createIterator(this.events);\n }\n itemAt(index) {\n const taskIterator = this.createIterator(this.events);\n let idx = 0;\n let item;\n do {\n item = taskIterator.next();\n if (item && idx === index) {\n const value = item.value;\n return value.type === 'group' ? value.dataItem.items[0] : value.dataItem;\n }\n idx++;\n } while (item);\n }\n toString() {\n return this.events.toString();\n }\n}\n\n/**\n * @hidden\n */\nfunction createResourceGroups(groupedResources) {\n let result = [];\n const firstResource = groupedResources[0];\n const firstResourceData = firstResource.data;\n for (let dataIdx = 0; dataIdx < firstResourceData.length; dataIdx++) {\n const item = firstResourceData[dataIdx];\n result.push({ resources: [getField(item, firstResource.textField)] });\n }\n for (let idx = 1; idx < groupedResources.length; idx++) {\n const resource = groupedResources[idx];\n const data = resource.data;\n const current = [];\n for (let resourceIdx = 0; resourceIdx < result.length; resourceIdx++) {\n const resourceItem = result[resourceIdx];\n for (let dataIdx = 0; dataIdx < data.length; dataIdx++) {\n const item = data[dataIdx];\n current.push({ resources: resourceItem.resources.concat(getField(item, resource.textField)) });\n }\n }\n result = current;\n }\n return result;\n}\nfunction createTask(item, resourceIdx, resources, color) {\n const event = item.event;\n return {\n event,\n start: item.start.toUTCDate(),\n end: item.end.toUTCDate(),\n title: event.title,\n isAllDay: event.isAllDay,\n color,\n resourceIdx,\n resources\n };\n}\nconst durationInDays = ({ start, end, isAllDay = false }) => {\n const eventEnd = isAllDay ? getUTCDate(end) : end;\n const duration = Math.ceil((eventEnd - +getUTCDate(start)) / MS_PER_DAY);\n if (isAllDay) {\n return duration + 1;\n }\n return duration;\n};\nconst curry = fn => {\n const len = fn.length;\n return (...args) => len === args.length\n ? fn.apply(null, args)\n : curry(fn.bind(null, ...args));\n};\nconst range = num => Array.from(new Array(num).keys());\nconst cloneTask = (eventStart, eventEnd) => task => (Object.assign(Object.assign({}, task), { start: getUTCDate(eventStart), end: task.tail && !task.isAllDay ? eventEnd : addUTCDays(eventStart, 1), startDate: getUTCDate(eventStart) }));\nconst previousEventEnd = (start, events) => events.length\n ? events[events.length - 1].end\n : start;\nconst markAsTail = isLast => task => {\n if (isLast) {\n task.tail = true;\n }\n return task;\n};\nconst markAsMid = task => {\n if (!task.tail) {\n task.mid = true;\n }\n return task;\n};\nconst addTaskPart = (task, start) => (tasks, _, day, days) => tasks.concat(compose(markAsMid, cloneTask(previousEventEnd(start, tasks), task.end), markAsTail(day === days.length - 1))(task));\nconst splitMultiDayTask = (task, start) => range(durationInDays(task) - 1)\n .reduce(addTaskPart(task, start), []);\n/**\n * @hidden\n */\nconst splitTasks = curry((periodStart, periodEnd, tasks) => {\n const result = [];\n for (let index = 0; index < tasks.length; index++) {\n let task = Object.assign({}, tasks[index]);\n task.startDate = getUTCDate(task.start);\n if (task.start >= periodStart && task.start <= periodEnd) {\n result.push(task);\n }\n if (durationInDays(task) > 1) {\n task.end = addUTCDays(task.startDate, 1);\n task.head = true;\n result.push(...splitMultiDayTask(Object.assign({}, tasks[index]), task.end)\n .filter(tsk => getUTCDate(tsk.end) <= periodEnd && tsk.start >= periodStart));\n }\n }\n return result;\n});\nfunction groupByResource(groupedResources, resourceGroups, dateRange) {\n const groups = resourceGroups.filter(group => group.tasks && group.tasks.length);\n if (!groups.length) {\n return [];\n }\n const values = groups[0].resources.map(resource => ({ value: resource, span: 0, groupIdx: 0 }));\n const periodStart = toUTCDate(dateRange.start);\n const periodEnd = toUTCDate(dateRange.end);\n for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n const group = groups[groupIdx];\n group.tasks = splitTasks(periodStart, periodEnd, group.tasks);\n const count = group.tasks.length;\n group.tasks = new TaskCollection(periodStart, periodEnd, group.tasks);\n let invalidate = false;\n for (let resourceIdx = 0; resourceIdx < groupedResources.length; resourceIdx++) {\n const resourceValue = values[resourceIdx];\n if (resourceValue.value !== group.resources[resourceIdx] || invalidate) {\n resourceValue.value = group.resources[resourceIdx];\n const spanGroup = groups[resourceValue.groupIdx];\n spanGroup.spans = spanGroup.spans || [];\n spanGroup.spans[resourceIdx] = resourceValue.span;\n resourceValue.span = count;\n resourceValue.groupIdx = groupIdx;\n invalidate = true;\n }\n else {\n resourceValue.span += count;\n }\n }\n }\n values.forEach((value, index) => {\n const group = groups[value.groupIdx];\n group.spans = group.spans || [];\n group.spans[index] = value.span;\n });\n return groups;\n}\n/**\n * @hidden\n */\nfunction groupEvents(items, { taskResources, resourceGroups, spans, allResources, dateRange }) {\n const groups = resourceGroups || [{}];\n const periodStart = toUTCDate(dateRange.start);\n const periodEnd = toUTCDate(dateRange.end);\n for (let idx = 0; idx < items.length; idx++) {\n const item = items[idx];\n const event = item.event;\n if (!intersects(item.start.toUTCDate(), item.end.toUTCDate(), periodStart, periodEnd)) {\n continue;\n }\n const resources = eventResources(event, { taskResources, hasGroups: resourceGroups && resourceGroups.length > 0, spans, allResources });\n if (resources.length && resources[0].leafIdx >= 0) {\n for (let resourceIdx = 0; resourceIdx < resources.length; resourceIdx++) {\n const current = resources[resourceIdx];\n const task = createTask(item, current.leafIdx, current.resources, current.color);\n const tasks = groups[current.leafIdx].tasks = groups[current.leafIdx].tasks || [];\n tasks.push(task);\n }\n }\n }\n if (resourceGroups) {\n return groupByResource(taskResources, groups, dateRange);\n }\n groups[0].tasks = new TaskCollection(periodStart, periodEnd, splitTasks(periodStart, periodEnd, groups[0].tasks || []));\n return groups;\n}\n\n/**\n * @hidden\n */\nclass AgendaHeaderComponent {\n constructor(localization) {\n this.localization = localization;\n this.classes = true;\n }\n get dateMessage() {\n return this.localization.get('dateHeader');\n }\n get timeMessage() {\n return this.localization.get('timeHeader');\n }\n get eventMessage() {\n return this.localization.get('eventHeader');\n }\n}\nAgendaHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaHeaderComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAgendaHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaHeaderComponent, selector: \"[kendoSchedulerAgendaHeader]\", inputs: { resources: \"resources\" }, host: { properties: { \"class.k-scheduler-header\": \"this.classes\", \"class.k-state-default\": \"this.classes\" } }, ngImport: i0, template: `\n
    \n \n \n \n \n \n \n \n \n \n
    {{ dateMessage }}{{ timeMessage }}{{ eventMessage }}
    \n
    \n `, isInline: true, directives: [{ type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaHeaderComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerAgendaHeader]',\n template: `\n
    \n \n \n \n \n \n \n \n \n \n
    {{ dateMessage }}{{ timeMessage }}{{ eventMessage }}
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { classes: [{\n type: HostBinding,\n args: [\"class.k-scheduler-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-state-default\"]\n }], resources: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass AgendaHeaderItemComponent {\n constructor() {\n this.classes = true;\n }\n get rowSpan() {\n return this.item.rowSpan;\n }\n get itemDate() {\n return toLocalDate(this.item.dataItem.value);\n }\n}\nAgendaHeaderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaHeaderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAgendaHeaderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaHeaderItemComponent, selector: \"[kendoSchedulerAgendaHeaderItem]\", inputs: { item: [\"kendoSchedulerAgendaHeaderItem\", \"item\"], agendaDateTemplate: \"agendaDateTemplate\" }, host: { properties: { \"class.k-scheduler-datecolumn\": \"this.classes\", \"attr.rowspan\": \"this.rowSpan\" } }, ngImport: i0, template: `\n \n {{itemDate | kendoDate: 'dd'}}\n {{itemDate | kendoDate: 'EEEE'}}\n {{itemDate | kendoDate: 'y'}}\n \n \n \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], pipes: { \"kendoDate\": i1$4.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaHeaderItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerAgendaHeaderItem]',\n template: `\n \n {{itemDate | kendoDate: 'dd'}}\n {{itemDate | kendoDate: 'EEEE'}}\n {{itemDate | kendoDate: 'y'}}\n \n \n \n `\n }]\n }], propDecorators: { classes: [{\n type: HostBinding,\n args: [\"class.k-scheduler-datecolumn\"]\n }], rowSpan: [{\n type: HostBinding,\n args: [\"attr.rowspan\"]\n }], item: [{\n type: Input,\n args: [\"kendoSchedulerAgendaHeaderItem\"]\n }], agendaDateTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass AgendaTaskItemComponent {\n constructor(localization, localeId) {\n this.localization = localization;\n this.localeId = localeId;\n }\n get eventTitle() {\n const start = toLocalDate(this.item.start);\n const end = toLocalDate(this.item.end);\n const time = formatEventTime(start, end, this.item.isAllDay, this.localeId);\n return `${time}, ${this.item.event.title}`;\n }\n get eventColor() {\n return this.item.color;\n }\n get deleteMessage() {\n return this.localization.get('deleteTitle');\n }\n get isRecurrence() {\n return isRecurrence(this.item);\n }\n get isRecurrenceException() {\n return isRecurrenceException(this.item);\n }\n get removable() {\n return this.editable && this.editable.remove !== false;\n }\n}\nAgendaTaskItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaTaskItemComponent, deps: [{ token: i1$1.LocalizationService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nAgendaTaskItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaTaskItemComponent, selector: \"[kendoSchedulerAgendaTaskItem]\", inputs: { item: [\"kendoSchedulerAgendaTaskItem\", \"item\"], color: \"color\", eventTemplate: \"eventTemplate\", editable: \"editable\" }, host: { properties: { \"attr.aria-label\": \"this.eventTitle\" } }, ngImport: i0, template: `\n
    \n \n \n \n \n {{item?.title }}\n \n \n \n\n \n \n \n
    \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaTaskItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerAgendaTaskItem]',\n template: `\n
    \n \n \n \n \n {{item?.title }}\n \n \n \n\n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { item: [{\n type: Input,\n args: [\"kendoSchedulerAgendaTaskItem\"]\n }], color: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], editable: [{\n type: Input\n }], eventTitle: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }] } });\n\n/**\n * @hidden\n */\nclass AgendaListComponent {\n constructor(intlService, localization) {\n this.intlService = intlService;\n this.localization = localization;\n this.classes = true;\n }\n extractDataItem(item) {\n return item.type === \"group\" ? item.dataItem.items[0] : item.dataItem;\n }\n formatTime(dataItem) {\n if (dataItem.isAllDay) {\n return this.localization.get('allDay');\n }\n let format = \"{0:t}-{1:t}\";\n if (dataItem.head) {\n format = \"{0:t}\";\n }\n else if (dataItem.tail) {\n format = \"{1:t}\";\n }\n return this.intlService.format(format, toLocalDate(dataItem.start), toLocalDate(dataItem.end));\n }\n trackByFn(index, _item) {\n return index;\n }\n cellClasses(item) {\n const task = this.extractDataItem(item);\n let result = [];\n if (this.slotClass) {\n result = result.concat(convertNgClassBindings(this.slotClass({\n start: task.start,\n end: task.end,\n resources: task.resources,\n event: task.event\n })));\n }\n if (this.eventClass) {\n result = result.concat(convertNgClassBindings(this.eventClass({\n event: task.event,\n resources: task.resources\n })));\n }\n return result;\n }\n getEventStyles(item) {\n if (this.eventStyles) {\n const task = this.extractDataItem(item);\n return this.eventStyles({\n event: task.event,\n resources: task.resources\n });\n }\n }\n}\nAgendaListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaListComponent, deps: [{ token: i1$4.IntlService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAgendaListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaListComponent, selector: \"[kendoSchedulerAgendaList]\", inputs: { tasks: \"tasks\", eventTemplate: \"eventTemplate\", slotClass: \"slotClass\", eventClass: \"eventClass\", eventStyles: \"eventStyles\", agendaTimeTemplate: \"agendaTimeTemplate\", agendaDateTemplate: \"agendaDateTemplate\", editable: \"editable\" }, host: { properties: { \"class.k-scheduler-content\": \"this.classes\" } }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ resource }}\n \n \n
    \n \n {{formatTime(extractDataItem(item)) }}\n \n
    \n \n \n
    \n `, isInline: true, components: [{ type: AgendaHeaderItemComponent, selector: \"[kendoSchedulerAgendaHeaderItem]\", inputs: [\"kendoSchedulerAgendaHeaderItem\", \"agendaDateTemplate\"] }, { type: AgendaTaskItemComponent, selector: \"[kendoSchedulerAgendaTaskItem]\", inputs: [\"kendoSchedulerAgendaTaskItem\", \"color\", \"eventTemplate\", \"editable\"] }], directives: [{ type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i10.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: FocusableDirective, selector: \"[kendoSchedulerFocusIndex]\", inputs: [\"kendoSchedulerFocusIndex\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoSchedulerAgendaList]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ resource }}\n \n \n
    \n \n {{formatTime(extractDataItem(item)) }}\n \n
    \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: i1$1.LocalizationService }]; }, propDecorators: { classes: [{\n type: HostBinding,\n args: ['class.k-scheduler-content']\n }], tasks: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], slotClass: [{\n type: Input\n }], eventClass: [{\n type: Input\n }], eventStyles: [{\n type: Input\n }], agendaTimeTemplate: [{\n type: Input\n }], agendaDateTemplate: [{\n type: Input\n }], editable: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass AgendaViewInternalComponent {\n constructor(viewContext, viewState, intl, renderer, element, zone, pdfService, localization) {\n this.viewContext = viewContext;\n this.viewState = viewState;\n this.intl = intl;\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.pdfService = pdfService;\n this.localization = localization;\n this.tasks = new BehaviorSubject(null);\n this.groupedResources = [];\n this.spans = [];\n this.subs = new Subscription();\n }\n get eventTemplateRef() {\n return this.eventTemplate || (this.schedulerEventTemplate || {}).templateRef;\n }\n get agendaTimeTemplateRef() {\n return this.agendaTimeTemplate || (this.schedulerAgendaTimeTemplate || {}).templateRef;\n }\n get agendaDateTemplateRef() {\n return this.agendaDateTemplate || (this.schedulerAgendaDateTemplate || {}).templateRef;\n }\n ngOnInit() {\n this.updateContentHeight = this.updateContentHeight.bind(this);\n this.subs.add(this.viewContext.selectedDate.subscribe(this.onSelectDate.bind(this)));\n this.subs.add(this.viewContext.action.subscribe(this.onAction.bind(this)));\n this.subs.add(this.viewContext.execute.subscribe(this.execute.bind(this)));\n this.subs.add(this.viewContext.resize.subscribe(this.updateContentHeight));\n this.subs.add(combineLatest(this.viewContext.items, this.viewState.dateRange).pipe(map(([items, dateRange]) => {\n this.items = items;\n this.range = dateRange;\n return this.createEventGroups();\n }))\n .subscribe((tasks) => {\n this.tasks.next(tasks);\n }));\n this.subs.add(this.viewContext.optionsChange.subscribe(this.optionsChange.bind(this)));\n const onStable = () => this.zone.onStable.pipe(take(1));\n this.subs.add(combineLatest(this.tasks, this.localization.changes).pipe(switchMap(onStable))\n .subscribe(this.updateContentHeight));\n this.subs.add(this.pdfService.createElement.subscribe(this.createPDFElement.bind(this)));\n }\n ngOnChanges(changes) {\n if (anyChanged(['selectedDateFormat', 'selectedShortDateFormat', 'numberOfDays'], changes)) {\n this.viewState.notifyDateRange(this.dateRange(this.selectedDate));\n }\n }\n ngAfterViewInit() {\n if (!this.element) {\n return;\n }\n const contentElement = this.content.nativeElement;\n this.zone.runOutsideAngular(() => {\n this.subs.add(merge(fromEvent(contentElement, 'click'), fromEvent(contentElement, 'contextmenu'), fromEvent(contentElement, 'dblclick'))\n .subscribe(e => this.onClick(e)));\n this.subs.add(fromEvent(contentElement, 'keydown')\n .subscribe(e => this.onKeydown(e)));\n });\n }\n onClick(e) {\n const targetTask = this.targetTask(e.target);\n if (targetTask) {\n const { task, eventTarget } = targetTask;\n const eventType = e.type;\n const isSingle = eventType === 'click';\n const isDouble = eventType === 'dblclick';\n if (isSingle && closestInScope(e.target, node => hasClasses(node, 'k-event-delete'), eventTarget)) {\n this.viewState.emitEvent('remove', { event: task.event, dataItem: task.event.dataItem });\n }\n else {\n const name = isDouble ? 'eventDblClick' : 'eventClick';\n this.viewState.emitEvent(name, { type: eventType, event: task.event, originalEvent: e });\n }\n }\n }\n onKeydown(e) {\n const targetTask = this.targetTask(e.target);\n if (targetTask) {\n const task = targetTask.task;\n this.viewState.emitEvent('eventKeydown', { event: task.event, dataItem: task.event.dataItem, originalEvent: e });\n }\n }\n targetTask(target) {\n const eventTarget = closestInScope(target, node => node.hasAttribute('data-task-index'), this.element.nativeElement);\n if (eventTarget) {\n return {\n eventTarget,\n task: this.elementTask(eventTarget)\n };\n }\n }\n updateContentHeight() {\n const element = this.element.nativeElement;\n const parent = element.parentNode;\n const content = this.content.nativeElement;\n this.renderer.setStyle(content, 'height', '');\n let height = parent.clientHeight;\n for (let idx = 0; idx < parent.children.length; idx++) {\n const child = parent.children[idx];\n if (child !== element && !ignoreContentChild(child)) {\n height -= child.offsetHeight;\n }\n }\n const headerElement = this.headerWrap.nativeElement;\n height -= this.headerWrap ? headerElement.offsetHeight : 0;\n this.renderer.setStyle(content, 'height', `${height}px`);\n const rtl = this.localization.rtl;\n const padding = hasScrollbar(content, 'vertical') ? scrollbarWidth() : 0;\n this.renderer.setStyle(headerElement, !rtl ? 'padding-right' : 'padding-left', `${padding}px`);\n this.renderer.setStyle(headerElement, rtl ? 'padding-right' : 'padding-left', '0px');\n this.viewState.notifyLayoutEnd();\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n optionsChange(changes) {\n this.group = changes.group;\n this.resources = changes.resources;\n this.groupResources();\n this.min = changes.min;\n this.max = changes.max;\n this.editable = changes.editable;\n if (this.items && this.items.length) {\n this.tasks.next(this.createEventGroups());\n }\n this.schedulerEventTemplate = changes.eventTemplate;\n this.schedulerAgendaTimeTemplate = changes.agendaTimeTemplate;\n this.schedulerAgendaDateTemplate = changes.agendaDateTemplate;\n }\n onSelectDate(date) {\n this.selectedDate = date;\n this.viewState.notifyDateRange(this.dateRange());\n }\n onAction(e) {\n const now = getDate(this.selectedDate);\n if (e.type === 'next') {\n const next = getDate(addDays(now, this.numberOfDays));\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n if (e.type === 'prev') {\n const next = getDate(addDays(now, -this.numberOfDays));\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n }\n createEventGroups() {\n const resourceGroups = this.groupedResources.length ? createResourceGroups(this.groupedResources) : null;\n const eventGroups = this.groups = groupEvents(this.items, {\n taskResources: this.taskResources,\n resourceGroups,\n allResources: this.resources,\n spans: this.spans,\n dateRange: this.range\n });\n return eventGroups;\n }\n dateRange(date = this.selectedDate) {\n const start = getDate(date);\n const end = getDate(addDays(start, this.numberOfDays));\n const rangeEnd = getDate(addDays(start, this.numberOfDays - 1));\n const text = this.intl.format(this.selectedDateFormat, start, rangeEnd);\n const shortText = this.intl.format(this.selectedShortDateFormat, start, rangeEnd);\n return { start, end, text, shortText };\n }\n groupResources() {\n const resources = this.resources || [];\n const group = this.group || {};\n const grouped = group.resources;\n const groupedResources = this.groupedResources = [];\n if (grouped && grouped.length) {\n for (let groupIdx = 0; groupIdx < grouped.length; groupIdx++) {\n const name = grouped[groupIdx];\n const resource = resources.find(item => item.name === name);\n if (resource) {\n groupedResources.push(resource);\n }\n }\n }\n this.spans = this.resourceSpans();\n }\n resourceSpans() {\n const spans = [1];\n const resources = this.groupedResources;\n let span = 1;\n for (let idx = resources.length - 1; idx > 0; idx--) {\n span *= ((resources[idx].data || []).length || 1);\n spans.unshift(span);\n }\n return spans;\n }\n get taskResources() {\n if (this.groupedResources.length) {\n return this.groupedResources;\n }\n else if (this.resources && this.resources.length) {\n return [this.resources[0]];\n }\n else {\n return [{}];\n }\n }\n isInRange(date) {\n const dateRange = this.dateRange(date);\n return (!this.min || this.min < dateRange.end) && (!this.max || dateRange.start <= this.max);\n }\n createPDFElement() {\n const element = this.element.nativeElement.cloneNode(true);\n element.style.width = `${this.element.nativeElement.offsetWidth}px`;\n element.querySelector('.k-scheduler-content').style.height = 'auto';\n const header = element.querySelector('.k-scheduler-header');\n header.style.paddingRight = 0;\n header.style.paddingLeft = 0;\n this.pdfService.elementReady.emit({\n element: element\n });\n }\n elementTask(element) {\n const index = parseInt(element.getAttribute('data-task-index'), 10);\n const groupIndex = parseInt(element.getAttribute('data-group-index'), 10);\n const group = this.groups[groupIndex];\n const task = group.tasks.itemAt(index);\n return task;\n }\n execute(e) {\n if (e.name === 'slotByPosition') {\n const slot = this.slotByPosition(e.args);\n e.result(slot);\n }\n else if (e.name === 'eventFromElement') {\n const task = this.elementTask(e.args.element);\n if (task) {\n e.result(task.event);\n }\n }\n }\n slotByPosition({ x, y }) {\n const contentTable = this.content.nativeElement.querySelector('table');\n const offset = elementOffset(contentTable);\n if (offset.top <= y && y <= offset.top + offset.height) {\n const contentRows = contentTable.rows;\n if (!contentRows.length) {\n return;\n }\n const taskOffset = elementOffset(contentRows[0].cells[contentRows[0].cells.length - 1]);\n if (taskOffset.left <= x && x <= taskOffset.left + taskOffset.width) {\n for (let idx = 0; idx < contentRows.length; idx++) {\n const row = contentRows[idx];\n const rowOffset = elementOffset(row);\n if (rowOffset.top <= y && y <= rowOffset.top + rowOffset.height) {\n const element = row.querySelector('[data-task-index]');\n const task = this.elementTask(element);\n const event = task.event;\n return {\n element: new ElementRef(element),\n start: event.start,\n end: event.end,\n event: event,\n resources: task.resources,\n isAllDay: task.isAllDay\n };\n }\n }\n }\n }\n }\n}\nAgendaViewInternalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewInternalComponent, deps: [{ token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: PDFService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAgendaViewInternalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaViewInternalComponent, selector: \"agenda-view-internal\", inputs: { eventTemplate: \"eventTemplate\", slotClass: \"slotClass\", eventClass: \"eventClass\", eventStyles: \"eventStyles\", agendaTimeTemplate: \"agendaTimeTemplate\", agendaDateTemplate: \"agendaDateTemplate\", selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\", numberOfDays: \"numberOfDays\" }, viewQueries: [{ propertyName: \"headerWrap\", first: true, predicate: [\"headerWrap\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: AgendaHeaderComponent, selector: \"[kendoSchedulerAgendaHeader]\", inputs: [\"resources\"] }, { type: AgendaListComponent, selector: \"[kendoSchedulerAgendaList]\", inputs: [\"tasks\", \"eventTemplate\", \"slotClass\", \"eventClass\", \"eventStyles\", \"agendaTimeTemplate\", \"agendaDateTemplate\", \"editable\"] }], pipes: { \"async\": i10.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewInternalComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'agenda-view-internal',\n template: `\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: PDFService }, { type: i1$1.LocalizationService }]; }, propDecorators: { eventTemplate: [{\n type: Input\n }], slotClass: [{\n type: Input\n }], eventClass: [{\n type: Input\n }], eventStyles: [{\n type: Input\n }], agendaTimeTemplate: [{\n type: Input\n }], agendaDateTemplate: [{\n type: Input\n }], selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], numberOfDays: [{\n type: Input\n }], headerWrap: [{\n type: ViewChild,\n args: ['headerWrap', { read: ElementRef, static: true }]\n }], content: [{\n type: ViewChild,\n args: ['content', { read: ElementRef, static: true }]\n }] } });\n\n/**\n * The component for rendering the **Agenda** view.\n */\nclass AgendaViewComponent extends ConfigurationViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D} - {1:D}`,\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedDateFormat = '{0:D} - {1:D}';\n /**\n * The short-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:d} - {1:d}`,\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedShortDateFormat = '{0:d} - {1:d}';\n /**\n * Specifies the number of days that the view will render.\n * Defaults to `7`.\n */\n this.numberOfDays = 7;\n /**\n * The invariant name for this view (`agenda`).\n */\n this.name = 'agenda';\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('agendaViewTitle');\n }\n}\nAgendaViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nAgendaViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgendaViewComponent, selector: \"kendo-scheduler-agenda-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\", numberOfDays: \"numberOfDays\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => AgendaViewComponent)\n }], queries: [{ propertyName: \"eventTemplate\", first: true, predicate: EventTemplateDirective, descendants: true }, { propertyName: \"agendaTimeTemplate\", first: true, predicate: AgendaTimeTemplateDirective, descendants: true }, { propertyName: \"agendaDateTemplate\", first: true, predicate: AgendaDateTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: AgendaViewInternalComponent, selector: \"agenda-view-internal\", inputs: [\"eventTemplate\", \"slotClass\", \"eventClass\", \"eventStyles\", \"agendaTimeTemplate\", \"agendaDateTemplate\", \"selectedDateFormat\", \"selectedShortDateFormat\", \"numberOfDays\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-agenda-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => AgendaViewComponent)\n }],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], numberOfDays: [{\n type: Input\n }], eventTemplate: [{\n type: ContentChild,\n args: [EventTemplateDirective, { static: false }]\n }], agendaTimeTemplate: [{\n type: ContentChild,\n args: [AgendaTimeTemplateDirective, { static: false }]\n }], agendaDateTemplate: [{\n type: ContentChild,\n args: [AgendaDateTemplateDirective, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass SharedModule {\n static exports() {\n return [\n FocusableDirective\n ];\n }\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [FocusableDirective], exports: [FocusableDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n FocusableDirective\n ],\n exports: [\n FocusableDirective\n ]\n }]\n }] });\n\nconst COMPONENTS = [\n AgendaHeaderComponent,\n AgendaHeaderItemComponent,\n AgendaListComponent,\n AgendaTaskItemComponent,\n AgendaViewComponent,\n AgendaViewInternalComponent\n];\n/**\n * @hidden\n */\nclass AgendaViewModule {\n}\nAgendaViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAgendaViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewModule, declarations: [AgendaHeaderComponent,\n AgendaHeaderItemComponent,\n AgendaListComponent,\n AgendaTaskItemComponent,\n AgendaViewComponent,\n AgendaViewInternalComponent], imports: [CommonModule, IntlModule, SharedModule], exports: [AgendaViewComponent] });\nAgendaViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewModule, imports: [[CommonModule, IntlModule, SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgendaViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, IntlModule, SharedModule],\n exports: [AgendaViewComponent],\n declarations: [COMPONENTS]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass BaseSlotService {\n constructor() {\n this.containerSize = 0;\n this.slotsChange = new EventEmitter();\n this.groups = [];\n }\n registerItem(component) {\n const group = this.itemGroup(component);\n group.registerItem(component);\n }\n unregisterItem(component, id) {\n id = id || {\n index: component.index,\n resourceIndex: component.resourceIndex,\n rangeIndex: component.rangeIndex\n };\n const group = this.groups[id.resourceIndex];\n if (group) {\n group.unregisterItem(component, id);\n }\n }\n registerSlot(slot) {\n const group = this.slotGroup(slot);\n group.registerSlot(slot);\n }\n unregisterSlot(slot) {\n const group = this.groups[slot.id.resourceIndex];\n if (group) {\n group.unregisterSlot(slot);\n }\n }\n invalidate() {\n this.clearEmptyGroups();\n this.cleanRanges();\n this.slotsChange.emit();\n this.forEachSlot(slot => {\n slot.invalidate();\n });\n }\n cleanRanges() {\n this.groups.forEach(group => {\n group.cleanRanges();\n });\n }\n clearEmptyGroups() {\n const groups = this.groups;\n let index = this.groups.length - 1;\n while (index > 0 && !groups[index].hasSlots) {\n groups.splice(index, 1);\n index--;\n }\n }\n itemGroup(item) {\n const index = item.resourceIndex;\n if (!this.groups[index]) {\n this.groups[index] = this.createGroup(index);\n }\n return this.groups[index];\n }\n slotGroup(slot) {\n const index = slot.id.resourceIndex;\n if (!this.groups[index]) {\n this.groups[index] = this.createGroup(index);\n }\n return this.groups[index];\n }\n}\n\n/**\n * @hidden\n */\nclass BaseViewItem {\n constructor(slotService, localization, focusService, element, renderer, localeId) {\n this.slotService = slotService;\n this.localization = localization;\n this.focusService = focusService;\n this.element = element;\n this.renderer = renderer;\n this.localeId = localeId;\n this.className = true;\n this.subs = new Subscription();\n }\n get taskIndex() {\n return this.item.index;\n }\n get touchAction() {\n return this.editable && this.editable.drag !== false ? 'none' : null;\n }\n get eventTitle() {\n const startTime = toLocalDate(this.item.startTime);\n const endTime = toLocalDate(this.item.endTime);\n const time = formatEventTime(startTime, endTime, this.item.isAllDay, this.localeId);\n return `${time}, ${this.item.event.title}`;\n }\n get deleteMessage() {\n return this.localization.get('deleteTitle');\n }\n get resizable() {\n return this.editable && this.editable.resize !== false;\n }\n get removable() {\n return this.editable && this.editable.remove !== false;\n }\n get isRecurrence() {\n return isRecurrence(this.item);\n }\n get isRecurrenceException() {\n return isRecurrenceException(this.item);\n }\n get nativeElement() {\n if (this.element) {\n return this.element.nativeElement;\n }\n }\n setStyles(styles) {\n const element = this.nativeElement;\n if (element) {\n for (let name in styles) {\n if (styles.hasOwnProperty(name)) {\n this.renderer.setStyle(element, name, styles[name]);\n }\n }\n }\n }\n toggle(visible) {\n this.setStyles({ display: visible ? 'block' : 'none' });\n }\n reflow() {\n const rect = this.rect;\n if (rect) {\n this.setStyles({\n left: !this.localization.rtl ? `${rect.left}px` : '',\n right: this.localization.rtl ? `${rect.left}px` : '',\n top: `${rect.top}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n display: 'block'\n });\n }\n }\n ngOnInit() {\n if (this.dragHint) {\n return;\n }\n this.subs.add(this.slotService.slotsChange.subscribe(() => {\n this.rect = null;\n this.setStyles({\n display: 'none',\n width: 0,\n left: 0\n });\n const slotId = { index: this.index, resourceIndex: this.resourceIndex, rangeIndex: this.rangeIndex };\n this.slotService.unregisterItem(this, slotId);\n if (this.resourceIndex >= 0) {\n this.slotService.registerItem(this);\n }\n }));\n }\n ngOnChanges(changes) {\n if (this.dragHint) {\n return;\n }\n if (anyChanged(['index', 'resourceIndex', 'rangeIndex'], changes)) {\n const { resourceIndex, index, rangeIndex } = changes;\n const previousResourceIndex = resourceIndex ? resourceIndex.previousValue : this.resourceIndex;\n const previousIndex = index ? index.previousValue : this.index;\n const previousRangeIndex = rangeIndex ? rangeIndex.previousValue : this.rangeIndex;\n const slotId = {\n index: previousIndex,\n resourceIndex: previousResourceIndex,\n rangeIndex: previousRangeIndex\n };\n this.slotService.unregisterItem(this, slotId);\n if (this.resourceIndex >= 0) {\n this.slotService.registerItem(this);\n this.toggle(true);\n }\n else {\n this.toggle(false);\n }\n }\n }\n ngOnDestroy() {\n if (this.dragHint) {\n return;\n }\n this.slotService.unregisterItem(this);\n this.subs.unsubscribe();\n }\n}\nBaseViewItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseViewItem, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nBaseViewItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseViewItem, inputs: { item: \"item\", resourceIndex: \"resourceIndex\", rangeIndex: \"rangeIndex\", index: \"index\", eventTemplate: \"eventTemplate\", editable: \"editable\", dragHint: \"dragHint\", resources: \"resources\" }, host: { properties: { \"class.k-event\": \"this.className\", \"attr.data-task-index\": \"this.taskIndex\", \"style.touch-action\": \"this.touchAction\", \"attr.aria-label\": \"this.eventTitle\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseViewItem, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: BaseSlotService }, { type: i1$1.LocalizationService }, { type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined }]; }, propDecorators: { item: [{\n type: Input\n }], resourceIndex: [{\n type: Input\n }], rangeIndex: [{\n type: Input\n }], index: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], editable: [{\n type: Input\n }], dragHint: [{\n type: Input\n }], resources: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-event']\n }], taskIndex: [{\n type: HostBinding,\n args: ['attr.data-task-index']\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }], eventTitle: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }] } });\n\n/**\n * @hidden\n */\nclass ItemMap {\n constructor() {\n this.count = 0;\n this.items = {};\n }\n get first() {\n if (this.count > 0) {\n return this.items[Object.keys(this.items)[0]];\n }\n }\n get last() {\n if (this.count > 0) {\n const keys = Object.keys(this.items);\n return this.items[keys[keys.length - 1]];\n }\n }\n addItem(index, item) {\n if (!this.items[index]) {\n this.count++;\n }\n this.items[index] = item;\n }\n removeItem(index, item) {\n const current = this.items[index];\n if (current === item) {\n delete this.items[index];\n this.count--;\n }\n }\n toArray() {\n return Object.keys(this.items).map(index => this.items[index]);\n }\n}\n\n/** @hidden */\nconst MIDNIGHT_INVARIANT = new Date(1980, 0, 1);\n/** @hidden */\nconst INVARIANT_END = new Date(1980, 0, 2);\n/** @hidden */\nconst MS_PER_SECOND = 1000;\n/** @hidden */\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\n/** @hidden */\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\n//probably should calculate this\n/** @hidden */\nconst BORDER_WIDTH = 1;\n/** @hidden */\nconst DEFAULT_EVENT_HEIGHT = 25;\n/** @hidden */\nconst ONGOING_EVENT_CSS_CLASS = 'k-event-ongoing';\n/** @hidden */\nconst DAYS_IN_WEEK_COUNT = 7;\n/** @hidden */\nconst WEEKS_COUNT = 6;\n\n//better try to measure this one\nconst MORE_BUTTON_HEIGHT = 13;\nconst EVENT_OFFSET = 2;\n/**\n * @hidden\n */\nclass SlotRange$1 {\n constructor(index) {\n this.index = index;\n this.slotMap = new ItemMap();\n this.itemMap = new ItemMap();\n }\n get slots() {\n return this.slotMap.toArray();\n }\n get items() {\n return this.itemMap.toArray();\n }\n get start() {\n const first = this.slotMap.first;\n if (!first) {\n return null;\n }\n return first.start;\n }\n get end() {\n const last = this.slotMap.last;\n if (!last) {\n return null;\n }\n return addUTCDays(last.end, 1);\n }\n get hasSlots() {\n return this.slotMap.count > 0;\n }\n get hasItems() {\n return this.itemMap.count > 0;\n }\n get firstSlot() {\n return this.slotMap.first;\n }\n get lastSlot() {\n return this.slotMap.last;\n }\n get rect() {\n const first = this.firstSlot.rect;\n const last = this.lastSlot.rect;\n return {\n left: first.left,\n top: first.top,\n width: last.left - first.left + last.width,\n height: last.top - first.top + last.height\n };\n }\n registerItem(component) {\n this.itemMap.addItem(component.item.index, component);\n }\n unregisterItem(component, index) {\n this.itemMap.removeItem(index, component);\n }\n registerSlot(slot) {\n this.slotMap.addItem(slot.id.index, slot);\n }\n unregisterSlot(slot) {\n this.slotMap.removeItem(slot.id.index, slot);\n }\n layout(eventHeight) {\n if (!this.hasItems) {\n return;\n }\n const items = this.items;\n const sorted = orderBy(items, [{ field: \"item.startTime\", dir: \"asc\" }, { field: \"item.endTime\", dir: \"desc\" }]);\n const slotItems = {};\n const slots = this.slots;\n sorted.forEach(event => slots\n .filter(slot => intersects(event.item.startTime, event.item.endTime, slot.start, slot.end))\n .forEach(slot => {\n const value = slotItems[slot.key] = slotItems[slot.key] || { events: [], height: slot.linkHeight };\n value.slot = slot;\n const rect = slot.rect;\n const data = event.item.data[event.resourceIndex];\n data.rowIndex = findRowIndex(value.events, data);\n if (value.height + eventHeight + EVENT_OFFSET + MORE_BUTTON_HEIGHT > rect.height || data.hidden) {\n data.hidden = true;\n slot.showMore({ width: rect.width, left: rect.left, top: rect.top + slot.linkHeight + ((data.rowIndex) * (eventHeight + EVENT_OFFSET)) });\n }\n else {\n value.events[data.rowIndex] = event;\n if (!event.rect) {\n event.rect = {\n top: rect.top + slot.linkHeight + (data.rowIndex * (eventHeight + EVENT_OFFSET)),\n left: rect.left,\n height: eventHeight,\n width: 0\n };\n }\n event.rect.width += rect.width + BORDER_WIDTH;\n value.height += eventHeight + EVENT_OFFSET;\n }\n }));\n sorted.forEach(event => {\n if (event.rect) {\n event.rect.width -= BORDER_WIDTH;\n }\n event.reflow();\n });\n }\n}\n/**\n * @hidden\n */\nclass MonthResourceGroup {\n constructor(index) {\n this.index = index;\n this.dayRanges = [];\n }\n get hasSlots() {\n return Boolean(this.dayRanges.find(range => range && range.hasSlots));\n }\n registerSlot(slot) {\n const range = this.slotRange(slot);\n range.registerSlot(slot);\n }\n unregisterSlot(slot) {\n const range = this.dayRanges[slot.id.rangeIndex];\n range.unregisterSlot(slot);\n if (!range.hasSlots) {\n delete this.dayRanges[slot.id.rangeIndex];\n }\n }\n registerItem(component) {\n const range = this.dayRanges[component.rangeIndex];\n range.registerItem(component);\n }\n unregisterItem(component, id) {\n const range = this.dayRanges[id.rangeIndex];\n if (range) {\n range.unregisterItem(component, id.index);\n }\n }\n slotRange(slot) {\n const ranges = this.dayRanges;\n const rangeIndex = slot.id.rangeIndex;\n if (!ranges[rangeIndex]) {\n ranges[rangeIndex] = new SlotRange$1(rangeIndex);\n }\n return ranges[rangeIndex];\n }\n forEachRange(callback) {\n for (let i = 0; i < this.dayRanges.length; i++) {\n callback(this.dayRanges[i]);\n }\n }\n cleanRanges() {\n this.dayRanges = this.dayRanges.filter(r => Boolean(r));\n }\n}\n/**\n * @hidden\n */\nclass MonthSlotService extends BaseSlotService {\n layout(eventHeight) {\n this.groups.forEach((group) => group.forEachRange(range => range.layout(eventHeight)));\n }\n slotByIndex(slotIndex) {\n const [resourceIndex, rangeIndex, index] = slotIndex.split(':').map(part => parseInt(part, 10));\n return this.groups[resourceIndex].dayRanges[rangeIndex].slots[index];\n }\n forEachSlot(callback) {\n this.groups.forEach((group) => {\n group.dayRanges.forEach(range => {\n range.slots.forEach(slot => callback(slot));\n });\n });\n }\n forEachItem(callback) {\n this.groups.forEach((group) => {\n group.dayRanges.forEach(range => {\n range.items.forEach(viewItem => callback(viewItem));\n });\n });\n }\n createGroup(index) {\n return new MonthResourceGroup(index);\n }\n invalidate() {\n super.invalidate();\n this.forEachItem((viewItem) => {\n const data = viewItem.item.data;\n Object.keys(data).forEach(resourceIndex => {\n data[resourceIndex].hidden = false;\n });\n });\n }\n slotByPosition(x, y) {\n let range;\n this.groups.find((group) => {\n range = group.dayRanges.find(r => rectContains(r.rect, x, y));\n return range;\n });\n if (range) {\n return range.slots.find(slot => rectContains(slot.rect, x, y));\n }\n }\n dragRanges(currentSlot, offset) {\n const start = new Date(currentSlot.start.getTime() - offset.start);\n const end = new Date(currentSlot.start.getTime() + offset.end);\n const group = this.groups[currentSlot.id.resourceIndex];\n const ranges = [];\n group.dayRanges.forEach(range => {\n const slots = range.slots.filter(s => intersects(start, end, s.start, s.end));\n if (slots.length) {\n ranges.push(slots);\n }\n });\n return {\n start,\n end,\n ranges\n };\n }\n groupSlotByPosition(currentSlot, x, y) {\n const range = this.groups[currentSlot.id.resourceIndex].dayRanges.find(r => rectContains(r.rect, x, y));\n if (range) {\n return range.slots.find(slot => rectContains(slot.rect, x, y));\n }\n }\n resizeRanges(currentSlot, task, resizeStart, offset) {\n const group = this.groups[task.resources[0].leafIdx];\n const ranges = [];\n const startDate = task.start.toUTCDate();\n const endDate = task.end.toUTCDate();\n let start, end;\n if (resizeStart) {\n start = currentSlot.start.getTime() + offset.start;\n if (start > endDate.getTime()) {\n start = new Date(Math.min(dateWithTime(endDate, startDate).getTime(), endDate.getTime()));\n }\n end = endDate;\n }\n else {\n start = startDate;\n end = currentSlot.start.getTime() + offset.end;\n if (end < start.getTime()) {\n end = new Date(Math.max(dateWithTime(startDate, endDate).getTime(), start.getTime()));\n }\n }\n group.dayRanges.forEach(range => {\n const slots = range.slots.filter(s => intersects(start, end, s.start, s.end));\n if (slots.length) {\n ranges.push(slots);\n }\n });\n return {\n start: new Date(start),\n end: new Date(end),\n ranges: ranges\n };\n }\n}\n\n/**\n * @hidden\n */\nclass MonthViewItemComponent extends BaseViewItem {\n constructor(slotService, localization, focusService, element, renderer, localeId) {\n super(slotService, localization, focusService, element, renderer, localeId);\n this.localeId = localeId;\n }\n reflow() {\n if (this.item.data[this.resourceIndex].hidden) {\n this.toggle(false);\n return;\n }\n super.reflow();\n }\n}\nMonthViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewItemComponent, deps: [{ token: MonthSlotService }, { token: i1$1.LocalizationService }, { token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nMonthViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthViewItemComponent, selector: \"[monthViewItem]\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
    \n
    {{ item.event.title }}
    \n
    \n\n \n \n \n \n \n \n\n \n \n \n \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[monthViewItem]',\n template: `\n \n \n \n \n \n \n \n
    \n
    {{ item.event.title }}
    \n
    \n\n \n \n \n \n \n \n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: MonthSlotService }, { type: i1$1.LocalizationService }, { type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst last = (arr) => arr[arr.length - 1];\n/**\n * @hidden\n */\nconst createTasks$2 = (periodStart, periodEnd, items, ranges) => {\n const tasks = [];\n const utcStart = toUTCDate(periodStart);\n const utcEnd = toUTCDate(periodEnd);\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const data = {};\n const startTime = item.start.toUTCDate();\n const end = item.end;\n const endTime = (item.end.getTime() !== end.getTime() ? end.addDays(1) : end).toUTCDate();\n if (intersects(startTime, endTime, utcStart, utcEnd)) {\n for (let rangeIdx = 0; rangeIdx < ranges.length; rangeIdx++) {\n const range = ranges[rangeIdx];\n const rangeStart = toUTCDate(range[0]);\n const rangeEnd = addUTCDays(toUTCDate(last(range)), 1);\n if (intersects(startTime, endTime, rangeStart, rangeEnd)) {\n const task = {\n index,\n startTime,\n endTime,\n start: item.start,\n end: item.end,\n event: item.event,\n isAllDay: item.event.isAllDay,\n rangeIndex: rangeIdx,\n data: data\n };\n tasks.push(task);\n task.head = task.endTime > rangeEnd;\n task.tail = task.startTime < rangeStart;\n }\n }\n }\n }\n return sortTasksByTime(tasks);\n};\nfunction clearTaskData(task) {\n const data = task.data;\n for (let key in data) {\n if (data.hasOwnProperty(key)) {\n delete data[key];\n }\n }\n}\n/**\n * @hidden\n */\nfunction updateTaskData(tasks) {\n for (let idx = 0; idx < tasks.length; idx++) {\n const task = tasks[idx];\n const resources = task.resources;\n clearTaskData(task);\n for (let resourceIdx = 0; resourceIdx < resources.length; resourceIdx++) {\n task.data[resources[resourceIdx].leafIdx] = {};\n }\n }\n}\n\nconst SCROLL_CHANGE = 15;\nconst MIN_DISTANCE = 60;\nconst SCROLL_INTERVAL = 50;\nconst MIN_MOVE_DISTANCE = 10;\n/** @hidden */\nclass BaseView {\n constructor(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, cdr) {\n this.viewContext = viewContext;\n this.viewState = viewState;\n this.intl = intl;\n this.slotService = slotService;\n this.zone = zone;\n this.renderer = renderer;\n this.element = element;\n this.pdfService = pdfService;\n this.localization = localization;\n this.cdr = cdr;\n /**\n * The non-all-day events.\n */\n this.items = new BehaviorSubject(null);\n this.horizontalResources = [];\n this.verticalResources = [];\n this.dragHints = [];\n this.resizeHints = [];\n this.getField = getField;\n this.changes = new BehaviorSubject(null);\n this.viewRangeChange = new BehaviorSubject(null);\n this.subs = new Subscription();\n this.groupedResources = [];\n this.spans = [];\n this.domEvents = [];\n this.resourcesCache = {};\n /**\n * The slot which is currently being dragged over while selecting a range of slots.\n */\n this.dragSelecting = null;\n /**\n * The slot where the drag-selecting originated. Used for flipping the start and end of the emitted range.\n */\n this.dragSelectOrigin = null;\n this.autoHeight = false;\n this.rtl = false;\n this.isSlotSelected = () => false;\n this.setSlotClass = this.setSlotClass.bind(this);\n this.setHintClass = this.setHintClass.bind(this);\n this.weekStart = intl.firstDay();\n }\n get eventTemplateRef() {\n return this.еventTemplate || (this.schedulerEventTemplate || {}).templateRef;\n }\n get groupHeaderTemplateRef() {\n return this.groupHeaderTemplate || (this.schedulerGroupHeaderTemplate || {}).templateRef;\n }\n ngOnInit() {\n const updateView = this.updateView.bind(this);\n this.resourcesByIndex = this.resourcesByIndex.bind(this);\n this.subs.add(this.viewContext.selectedDate.subscribe(this.onSelectDate.bind(this)));\n this.subs.add(this.viewContext.action.subscribe(this.onAction.bind(this)));\n this.subs.add(this.viewContext.execute.subscribe(this.execute.bind(this)));\n this.subs.add(this.viewContext.resize.subscribe(() => {\n this.toggleElement(false);\n this.updateView();\n }));\n this.subs.add(this.viewContext.optionsChange.subscribe(this.optionsChange.bind(this)));\n this.subs.add(this.changes.subscribe(() => {\n this.toggleElement(false);\n }));\n this.subs.add(combineLatest(this.viewContext.items, this.viewState.dateRange, this.viewRangeChange)\n .pipe(map(([items, dateRange]) => this.createTasks(items, dateRange)))\n .subscribe((tasks) => {\n this.tasks = tasks;\n this.assignResources();\n this.onTasksChange();\n }));\n this.subs.add(combineLatest(this.items, this.changes, this.localization.changes).pipe(switchMap(() => this.onStable()))\n .subscribe(updateView));\n this.subs.add(this.pdfService.createElement.subscribe(this.createPDFElement.bind(this)));\n }\n ngOnChanges(changes) {\n if (anyChanged(['selectedDateFormat', 'selectedShortDateFormat'], changes)) {\n this.viewState.notifyDateRange(this.dateRange(this.selectedDate));\n }\n if (changes.eventHeight) {\n this.changes.next(null);\n }\n }\n ngAfterViewInit() {\n this.bindEvents();\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n }));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n this.domEvents.forEach(unbindHandler => unbindHandler());\n this.domEvents = [];\n if (this.draggable) {\n this.draggable.destroy();\n this.draggable = null;\n }\n }\n itemIndex(index, _) {\n return index;\n }\n resourcesByIndex(index) {\n if (!this.resources) {\n return [];\n }\n if (!this.group) { // When we have resources, but are not grouped, return all resources.\n return this.resources.reduce((result, resource) => result.concat(resource.data || []), []);\n }\n if (!this.resourcesCache[index]) {\n const resources = this.taskResources;\n const result = [];\n let currentIndex = index;\n for (let idx = 0; idx < resources.length; idx++) {\n const data = resources[idx].data || [];\n const dataIdx = Math.floor(currentIndex / this.spans[idx]);\n result.push(data[dataIdx]);\n currentIndex -= dataIdx * this.spans[idx];\n }\n this.resourcesCache[index] = result;\n }\n return this.resourcesCache[index];\n }\n dragResourcesByIndex(index) {\n const allResources = this.resources || [];\n const result = [];\n if (this.groupedResources.length) {\n const resources = this.resourcesByIndex(index).slice(0);\n const taskResources = this.taskResources;\n for (let idx = 0; idx < taskResources.length; idx++) {\n const index = this.resources.indexOf(taskResources[idx]);\n if (index >= 0) {\n result[index] = resources[idx];\n }\n }\n }\n for (let idx = 0; idx < allResources.length; idx++) {\n if (!result[idx]) {\n result[idx] = resourceItemByValue(this.dragging.task.event, allResources[idx]);\n }\n }\n return result;\n }\n getEventClasses(item, resources, isAllDay) {\n if (this.eventClass) {\n return this.eventClass({\n event: item.event,\n resources,\n isAllDay\n });\n }\n }\n getEventStyles(item, itemResource, isAllDay) {\n const result = { backgroundColor: itemResource.color, borderColor: itemResource.color };\n if (this.eventStyles) {\n Object.assign(result, this.eventStyles({\n event: item.event,\n resources: itemResource.resources,\n isAllDay\n }));\n }\n return result;\n }\n // Similar to https://tc39.es/proposal-temporal/docs/plaindate.html\n // Stores a \"plain date\" in the UTC parts of a regular `Date`.\n toPlainDate(date) {\n const result = toUTCDateTime(this.convertDate(date));\n return result;\n }\n // Similar to https://tc39.es/proposal-temporal/docs/plaindatetime.html\n // Stores a \"plain date-time\" in the UTC parts of a regular `Date`.\n toPlainDateTime(date, time) {\n if (!date || !time) {\n return null;\n }\n return this.toPlainDate(dateWithTime(date, time));\n }\n optionsChange(options) {\n this.schedulerEventTemplate = options.eventTemplate;\n this.schedulerGroupHeaderTemplate = options.groupHeaderTemplate;\n this.min = options.min;\n this.max = options.max;\n this.editable = options.editable;\n this.timezone = options.timezone;\n this.selectable = options.selectable;\n this.isSlotSelected = options.isSlotSelected;\n if (!options.changes || anyChanged(['group', 'resources'], options.changes, false) ||\n options.group !== this.group || options.resources !== this.resources) {\n this.group = options.group;\n this.resources = options.resources;\n this.groupResources();\n this.resourcesCache = {};\n if (this.tasks && this.tasks.length) {\n this.assignResources();\n this.onTasksChange();\n }\n this.changes.next(null);\n }\n }\n toggleElement(visible) {\n if (this.element) {\n this.renderer.setStyle(this.element.nativeElement, 'display', visible ? 'block' : 'none');\n }\n }\n onStable() {\n return this.zone.onStable.asObservable().pipe(take(1));\n }\n updateView() {\n this.slotService.invalidate();\n this.toggleElement(true);\n this.reflow();\n this.viewState.notifyLayoutEnd();\n this.viewState.emitEvent(slotDragEventName.refreshSlotSelection);\n }\n assignResources() {\n assignTasksResources(this.tasks, {\n taskResources: this.taskResources,\n hasGroups: this.groupedResources.length > 0,\n allResources: this.resources,\n spans: this.spans\n });\n }\n bindEvents() {\n const contentElement = this.content.nativeElement;\n const element = this.element.nativeElement;\n this.zone.runOutsideAngular(() => {\n if (this.times) {\n this.subs.add(merge(fromEvent(this.times.nativeElement, 'mousewheel'), fromEvent(this.times.nativeElement, 'DOMMouseScroll')).pipe(filter((event) => !event.ctrlKey), tap(preventLockedScroll(contentElement)), map(wheelDeltaY))\n .subscribe(x => contentElement.scrollTop -= x));\n }\n this.subs.add(merge(fromClick(contentElement), fromEvent(contentElement, 'contextmenu'))\n .subscribe(e => this.onClick(e)));\n this.subs.add(fromDoubleClick(contentElement)\n .subscribe(e => this.onClick(e, 'dblclick')));\n this.subs.add(fromEvent(element, 'keydown')\n .subscribe(e => this.onKeydown(e)));\n this.domEvents.push(this.renderer.listen(contentElement, 'scroll', () => {\n if (this.headerWrap) {\n this.headerWrap.nativeElement.scrollLeft = contentElement.scrollLeft;\n }\n if (this.times) {\n this.times.nativeElement.scrollTop = contentElement.scrollTop;\n }\n }));\n this.draggable = new Draggable({\n press: this.onPress.bind(this),\n drag: this.onDrag.bind(this),\n release: this.onRelease.bind(this)\n });\n this.draggable.bindTo(element);\n });\n }\n onPress(args) {\n const editResizable = this.editable && this.editable.resize !== false;\n const editDraggable = this.editable && this.editable.drag !== false;\n const target = args.originalEvent.target;\n if (hasClasses(target, 'k-resize-handle')) {\n if (!editResizable) {\n return;\n }\n this.initResize(args);\n }\n else if (editDraggable) {\n const task = this.targetTask(target);\n if (task) {\n if (!args.isTouch) {\n args.originalEvent.preventDefault();\n }\n this.pressLocation = { x: args.pageX, y: args.pageY };\n this.pressTarget = task;\n }\n }\n const notDraggingEvent = !this.pressTarget;\n if (notDraggingEvent && this.selectable) {\n this.initDragSelect(args);\n }\n this.dragArgs = args;\n }\n onDrag(args) {\n if (this.resizing) {\n this.resize(args);\n this.scrollContainer(this.resize, args);\n }\n else {\n this.initDrag(args);\n if (this.dragging) {\n this.drag(args);\n args.originalEvent.preventDefault();\n this.scrollContainer(this.drag, args);\n }\n if (this.dragSelecting) {\n this.dragSelect(args);\n }\n }\n this.dragArgs = args;\n }\n onRelease(args) {\n clearInterval(this.scrollInterval);\n const { resizing, dragging, dragSelecting } = this;\n if (resizing) {\n this.emitEvent('resizeEnd', {\n event: resizing.task.event,\n dataItem: resizing.task.event.dataItem,\n start: this.convertDate(resizing.start),\n end: this.convertDate(resizing.end)\n });\n this.resizeHints = [];\n }\n if (dragging) {\n this.emitEvent('dragEnd', {\n event: dragging.task.event,\n dataItem: dragging.task.event.dataItem,\n start: dragging.start ? this.convertDate(dragging.start) : dragging.task.start.toLocalDate(),\n end: dragging.end ? this.convertDate(dragging.end) : dragging.task.end.toLocalDate(),\n resources: dragging.resources,\n isAllDay: this.draggedIsAllDay(dragging.task, dragging.slot)\n });\n this.dragHints = [];\n }\n if (resizing || dragging) {\n this.removeSlotClass();\n this.updateHintContainer();\n this.resizing = null;\n this.dragging = null;\n }\n if (dragSelecting) {\n const { start, end } = normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting);\n const range = {\n start: this.convertDate(start),\n end: this.convertDate(end),\n isAllDay: this.dragSelecting.isDaySlot,\n resources: this.resourcesByIndex(this.dragSelecting.id.resourceIndex),\n originalEvent: args.originalEvent\n };\n this.viewState.notifySlotSelectionEnd(range);\n this.dragSelectOrigin = null;\n this.dragSelecting = null;\n this.cdr.markForCheck();\n }\n this.container = null;\n this.dragArgs = null;\n this.pressLocation = null;\n this.pressTarget = null;\n }\n setHintClass(className) {\n (this.dragging || this.resizing).hintClass = className;\n }\n updateHintClass() {\n const current = this.dragging || this.resizing;\n let update = false;\n this.hints.forEach(hint => {\n if (hint.class !== current.hintClass) {\n hint.class = current.hintClass;\n update = true;\n }\n });\n if (update) {\n this.updateHintContainer();\n }\n }\n removeHintClass() {\n (this.dragging || this.resizing).hintClass = null;\n }\n setSlotClass(className) {\n const current = this.dragging || this.resizing;\n current.slotClass = className;\n this.renderer.addClass(current.slot.nativeElement, current.slotClass);\n }\n removeSlotClass() {\n const current = this.dragging || this.resizing;\n if (current.slotClass) {\n this.renderer.removeClass(current.slot.nativeElement, current.slotClass);\n current.slotClass = null;\n }\n }\n get hints() {\n return this.dragging ? this.dragHints : this.resizeHints;\n }\n initDrag(args) {\n if (!this.dragging && this.pressLocation && pointDistance(this.pressLocation.x, this.pressLocation.y, args.pageX, args.pageY) >= MIN_MOVE_DISTANCE) {\n const dragging = this.pressTarget;\n const task = dragging.task;\n if (this.emitEvent('dragStart', { event: task.event, dataItem: task.event.dataItem })) {\n this.pressLocation = null;\n this.pressTarget = null;\n return;\n }\n this.updateDragContainer(args);\n if (this.containerOffset === undefined) {\n return;\n }\n const { x, y } = this.coordinatesOffset(this.pressLocation.x, this.pressLocation.y);\n const slot = this.slotByPosition(Math.ceil(x), Math.ceil(y), this.container);\n if (!slot) {\n return;\n }\n this.dragging = dragging;\n this.dragging.offset = {\n start: slot.start.getTime() - task.start.toUTCDate().getTime(),\n end: task.end.toUTCDate().getTime() - slot.start.getTime()\n };\n this.dragging.slot = slot;\n this.dragging.startResources = this.dragging.resourceItems = this.dragResourcesByIndex(slot.id.resourceIndex);\n this.dragging.resources = this.resourceValues(task, this.dragging.startResources);\n }\n }\n updateDragContainer(_args) {\n if (!this.container) {\n this.container = this.content.nativeElement;\n this.containerOffset = elementOffset(this.container);\n }\n }\n drag(args) {\n this.updateDragContainer(args);\n if (!this.container) {\n return;\n }\n const { x, y } = this.coordinatesOffset(args.pageX, args.pageY);\n const slot = this.slotByPosition(x, y, this.container);\n if (slot && (slot !== this.dragging.slot || !this.dragHints.length)) {\n const dragging = this.dragging;\n const { slot: currentSlot, task } = dragging;\n const { ranges, start, end, isAllDay } = this.dragRanges(slot);\n let resourceItems, resourceValues;\n if (currentSlot.id.resourceIndex !== slot.id.resourceIndex) {\n resourceItems = this.dragResourcesByIndex(slot.id.resourceIndex);\n resourceValues = this.resourceValues(task, resourceItems);\n }\n else {\n resourceItems = dragging.resourceItems;\n resourceValues = dragging.resources;\n }\n this.removeSlotClass();\n dragging.start = start;\n dragging.end = end;\n dragging.slot = slot;\n dragging.resources = resourceValues;\n dragging.resourceItems = resourceItems;\n dragging.hintClass = null;\n if (this.emitEvent('drag', {\n event: task.event,\n dataItem: task.event.dataItem,\n start: this.convertDate(start),\n end: this.convertDate(end),\n resources: resourceValues,\n isAllDay,\n setHintClass: this.setHintClass,\n setSlotClass: this.setSlotClass\n })) {\n this.updateHintClass();\n return;\n }\n const color = this.dragResourceColor(task, resourceItems);\n const hintClasses = this.dragHintClasses();\n this.dragHints = [];\n for (let idx = 0; idx < ranges.length; idx++) {\n const slots = ranges[idx];\n const first = slots[0];\n const last = slots[slots.length - 1];\n const size = this.dragHintSize(first, last);\n let origin = first.rect.left;\n const styles = {\n top: toPx(first.rect.top),\n left: this.localization.rtl ? '' : toPx(origin),\n right: !this.localization.rtl ? '' : toPx(origin),\n width: size.width,\n height: size.height,\n backgroundColor: color,\n borderColor: color\n };\n if (this.eventStyles) {\n Object.assign(styles, this.eventStyles(this.dragHintEventStyleArgs()));\n }\n this.dragHints.push({\n item: Object.assign({}, this.dragging.task, {\n startTime: start,\n endTime: end\n }),\n resources: resourceItems,\n class: hintClasses,\n style: styles\n });\n }\n this.updateHintContainer();\n }\n }\n initDragSelect(args) {\n this.updateDragContainer(args);\n if (!this.containerOffset) {\n return;\n }\n const { x, y } = this.coordinatesOffset(args.pageX, args.pageY);\n const slot = this.slotByPosition(x, y, this.container);\n if (!slot) {\n return;\n }\n const range = {\n start: this.convertDate(slot.start),\n end: this.convertDate(slot.end),\n isAllDay: slot.isDaySlot,\n resources: this.resourcesByIndex(slot.id.resourceIndex),\n originalEvent: args.originalEvent\n };\n const slotDragStartEvent = new SlotDragStartEvent(null, range);\n this.viewState.notifySlotSelectionStart(slotDragStartEvent);\n if (!slotDragStartEvent.isDefaultPrevented()) {\n this.dragSelecting = slot;\n this.dragSelectOrigin = slot;\n this.cdr.markForCheck();\n }\n }\n dragSelect(args) {\n const { x, y } = this.coordinatesOffset(args.pageX, args.pageY);\n const slot = this.slotByPosition(x, y, this.container);\n if (!slot) {\n return;\n }\n if (this.dragSelecting !== slot) {\n this.dragSelecting = slot;\n const { start, end } = normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting);\n const range = {\n start: this.convertDate(start),\n end: this.convertDate(end),\n isAllDay: slot.isDaySlot,\n resources: this.resourcesByIndex(slot.id.resourceIndex),\n originalEvent: args.originalEvent\n };\n this.viewState.notifySlotSelectionDrag(range);\n this.cdr.markForCheck();\n }\n }\n dragHintClasses() {\n const hintClass = this.dragging.hintClass;\n let result = [];\n if (hintClass) {\n result.push(hintClass);\n }\n if (this.eventClass) {\n const eventClass = this.eventClass(this.dragHintEventStyleArgs());\n result = result.concat(convertNgClassBindings(eventClass));\n }\n return result;\n }\n dragHintEventStyleArgs() {\n return {\n event: this.dragging.task.event,\n resources: this.dragging.resourceItems\n };\n }\n draggedIsAllDay(task, _slot) {\n return Boolean(task.event.isAllDay);\n }\n dragResourceColor(task, slotResources) {\n if (this.groupedResources.length) {\n const index = this.resources.indexOf(this.groupedResources[0]);\n return getField(slotResources[index], this.groupedResources[0].colorField);\n }\n else if (this.resources && this.resources.length) {\n return task.resources[0].color;\n }\n return '';\n }\n resourceValues(task, currentResources) {\n const result = {};\n for (let idx = 0; idx < currentResources.length; idx++) {\n const resource = this.resources[idx];\n const resourceItem = currentResources[idx];\n let value;\n if (Array.isArray(resourceItem)) { // not grouped multiple resource\n value = getField(task.event, resource.field);\n }\n else {\n value = getField(currentResources[idx], resource.valueField);\n if (resource.multiple) {\n const startValue = getField(this.dragging.startResources[idx], resource.valueField);\n if (startValue !== value) {\n value = [value];\n }\n else {\n value = getField(task.event.dataItem, resource.field);\n }\n }\n }\n setField(result, resource.field, value);\n }\n return result;\n }\n initResize(args) {\n args.originalEvent.preventDefault();\n const target = args.originalEvent.target;\n const resizing = this.targetTask(target);\n if (this.emitEvent('resizeStart', { event: resizing.task.event, dataItem: resizing.task.event.dataItem })) {\n return;\n }\n this.resizing = resizing;\n resizing.start = resizing.task.start.toUTCDate();\n resizing.end = resizing.task.end.toUTCDate();\n if (hasClasses(target, 'k-resize-n')) {\n resizing.direction = 'n';\n }\n else if (hasClasses(target, 'k-resize-s')) {\n resizing.direction = 's';\n }\n else if (hasClasses(target, 'k-resize-w')) {\n resizing.direction = 'w';\n }\n else {\n resizing.direction = 'e';\n }\n this.updateDragContainer(args);\n const { x, y } = this.coordinatesOffset(args.pageX, args.pageY);\n resizing.slot = this.slotByPosition(Math.ceil(x), Math.ceil(y), this.container);\n resizing.offset = {\n start: resizing.task.start.toUTCDate().getTime() - resizing.slot.start.getTime(),\n end: resizing.task.end.toUTCDate().getTime() - resizing.slot.start.getTime()\n };\n }\n resize(args) {\n const { x, y } = this.coordinatesOffset(args.pageX, args.pageY);\n const resizing = this.resizing;\n const { direction, task, offset } = resizing;\n const slot = this.slotService.groupSlotByPosition(resizing.slot, x, y);\n if (!slot || slot === resizing.slot) {\n return;\n }\n this.removeSlotClass();\n const { start, end, ranges } = this.slotService.resizeRanges(slot, task, direction === 'w' || direction === 'n', offset);\n resizing.hintClass = null;\n resizing.start = start;\n resizing.end = end;\n resizing.slot = slot;\n if (this.emitEvent('resize', {\n event: task.event,\n dataItem: task.event.dataItem,\n start: this.convertDate(start),\n end: this.convertDate(end),\n setHintClass: this.setHintClass,\n setSlotClass: this.setSlotClass\n })) {\n this.updateHintClass();\n return;\n }\n this.updateResizeHints(ranges, start, end);\n this.updateHintContainer();\n }\n updateResizeHints(ranges, _start, _end) {\n const resizing = this.resizing;\n const direction = resizing.direction;\n const horizontal = direction === 'w' || direction === 'e';\n const resizeStart = direction === 'w' || direction === 'n';\n this.resizeHints = [];\n for (let idx = 0; idx < ranges.length; idx++) {\n const range = ranges[idx];\n const firstSlot = range[0];\n const lastSlot = range[range.length - 1];\n const first = idx === 0;\n const last = idx === ranges.length - 1;\n this.resizeHints.push({\n first: first,\n last: last,\n rect: {\n left: firstSlot.rect.left,\n top: firstSlot.top,\n height: horizontal ? firstSlot.height : Math.abs(lastSlot.rect.top - firstSlot.rect.top) + lastSlot.rect.height,\n width: horizontal ? Math.abs(lastSlot.rect.left - firstSlot.rect.left) + lastSlot.rect.width : firstSlot.width\n },\n start: first && !resizeStart ? resizing.start : firstSlot.start,\n end: last && resizeStart ? resizing.end : lastSlot.end,\n class: resizing.hintClass\n });\n }\n }\n coordinatesOffset(x, y, container = this.container, offset = this.containerOffset) {\n const position = x - offset.left + container.scrollLeft;\n return {\n x: !this.localization.rtl ? position : this.slotService.containerSize - position,\n y: y - offset.top + container.scrollTop\n };\n }\n scrollContainer(callback, args) {\n clearInterval(this.scrollInterval);\n const container = this.container;\n if (!container) {\n return;\n }\n const viewPortY = args.pageY - this.containerOffset.top;\n const pointerYDistance = Math.abs(container.offsetHeight - viewPortY);\n const deltaY = args.pageY - this.dragArgs.pageY;\n const viewPortX = args.pageX - this.containerOffset.left;\n const pointerXDistance = Math.abs(container.offsetWidth - viewPortX);\n const deltaX = args.pageX - this.dragArgs.pageX;\n let scroll = false;\n let leftChange = 0;\n let topChange = 0;\n if (pointerYDistance < MIN_DISTANCE && container.scrollTop + container.offsetHeight < container.scrollHeight && deltaY > 0) {\n scroll = true;\n topChange = SCROLL_CHANGE;\n this.container.scrollTop += MIN_DISTANCE - pointerYDistance;\n }\n else if (viewPortY < MIN_DISTANCE && container.scrollTop > 0 && deltaY < 0) {\n scroll = true;\n topChange = -SCROLL_CHANGE;\n this.container.scrollTop -= MIN_DISTANCE - viewPortY;\n }\n if (pointerXDistance < MIN_DISTANCE && container.scrollLeft + container.offsetWidth < container.scrollWidth && deltaX > 0) {\n scroll = true;\n leftChange = SCROLL_CHANGE;\n this.container.scrollLeft += MIN_DISTANCE - pointerXDistance;\n }\n else if (viewPortX < MIN_DISTANCE && container.scrollLeft > 0 && deltaY < 0) {\n scroll = true;\n leftChange = -SCROLL_CHANGE;\n this.container.scrollLeft -= MIN_DISTANCE - viewPortX;\n }\n if (scroll) {\n this.scrollInterval = setInterval(() => {\n if (this.container) {\n this.container.scrollLeft += leftChange;\n this.container.scrollTop += topChange;\n callback.call(this, args);\n }\n else {\n clearInterval(this.scrollInterval);\n }\n }, SCROLL_INTERVAL);\n }\n }\n emitEvent(name, args) {\n this.viewState.emitEvent(name, args);\n return args.prevented;\n }\n targetTask(target) {\n const eventTarget = closestInScope(target, node => node.hasAttribute('data-task-index'), this.element.nativeElement);\n if (eventTarget) {\n const index = parseInt(eventTarget.getAttribute('data-task-index'), 10);\n return {\n target: eventTarget,\n task: this.tasks.find(t => t.index === index)\n };\n }\n }\n updateHintContainer() {\n if (this.hintContainer) {\n this.hintContainer.detectChanges();\n }\n }\n /**\n * Converts a \"view date\" (date stored in the UTC parts of a Date object) to a local date.\n */\n convertDate(date) {\n return ZonedDate.fromUTCDate(date, this.timezone).toLocalDate();\n }\n onClick(e, eventType = e.type) {\n this.emitSlotEvent(e, eventType);\n this.emitTaskEvent(e, eventType);\n }\n emitSlotEvent(e, eventType) {\n const targetSlot = closestInScope(e.target, node => node.hasAttribute('data-slot-index'), this.element.nativeElement);\n if (targetSlot) {\n const slotIndex = targetSlot.getAttribute('data-slot-index');\n const name = eventType === 'dblclick' ? 'slotDblClick' : 'slotClick';\n const slot = this.slotByIndex(slotIndex, e);\n this.viewState.emitEvent(name, {\n type: eventType,\n slot: slot,\n start: this.convertDate(slot.start),\n end: this.convertDate(slot.end),\n isAllDay: slot.isDaySlot,\n originalEvent: e,\n resources: this.resources && this.resources.length ?\n this.resourcesByIndex(slot.id.resourceIndex) : []\n });\n }\n }\n emitTaskEvent(e, eventType) {\n const targetTask = this.targetTask(e.target);\n if (targetTask) {\n const task = targetTask.task;\n const isSingle = eventType === 'click';\n const isDouble = eventType === 'dblclick';\n if (isSingle && closestInScope(e.target, node => hasClasses(node, 'k-event-delete'), targetTask.target)) {\n this.viewState.emitEvent('remove', { event: task.event, dataItem: task.event.dataItem });\n }\n else {\n const name = isDouble ? 'eventDblClick' : 'eventClick';\n this.viewState.emitEvent(name, { type: eventType, event: task.event, originalEvent: e });\n targetTask.target.focus();\n }\n }\n }\n onKeydown(e) {\n const targetTask = this.targetTask(e.target);\n if (targetTask) {\n const task = targetTask.task;\n this.viewState.emitEvent('eventKeydown', { event: task.event, dataItem: task.event.dataItem, originalEvent: e });\n }\n }\n syncTables() {\n if (this.timesTable) {\n this.renderer.setStyle(this.timesTable.nativeElement, 'height', `${this.contentTable.nativeElement.offsetHeight}px`);\n }\n if (this.header) {\n this.renderer.setStyle(this.header.nativeElement, !this.localization.rtl ? 'padding-right' : 'padding-left', `${hasScrollbar(this.content.nativeElement, 'vertical') ? scrollbarWidth() - BORDER_WIDTH : 0}px`);\n this.renderer.setStyle(this.header.nativeElement, this.localization.rtl ? 'padding-right' : 'padding-left', '0px');\n }\n if (this.times) {\n const times = this.times.nativeElement;\n this.timesHeader.nativeElement.style.width = `${times.offsetWidth}px`;\n const contentHeight = this.contentHeight === 'auto' ? this.content.nativeElement.offsetHeight : this.contentHeight;\n this.renderer.setStyle(times, 'height', `${contentHeight - (hasScrollbar(this.content.nativeElement, 'horizontal') ? scrollbarWidth() : 0)}px`);\n times.scrollTop = this.content.nativeElement.scrollTop;\n }\n }\n updateContentHeight() {\n const element = this.element.nativeElement;\n const parent = element.parentNode;\n const content = this.content.nativeElement;\n const autoHeight = this.autoHeight || !parent.style.height;\n const scrollLeft = content.scrollLeft;\n const scrollTop = content.scrollTop;\n this.renderer.setStyle(content, 'height', '');\n if (this.times) {\n this.renderer.setStyle(this.times.nativeElement, 'height', '');\n }\n if (autoHeight) {\n this.contentHeight = 'auto';\n return;\n }\n let height = parent.clientHeight;\n for (let idx = 0; idx < parent.children.length; idx++) {\n const child = parent.children[idx];\n if (child !== element && !ignoreContentChild(child)) {\n height -= child.offsetHeight;\n }\n }\n height -= this.headerWrap ? this.headerWrap.nativeElement.offsetHeight : 0;\n this.renderer.setStyle(content, 'height', `${height}px`);\n this.contentHeight = height;\n content.scrollLeft = scrollLeft;\n content.scrollTop = scrollTop;\n }\n groupResources() {\n const resources = this.resources || [];\n const group = this.group || {};\n this.groupedResources = groupResources(group, resources);\n if (group.orientation !== 'vertical') {\n this.horizontalResources = this.groupedResources;\n this.verticalResources = [];\n }\n else {\n this.verticalResources = this.groupedResources;\n this.horizontalResources = [];\n }\n this.spans = this.resourceSpans();\n }\n get taskResources() {\n if (this.groupedResources.length) {\n return this.groupedResources;\n }\n else if (this.resources && this.resources.length) {\n return [this.resources[0]];\n }\n else {\n return [{}];\n }\n }\n resourceSpans() {\n const spans = [1];\n const resources = this.groupedResources;\n let span = 1;\n for (let idx = resources.length - 1; idx > 0; idx--) {\n span *= ((resources[idx].data || []).length || 1);\n spans.unshift(span);\n }\n return spans;\n }\n isInRange(date) {\n const dateRange = this.dateRange(date);\n return (!this.min || this.min < dateRange.end) && (!this.max || dateRange.start <= this.max);\n }\n createPDFElement() {\n const contentHeight = this.contentHeight;\n const scrollTop = this.content.nativeElement.scrollTop;\n if (contentHeight !== 'auto') {\n this.autoHeight = true;\n this.updateView();\n }\n const element = this.element.nativeElement.cloneNode(true);\n element.style.width = `${this.pdfWidth()}px`;\n if (contentHeight !== 'auto') {\n this.autoHeight = false;\n this.updateView();\n }\n this.pdfService.elementReady.emit({\n element: element\n });\n this.content.nativeElement.scrollTop = scrollTop;\n }\n pdfWidth() {\n return this.element.nativeElement.offsetWidth;\n }\n containerByPosition({ x, y }) {\n const content = this.content.nativeElement;\n const offset = elementOffset(content);\n if (offset.top <= y && y <= offset.top + offset.height && offset.left <= x && x <= offset.left + offset.width) {\n return {\n element: content,\n offset: offset\n };\n }\n }\n execute(e) {\n if (e.name === 'slotByPosition') {\n const container = this.containerByPosition(e.args);\n if (container) {\n const offset = this.coordinatesOffset(e.args.x, e.args.y, container.element, container.offset);\n const slot = this.slotByPosition(offset.x, offset.y, container.element);\n e.result(this.slotFields(slot));\n }\n }\n else if (e.name === 'eventFromElement') {\n const target = this.targetTask(e.args.element);\n if (target) {\n e.result(target.task.event);\n }\n }\n }\n slotFields(slot) {\n return {\n element: slot.element,\n resources: this.groupedResources.length ? this.resourcesByIndex(slot.id.resourceIndex) : [],\n start: this.convertDate(slot.start),\n end: this.convertDate(slot.end)\n };\n }\n}\nBaseView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseView, deps: [{ token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: BaseSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nBaseView.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseView, inputs: { еventTemplate: \"\\u0435ventTemplate\", groupHeaderTemplate: \"groupHeaderTemplate\", selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\", eventHeight: \"eventHeight\", slotClass: \"slotClass\", eventClass: \"eventClass\", eventStyles: \"eventStyles\", weekStart: \"weekStart\" }, viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"contentTable\", first: true, predicate: [\"contentTable\"], descendants: true }, { propertyName: \"times\", first: true, predicate: [\"times\"], descendants: true }, { propertyName: \"timesHeader\", first: true, predicate: [\"timesHeader\"], descendants: true }, { propertyName: \"timesTable\", first: true, predicate: [\"timesTable\"], descendants: true }, { propertyName: \"headerWrap\", first: true, predicate: [\"headerWrap\"], descendants: true }, { propertyName: \"hintContainer\", first: true, predicate: [\"hintContainer\"], descendants: true }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseView, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: BaseSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: PDFService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { еventTemplate: [{\n type: Input\n }], groupHeaderTemplate: [{\n type: Input\n }], selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], eventHeight: [{\n type: Input\n }], slotClass: [{\n type: Input\n }], eventClass: [{\n type: Input\n }], eventStyles: [{\n type: Input\n }], weekStart: [{\n type: Input\n }], content: [{\n type: ViewChild,\n args: ['content', { static: false }]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], contentTable: [{\n type: ViewChild,\n args: ['contentTable', { static: false }]\n }], times: [{\n type: ViewChild,\n args: ['times', { static: false }]\n }], timesHeader: [{\n type: ViewChild,\n args: ['timesHeader', { static: false }]\n }], timesTable: [{\n type: ViewChild,\n args: ['timesTable', { static: false }]\n }], headerWrap: [{\n type: ViewChild,\n args: ['headerWrap', { static: false }]\n }], hintContainer: [{\n type: ViewChild,\n args: ['hintContainer', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass HintContainerComponent {\n constructor(changeDetector) {\n this.changeDetector = changeDetector;\n this.changeDetector.detach();\n }\n detectChanges() {\n this.changeDetector.detectChanges();\n }\n}\nHintContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nHintContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HintContainerComponent, selector: \"kendo-hint-container\", queries: [{ propertyName: \"hintTemplate\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `\n \n \n `, isInline: true, directives: [{ type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-hint-container',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hintTemplate: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ResizeHintComponent {\n constructor() {\n this.marqueeClasses = true;\n }\n get left() {\n return this.hint.rect.left;\n }\n get top() {\n return this.hint.rect.top;\n }\n get width() {\n return this.hint.rect.width;\n }\n get height() {\n return this.hint.rect.height;\n }\n get start() {\n return toLocalDate(this.hint.start);\n }\n get end() {\n return toLocalDate(this.hint.end);\n }\n}\nResizeHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nResizeHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeHintComponent, selector: \"[kendoResizeHint]\", inputs: { hint: \"hint\", format: \"format\" }, host: { properties: { \"class.k-marquee\": \"this.marqueeClasses\", \"class.k-scheduler-marquee\": \"this.marqueeClasses\", \"class.k-first\": \"this.marqueeClasses\", \"class.k-last\": \"this.marqueeClasses\", \"style.left.px\": \"this.left\", \"style.right.px\": \"this.left\", \"style.top.px\": \"this.top\", \"style.width.px\": \"this.width\", \"style.height.px\": \"this.height\" } }, ngImport: i0, template: `\n
    \n
    \n
    {{ start | kendoDate : format }}
    \n
    {{ end | kendoDate : format }}
    \n
    \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], pipes: { \"kendoDate\": i1$4.DatePipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHintComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoResizeHint]',\n template: `\n
    \n
    \n
    {{ start | kendoDate : format }}
    \n
    {{ end | kendoDate : format }}
    \n
    \n `\n }]\n }], propDecorators: { hint: [{\n type: Input\n }], format: [{\n type: Input\n }], marqueeClasses: [{\n type: HostBinding,\n args: ['class.k-marquee']\n }, {\n type: HostBinding,\n args: ['class.k-scheduler-marquee']\n }, {\n type: HostBinding,\n args: ['class.k-first']\n }, {\n type: HostBinding,\n args: ['class.k-last']\n }], left: [{\n type: HostBinding,\n args: ['style.left.px']\n }, {\n type: HostBinding,\n args: ['style.right.px']\n }], top: [{\n type: HostBinding,\n args: ['style.top.px']\n }], width: [{\n type: HostBinding,\n args: ['style.width.px']\n }], height: [{\n type: HostBinding,\n args: ['style.height.px']\n }] } });\n\n/**\n * @hidden\n */\nclass BaseSlotDirective {\n constructor(element, slotService, localization) {\n this.element = element;\n this.slotService = slotService;\n this.localization = localization;\n this._rect = null;\n }\n get slotIndex() {\n return this.key;\n }\n get start() {\n return this._start;\n }\n set start(value) {\n this._start = value;\n }\n get end() {\n return this._end;\n }\n set end(value) {\n this._end = value;\n }\n get rect() {\n if (this._rect) {\n return this._rect;\n }\n const el = this.nativeElement;\n this._rect = {\n left: !this.localization.rtl ? el.offsetLeft : this.slotService.containerSize - (el.offsetLeft + el.clientWidth),\n top: el.offsetTop,\n width: el.clientWidth,\n height: el.clientHeight\n };\n return this._rect;\n }\n get top() {\n return this.element ? this.nativeElement.offsetTop : 0;\n }\n get padding() {\n if (!this.element || !isDocumentAvailable()) {\n return 0;\n }\n return parseInt(window.getComputedStyle(this.nativeElement).paddingTop, 10) * 2;\n }\n get height() {\n return this.element ? this.nativeElement.offsetHeight : 0;\n }\n set height(value) {\n if (this.element) {\n this.nativeElement.style.height = `${value}px`;\n }\n if (this._rect) {\n this._rect.height = value;\n }\n }\n get width() {\n return this.element ? this.nativeElement.offsetWidth : 0;\n }\n get key() {\n return `${this.id.resourceIndex}:${this.id.rangeIndex}:${this.id.index}`;\n }\n get nativeElement() {\n return this.element.nativeElement;\n }\n ngOnInit() {\n this.slotService.registerSlot(this);\n }\n ngOnDestroy() {\n this.slotService.unregisterSlot(this);\n }\n invalidate() {\n this._rect = null;\n }\n}\nBaseSlotDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseSlotDirective, deps: [{ token: i0.ElementRef }, { token: BaseSlotService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nBaseSlotDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseSlotDirective, inputs: { id: \"id\" }, host: { properties: { \"attr.data-slot-index\": \"this.slotIndex\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseSlotDirective, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: BaseSlotService }, { type: i1$1.LocalizationService }]; }, propDecorators: { id: [{\n type: Input\n }], slotIndex: [{\n type: HostBinding,\n args: ['attr.data-slot-index']\n }] } });\n\n/**\n * @hidden\n */\nclass MonthSlotDirective extends BaseSlotDirective {\n constructor(element, slotService, localization) {\n super(element, slotService, localization);\n this.isDaySlot = true;\n this._linkHeight = null;\n }\n set start(value) {\n this.startDate = toUTCDate(value);\n }\n get start() {\n return this.startDate;\n }\n get end() {\n return addUTCDays(this.start, 1);\n }\n get linkHeight() {\n if (this._linkHeight === null) {\n const element = firstElementChild(this.nativeElement);\n this._linkHeight = element ? element.offsetHeight + element.offsetTop : 0;\n }\n return this._linkHeight;\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeShowMore();\n }\n showMore(rect) {\n if (!this.showMoreElement) {\n const element = this.showMoreElement = document.createElement('div');\n element.innerHTML = '';\n element.className = 'k-more-events k-button';\n element.style.width = `${rect.width}px`;\n element.style.left = `${rect.left}px`;\n element.style.top = `${rect.top}px`;\n this.nativeElement.appendChild(element);\n }\n }\n hideMore() {\n this.removeShowMore();\n }\n invalidate() {\n super.invalidate();\n this._linkHeight = null;\n this.removeShowMore();\n }\n removeShowMore() {\n if (this.showMoreElement) {\n this.showMoreElement.parentNode.removeChild(this.showMoreElement);\n this.showMoreElement = null;\n }\n }\n}\nMonthSlotDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthSlotDirective, deps: [{ token: i0.ElementRef }, { token: MonthSlotService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nMonthSlotDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthSlotDirective, selector: \"[monthSlot]\", inputs: { start: \"start\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthSlotDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[monthSlot]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: MonthSlotService }, { type: i1$1.LocalizationService }]; }, propDecorators: { start: [{\n type: Input\n }] } });\n\nclass ResourceIterator {\n constructor(resources, lastIndex = resources.length - 1) {\n this.resources = resources;\n this.lastIndex = lastIndex;\n }\n *[iterator]() {\n let resources = this.resources;\n const lastIndex = Math.max(0, this.lastIndex);\n if (!(resources && resources.length)) {\n resources = [{}];\n }\n const lastData = resources[lastIndex].data || [];\n const length = lastData.length;\n let count = 1;\n for (let idx = 0; idx <= lastIndex; idx++) {\n count *= (resources[idx].data || []).length || 1;\n }\n for (let idx = 0; idx < count; idx++) {\n yield lastData[idx % length];\n }\n }\n}\n/**\n * @hidden\n */\nclass ResourceIteratorPipe {\n transform(resources = [], lastIndex) {\n return new ResourceIterator(resources, lastIndex);\n }\n}\nResourceIteratorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResourceIteratorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nResourceIteratorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResourceIteratorPipe, name: \"resourceIterator\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResourceIteratorPipe, decorators: [{\n type: Pipe,\n args: [{\n // eslint-disable-next-line @angular-eslint/pipe-prefix\n name: 'resourceIterator'\n }]\n }] });\n\nclass NumberIterator {\n constructor(count) {\n this.count = count;\n }\n *[iterator]() {\n for (let i = 0; i < this.count; i++) {\n yield i;\n }\n }\n}\n/**\n * @hidden\n */\nclass RepeatPipe {\n transform(value) {\n return new NumberIterator(value);\n }\n}\nRepeatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RepeatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nRepeatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RepeatPipe, name: \"repeat\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RepeatPipe, decorators: [{\n type: Pipe,\n args: [{\n // eslint-disable-next-line @angular-eslint/pipe-prefix\n name: 'repeat'\n }]\n }] });\n\n/**\n * @hidden\n */\nclass MonthViewRendererComponent extends BaseView {\n constructor(viewContext, viewState, intl, slotService, zone, element, renderer, pdfService, localization, changeDetector) {\n super(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector);\n this.resizeHintFormat = { skeleton: 'Md' };\n this.weeks = [];\n this.updateOngoingEvents = this.updateOngoingEvents.bind(this);\n }\n get monthDaySlotTemplateRef() {\n return this.monthDaySlotTemplate || (this.schedulerMonthDaySlotTemplate || {}).templateRef;\n }\n ngOnChanges(changes) {\n if (isChanged('weekStart', changes)) {\n this.onSelectDate(this.selectedDate);\n }\n super.ngOnChanges(changes);\n }\n ngAfterViewInit() {\n this.updateOngoingEvents();\n super.ngAfterViewInit();\n }\n ngOnDestroy() {\n clearTimeout(this.ongoingEventsTimeout);\n super.ngOnDestroy();\n }\n horizontalColspan(resourceIndex) {\n const resources = this.horizontalResources;\n let result = DAYS_IN_WEEK_COUNT;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n verticalRowspan(resourceIndex) {\n const resources = this.verticalResources;\n let result = WEEKS_COUNT;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n verticalItem(leafIndex, resourceIndex) {\n const data = this.verticalResources[resourceIndex].data || [];\n const resources = this.verticalResources;\n let result = 1;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= ((resources[idx].data || []).length || 1);\n }\n return data[(leafIndex / result) % data.length];\n }\n daySlotClass(day, resourceIndex) {\n if (this.slotClass) {\n return this.slotClass({\n start: day,\n end: addDays(day, 1),\n resources: this.resourcesByIndex(resourceIndex),\n isAllDay: false\n });\n }\n }\n cellTitle(value) {\n return this.intl.formatDate(value, 'D');\n }\n addDay(dayStart) {\n return addDays(dayStart, 1);\n }\n optionsChange(changes) {\n this.schedulerMonthDaySlotTemplate = changes.monthDaySlotTemplate;\n super.optionsChange(changes);\n }\n createTasks(items, dateRange) {\n this.weeks = this.createDaySlots(dateRange);\n return createTasks$2(dateRange.start, dateRange.end, items, this.weeks);\n }\n onTasksChange() {\n updateTaskData(this.tasks);\n this.items.next(this.tasks);\n }\n reflow() {\n this.updateContentHeight();\n const content = this.content.nativeElement;\n this.slotService.containerSize = content.scrollWidth;\n if (this.contentHeight === 'auto') {\n // bigger size changes cause the table to overflow the container and in horizontal scrollbars\n // this changes the table and slots size during rendering before the browser re-adjusts the 100% table width\n content.style.overflow = 'visible';\n }\n this.slotService.layout(this.eventHeight);\n if (this.contentHeight === 'auto') {\n content.style.overflow = '';\n }\n this.syncTables();\n }\n onClick(e, eventType = e.type) {\n if (eventType === 'click') {\n const eventSlot = closestInScope(e.target, node => node.hasAttribute('data-slot-index'), this.element.nativeElement);\n const navigateToDay = closestInScope(e.target, node => hasClasses(node, 'k-more-events k-nav-day'), eventSlot);\n if (eventSlot && navigateToDay) {\n const index = eventSlot.getAttribute('data-slot-index');\n const slot = this.slotService.slotByIndex(index);\n this.zone.run(() => {\n this.viewState.navigateTo({ viewName: 'day', date: toLocalDate(slot.start) });\n });\n return;\n }\n }\n super.onClick(e, eventType);\n }\n slotByIndex(index, _args) {\n return this.slotService.slotByIndex(index);\n }\n onSelectDate(date) {\n const dateRange = this.dateRange(date);\n this.selectedDate = date;\n this.viewState.notifyDateRange(dateRange);\n this.weeks = this.createDaySlots(dateRange);\n }\n onAction(e) {\n const now = getDate(this.selectedDate);\n if (e.type === 'next') {\n const next = firstDayOfMonth(addMonths(now, 1));\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n if (e.type === 'prev') {\n const next = firstDayOfMonth(addMonths(now, -1));\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n }\n dateRange(date = this.selectedDate) {\n const monthStart = firstDayOfMonth(getDate(date));\n const start = firstDayInWeek(monthStart, this.weekStart);\n const end = addDays(start, DAYS_IN_WEEK_COUNT * WEEKS_COUNT);\n const text = this.intl.format(this.selectedDateFormat, monthStart);\n const shortText = this.intl.format(this.selectedShortDateFormat, monthStart);\n return { start, end, text, shortText };\n }\n dragRanges(slot) {\n return this.slotService.dragRanges(slot, this.dragging.offset);\n }\n dragHintSize(first, last) {\n return {\n width: toPx(last.rect.left - first.rect.left + last.rect.width),\n height: toPx(first.height)\n };\n }\n slotByPosition(x, y) {\n return this.slotService.slotByPosition(x, y);\n }\n updateOngoingEvents() {\n const disabled = !this.highlightOngoingEvents || this.highlightOngoingEvents.enabled === false;\n if (!isDocumentAvailable() || disabled) {\n return;\n }\n clearTimeout(this.ongoingEventsTimeout);\n this.zone.runOutsideAngular(() => {\n this.ongoingEventsTimeout = setTimeout(this.updateOngoingEvents, this.highlightOngoingEvents.updateInterval || MS_PER_MINUTE);\n });\n this.toggleOngoingClass();\n }\n currentTime() {\n return new Date();\n }\n toggleOngoingClass() {\n const now = this.currentTime();\n const cssClass = isPresent(this.highlightOngoingEvents.cssClass) ? this.highlightOngoingEvents.cssClass : ONGOING_EVENT_CSS_CLASS;\n this.eventElements.forEach((event) => {\n const isOngoing = dateInRange(now, event.item.start, event.item.end);\n this.renderer[isOngoing ? 'addClass' : 'removeClass'](event.nativeElement, cssClass);\n });\n }\n createDaySlots({ start }) {\n const weeks = [];\n let date = start;\n for (let idx = 0; idx < WEEKS_COUNT; idx++) {\n const week = [];\n weeks.push(week);\n for (let dayIdx = 0; dayIdx < DAYS_IN_WEEK_COUNT; dayIdx++) {\n week.push(date);\n date = addDays(date, 1);\n }\n }\n return weeks;\n }\n}\nMonthViewRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewRendererComponent, deps: [{ token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: MonthSlotService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PDFService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMonthViewRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthViewRendererComponent, selector: \"month-view\", inputs: { monthDaySlotTemplate: \"monthDaySlotTemplate\", highlightOngoingEvents: \"highlightOngoingEvents\" }, providers: [\n MonthSlotService\n ], viewQueries: [{ propertyName: \"eventElements\", predicate: MonthViewItemComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n {{ day | kendoDate: 'EEEE' }}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n {{ day | kendoDate: 'dd' }}\n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: MonthViewItemComponent, selector: \"[monthViewItem]\" }, { type: HintContainerComponent, selector: \"kendo-hint-container\" }, { type: ResizeHintComponent, selector: \"[kendoResizeHint]\", inputs: [\"hint\", \"format\"] }], directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i10.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: MonthSlotDirective, selector: \"[monthSlot]\", inputs: [\"start\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: FocusableDirective, selector: \"[kendoSchedulerFocusIndex]\", inputs: [\"kendoSchedulerFocusIndex\"] }], pipes: { \"resourceIterator\": ResourceIteratorPipe, \"kendoDate\": i1$4.DatePipe, \"repeat\": RepeatPipe, \"async\": i10.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewRendererComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-view',\n providers: [\n MonthSlotService\n ],\n template: `\n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n {{ day | kendoDate: 'EEEE' }}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n {{ day | kendoDate: 'dd' }}\n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: MonthSlotService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: PDFService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { monthDaySlotTemplate: [{\n type: Input\n }], highlightOngoingEvents: [{\n type: Input\n }], eventElements: [{\n type: ViewChildren,\n args: [MonthViewItemComponent]\n }] } });\n\n/**\n * The component for rendering the **Month** view.\n */\nclass MonthViewComponent extends ConfigurationViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:Y}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedDateFormat = '{0:Y}';\n /**\n * The short-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:y}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting.\n */\n this.selectedShortDateFormat = '{0:y}';\n /**\n * The invariant name for this view (`month`).\n */\n this.name = 'month';\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('monthViewTitle');\n }\n get viewEventHeight() {\n return isPresent(this.eventHeight) ? this.eventHeight : (this.schedulerOptions.eventHeight || DEFAULT_EVENT_HEIGHT);\n }\n}\nMonthViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthViewComponent, selector: \"kendo-scheduler-month-view\", inputs: { eventHeight: \"eventHeight\", selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => MonthViewComponent)\n }], queries: [{ propertyName: \"monthDaySlotTemplate\", first: true, predicate: MonthDaySlotTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: MonthViewRendererComponent, selector: \"month-view\", inputs: [\"monthDaySlotTemplate\", \"highlightOngoingEvents\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-month-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => MonthViewComponent)\n }],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { eventHeight: [{\n type: Input\n }], selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], monthDaySlotTemplate: [{\n type: ContentChild,\n args: [MonthDaySlotTemplateDirective, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ViewFooterComponent {\n constructor() {\n this.hostClasses = true;\n /**\n * @hidden\n * TODO: Drop in next MAJOR version\n */\n this.inlineJustifyContentStyle = 'start';\n this.itemClick = new EventEmitter();\n }\n onItemClick(e, item) {\n e.preventDefault();\n this.itemClick.emit(item);\n }\n}\nViewFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nViewFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: { items: \"items\" }, outputs: { itemClick: \"itemClick\" }, host: { properties: { \"class.k-scheduler-footer\": \"this.hostClasses\", \"class.k-toolbar\": \"this.hostClasses\", \"style.justify-content\": \"this.inlineJustifyContentStyle\" } }, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i10.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewFooterComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[viewFooter]',\n template: `\n \n `\n }]\n }], propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-scheduler-footer']\n }, {\n type: HostBinding,\n args: ['class.k-toolbar']\n }], inlineJustifyContentStyle: [{\n type: HostBinding,\n args: ['style.justify-content']\n }], itemClick: [{\n type: Output\n }], items: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass WorkHoursFooterDirective {\n constructor(footer, localization) {\n this.footer = footer;\n this.localization = localization;\n this.showWorkHours = false;\n this.footerItems = [{ cssClass: 'k-scheduler-fullday', iconClass: 'k-i-clock', text: '' }];\n }\n ngOnInit() {\n this.toggleWorkHours();\n this.footer.items = this.footerItems;\n }\n ngOnChanges() {\n this.toggleWorkHours();\n }\n toggleWorkHours() {\n this.footerItems[0].text = this.showWorkHours ? this.localization.get('showFullDay') : this.localization.get('showWorkDay');\n }\n}\nWorkHoursFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WorkHoursFooterDirective, deps: [{ token: ViewFooterComponent }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nWorkHoursFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: { showWorkHours: \"showWorkHours\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WorkHoursFooterDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWorkHoursFooter]'\n }]\n }], ctorParameters: function () { return [{ type: ViewFooterComponent }, { type: i1$1.LocalizationService }]; }, propDecorators: { showWorkHours: [{\n type: Input\n }] } });\n\nconst DECLARATIONS = [\n ViewFooterComponent,\n WorkHoursFooterDirective,\n RepeatPipe,\n ResourceIteratorPipe,\n HintContainerComponent,\n ResizeHintComponent\n];\n/**\n * @hidden\n */\nclass ViewsSharedModule {\n}\nViewsSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nViewsSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewsSharedModule, declarations: [ViewFooterComponent,\n WorkHoursFooterDirective,\n RepeatPipe,\n ResourceIteratorPipe,\n HintContainerComponent,\n ResizeHintComponent], imports: [CommonModule, IntlModule, SharedModule, ButtonsModule], exports: [ViewFooterComponent,\n WorkHoursFooterDirective,\n RepeatPipe,\n ResourceIteratorPipe,\n HintContainerComponent,\n ResizeHintComponent, IntlModule,\n CommonModule,\n SharedModule] });\nViewsSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewsSharedModule, imports: [[CommonModule, IntlModule, SharedModule, ButtonsModule], IntlModule,\n CommonModule,\n SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewsSharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, IntlModule, SharedModule, ButtonsModule],\n exports: [\n DECLARATIONS,\n IntlModule,\n CommonModule,\n SharedModule\n ],\n declarations: [\n DECLARATIONS\n ]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass MonthViewModule {\n}\nMonthViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMonthViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewModule, declarations: [MonthViewComponent,\n MonthViewRendererComponent,\n MonthViewItemComponent,\n MonthSlotDirective], imports: [ViewsSharedModule], exports: [MonthViewComponent] });\nMonthViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewModule, imports: [[\n ViewsSharedModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n ViewsSharedModule\n ],\n exports: [\n MonthViewComponent\n ],\n declarations: [\n MonthViewComponent,\n MonthViewRendererComponent,\n MonthViewItemComponent,\n MonthSlotDirective\n ]\n }]\n }] });\n\nconst EVENT_HEIGHT = 'eventHeight';\nconst SHOW_WORK_HOURS = 'showWorkHours';\nconst START_TIME = 'startTime';\nconst END_TIME = 'endTime';\nconst WORK_DAY_START = 'workDayStart';\nconst WORK_DAY_END = 'workDayEnd';\nconst WORK_WEEK_START = 'workWeekStart';\nconst WORK_WEEK_END = 'workWeekEnd';\nconst SLOT_DURATION = 'slotDuration';\nconst SLOT_DIVISIONS = 'slotDivisions';\nconst CURRENT_TIME_MARKER = 'currentTimeMarker';\nconst HIGHLIGHT_ONGOING_EVENTS = 'highlightOngoingEvents';\n/**\n * @hidden\n */\nclass DayTimeViewBase extends ConfigurationViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n }\n /**\n * @hidden\n */\n get viewEventHeight() {\n return this.optionValue(EVENT_HEIGHT) || DEFAULT_EVENT_HEIGHT;\n }\n /**\n * @hidden\n */\n get shouldShowWorkHours() {\n return this.optionValue(SHOW_WORK_HOURS);\n }\n /**\n * @hidden\n */\n get viewStartTime() {\n return this.optionValue(START_TIME);\n }\n /**\n * @hidden\n */\n get viewEndTime() {\n return this.optionValue(END_TIME);\n }\n /**\n * @hidden\n */\n get viewWorkDayStart() {\n return this.optionValue(WORK_DAY_START);\n }\n /**\n * @hidden\n */\n get viewWorkDayEnd() {\n return this.optionValue(WORK_DAY_END);\n }\n /**\n * @hidden\n */\n get viewWorkWeekStart() {\n return this.optionValue(WORK_WEEK_START);\n }\n /**\n * @hidden\n */\n get viewWorkWeekEnd() {\n return this.optionValue(WORK_WEEK_END);\n }\n /**\n * @hidden\n */\n get viewSlotDuration() {\n return this.optionValue(SLOT_DURATION);\n }\n /**\n * @hidden\n */\n get viewSlotDivisions() {\n return this.optionValue(SLOT_DIVISIONS);\n }\n /**\n * @hidden\n */\n get viewCurrentTimeMarker() {\n return this.optionValue(CURRENT_TIME_MARKER);\n }\n /**\n * @hidden\n */\n get viewHighlightOngoingEvents() {\n return this.optionValue(HIGHLIGHT_ONGOING_EVENTS);\n }\n /**\n * @hidden\n */\n get viewScrollTime() {\n return this.optionValue('scrollTime');\n }\n optionValue(name) {\n return isPresent(this[name]) ? this[name] : this.schedulerOptions[name];\n }\n}\nDayTimeViewBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewBase, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Directive });\nDayTimeViewBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DayTimeViewBase, inputs: { showWorkHours: \"showWorkHours\", eventHeight: \"eventHeight\", startTime: \"startTime\", scrollTime: \"scrollTime\", endTime: \"endTime\", workDayStart: \"workDayStart\", workDayEnd: \"workDayEnd\", workWeekStart: \"workWeekStart\", workWeekEnd: \"workWeekEnd\", slotDuration: \"slotDuration\", slotDivisions: \"slotDivisions\", currentTimeMarker: \"currentTimeMarker\", highlightOngoingEvents: \"highlightOngoingEvents\" }, queries: [{ propertyName: \"timeSlotTemplate\", first: true, predicate: TimeSlotTemplateDirective, descendants: true }, { propertyName: \"dateHeaderTemplate\", first: true, predicate: DateHeaderTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { timeSlotTemplate: [{\n type: ContentChild,\n args: [TimeSlotTemplateDirective, { static: false }]\n }], dateHeaderTemplate: [{\n type: ContentChild,\n args: [DateHeaderTemplateDirective, { static: false }]\n }], showWorkHours: [{\n type: Input\n }], eventHeight: [{\n type: Input\n }], startTime: [{\n type: Input\n }], scrollTime: [{\n type: Input\n }], endTime: [{\n type: Input\n }], workDayStart: [{\n type: Input\n }], workDayEnd: [{\n type: Input\n }], workWeekStart: [{\n type: Input\n }], workWeekEnd: [{\n type: Input\n }], slotDuration: [{\n type: Input\n }], slotDivisions: [{\n type: Input\n }], currentTimeMarker: [{\n type: Input\n }], highlightOngoingEvents: [{\n type: Input\n }] } });\n\nconst SLOT_FILL = 'slotFill';\n/**\n * @hidden\n */\nclass MultiDayViewBase extends DayTimeViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n }\n /**\n * @hidden\n */\n get viewSlotFill() {\n return this.optionValue(SLOT_FILL);\n }\n}\nMultiDayViewBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewBase, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Directive });\nMultiDayViewBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiDayViewBase, inputs: { slotFill: \"slotFill\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { slotFill: [{\n type: Input\n }] } });\n\nconst EVENTS_OFFSET = 10;\nconst MIN_EVENT_HEIGHT = 25;\nconst minHeightOverlaps = (top1, top2) => top1 <= top2 && top2 <= top1 + MIN_EVENT_HEIGHT;\nconst timeOffset = (slot, date, vertical = true) => {\n if (slot.start.getTime() <= date.getTime()) {\n return (vertical ? slot.height : slot.width) * ((date.getTime() - slot.start.getTime()) / (slot.end.getTime() - slot.start.getTime()));\n }\n return 0;\n};\nconst columnIndexComparer = (a, b) => {\n const indexA = isNumber(a.columnIndex) ? a.columnIndex : Number.MAX_VALUE;\n const indexB = isNumber(b.columnIndex) ? b.columnIndex : Number.MAX_VALUE;\n // a un b def = 0\n // b un a def = 0\n if (indexA === indexB) {\n return a.item.startTime.getTime() - b.item.startTime.getTime();\n }\n return indexA - indexB;\n};\nfunction initTimeColumns(slotKeys, slotItems) {\n // Break slots into groups with overlapping events.\n let columns = 0;\n let groupSlots = [];\n slotKeys.forEach(key => {\n const { slot, events } = slotItems[key];\n const count = events.length;\n let groupEnd = true;\n events.sort(columnIndexComparer);\n columns = Math.max(count, columns);\n groupSlots.push(slot);\n for (let eventIdx = 0; eventIdx < count; eventIdx++) {\n const event = events[eventIdx];\n groupEnd = groupEnd && event.item.endTime.getTime() <= slot.end.getTime();\n if (isNumber(event.columnIndex)) {\n continue;\n }\n event.rect = {\n top: slot.rect.top + timeOffset(slot, event.item.startTime)\n };\n event.columnIndex = eventIdx;\n event.lastColumn = true;\n for (let idx = 0, previousIdx = -1; idx < eventIdx; idx++) {\n const current = events[idx];\n if (current.columnIndex > previousIdx + 1) {\n event.columnIndex = previousIdx + 1;\n event.lastColumn = false;\n events.splice(eventIdx, 1);\n events.splice(event.columnIndex, 0, event);\n break;\n }\n if (!intersects(event.item.startTime, event.item.endTime, current.item.startTime, current.item.endTime) &&\n !minHeightOverlaps(current.rect.top, event.rect.top)) {\n event.columnIndex = idx;\n event.lastColumn = !events.some(e => e.columnIndex && idx < e.columnIndex &&\n intersects(event.item.startTime, event.item.endTime, e.item.startTime, e.item.endTime));\n events.splice(eventIdx, 1);\n events.splice(idx, 0, event);\n break;\n }\n previousIdx = current.columnIndex;\n current.lastColumn = false;\n }\n }\n if (groupEnd) {\n groupSlots.forEach(item => item.columns = columns);\n groupSlots = [];\n columns = 0;\n }\n });\n // The maximum number of overlapping events in the group is used to create the same number of columns.\n groupSlots.forEach(slot => slot.columns = columns);\n}\nfunction findTimeRowIndex(events, event) {\n if (event.rowIndex !== undefined) {\n return event.rowIndex;\n }\n for (let idx = 0; idx < events.length; idx++) {\n const current = events[idx];\n if (!current || !intersects(event.item.startTime, event.item.endTime, current.item.startTime, current.item.endTime)) {\n return idx;\n }\n }\n return events.length;\n}\nfunction initHorizontalSlots(slots, items, rowHeight, eventHeight, getRowIndex) {\n const padding = slots[0].padding;\n if (!items.length) {\n return {\n height: rowHeight - padding\n };\n }\n items.forEach(item => {\n item.rowIndex = undefined;\n item.rect = {\n height: eventHeight,\n width: 0\n };\n });\n const sorted = orderBy(items, [{ field: \"item.startTime\", dir: \"asc\" }, { field: \"item.endTime\", dir: \"desc\" }]);\n const slotItems = {};\n sorted.forEach(event => slots\n .filter(slot => intersects(event.item.startTime, event.item.endTime, slot.start, slot.end))\n .forEach(slot => {\n const value = slotItems[slot.key] = slotItems[slot.key] || { rows: [], slot: slot, events: [] };\n event.rowIndex = getRowIndex(value.rows, event);\n value.rows[event.rowIndex] = event;\n value.events.push(event);\n }));\n const top = slots[0].top;\n let maxOffset = 0;\n Object.keys(slotItems).forEach((key) => {\n const events = slotItems[key].events;\n let slotOffset = 0;\n for (let idx = 0; idx < events.length; idx++) {\n const event = events[idx];\n if (event) {\n event.rect.top = top + event.rowIndex * (EVENTS_OFFSET + event.rect.height);\n slotOffset = Math.max(slotOffset, (event.rect.top - top) + event.rect.height);\n }\n }\n maxOffset = Math.max(slotOffset, maxOffset);\n });\n maxOffset += rowHeight - padding;\n return {\n height: maxOffset,\n slotItems\n };\n}\nfunction setHorizontalOffsets(slotItems, items, measureTime) {\n Object.keys(slotItems).forEach((key) => {\n const { slot, events } = slotItems[key];\n const rect = slot.rect;\n for (let idx = 0; idx < events.length; idx++) {\n const event = events[idx];\n if (event) {\n if (!isNumber(event.rect.left)) {\n event.rect.left = slot.rect.left +\n (measureTime ? timeOffset(slot, event.item.startTime, false) : 0);\n }\n const slotOffset = measureTime && event.item.endTime.getTime() < slot.end.getTime() ?\n timeOffset(slot, event.item.endTime, false) : rect.width;\n event.rect.width = slot.rect.left + slotOffset - event.rect.left;\n }\n }\n });\n items.forEach(item => {\n item.reflow();\n });\n}\n/** @hidden */\nclass SlotRange {\n constructor(index) {\n this.index = index;\n this.slotMap = new ItemMap();\n this.itemMap = new ItemMap();\n }\n get slots() {\n return this.slotMap.toArray();\n }\n get firstSlot() {\n return this.slotMap.first;\n }\n get lastSlot() {\n return this.slotMap.last;\n }\n get items() {\n return this.itemMap.toArray();\n }\n get rect() {\n const first = this.firstSlot.rect;\n const last = this.lastSlot.rect;\n return {\n left: first.left,\n top: first.top,\n width: last.left - first.left + last.width,\n height: last.top - first.top + last.height\n };\n }\n get start() {\n const first = this.slotMap.first;\n if (!first) {\n return null;\n }\n return first.start;\n }\n get end() {\n const last = this.slotMap.last;\n if (!last) {\n return null;\n }\n return last.end;\n }\n get hasSlots() {\n return this.slotMap.count > 0;\n }\n get hasItems() {\n return this.itemMap.count > 0;\n }\n registerItem(component) {\n this.itemMap.addItem(component.item.index, component);\n }\n unregisterItem(component, id) {\n this.itemMap.removeItem(id.index, component);\n }\n registerSlot(slot) {\n this.slotMap.addItem(slot.id.index, slot);\n }\n unregisterSlot(slot) {\n this.slotMap.removeItem(slot.id.index, slot);\n }\n layout(options) {\n const items = this.items;\n if (!items.length) {\n return;\n }\n const fill = Math.max(Math.min(options.fill || 0.9, 1), 0.1);\n const sorted = orderBy(items, [{ field: \"item.startTime\", dir: \"asc\" }, { field: \"item.endTime\", dir: \"desc\" }]);\n items.forEach((item, _index) => {\n item.rect = null;\n item.columnIndex = undefined;\n });\n const slotItems = {};\n const slots = this.slots;\n // Map each populated slot to the events in it\n sorted.forEach(event => slots\n .filter(slot => intersects(event.item.startTime, event.item.endTime, slot.start, slot.end))\n .forEach(slot => {\n const value = slotItems[slot.key] = slotItems[slot.key] || { events: [] };\n value.slot = slot;\n value.events.push(event);\n }));\n const slotKeys = Object.keys(slotItems);\n initTimeColumns(slotKeys, slotItems);\n slotKeys.forEach((key) => {\n const { slot, events } = slotItems[key];\n const spacing = 2;\n const startOffset = 2;\n const slotRect = slot.rect;\n const slotLeft = slotRect.left;\n const columns = slot.columns;\n const slotWidth = slotRect.width * fill - (columns - 1) * spacing - startOffset;\n const origin = slotLeft + startOffset;\n const eventWidth = slotWidth / columns;\n const slotEnd = origin + slotWidth + (columns - 1) * spacing;\n events.forEach(event => {\n if (!isNumber(event.rect.left)) {\n event.rect.left = origin + event.columnIndex * (eventWidth + spacing);\n event.rect.width = event.lastColumn ? slotEnd - event.rect.left : eventWidth;\n event.origin = {\n left: slotLeft,\n right: slotLeft + slotRect.width\n };\n }\n // Expand the event to the last group slot\n const slotOffset = slot.end.getTime() <= event.item.endTime.getTime() ? slotRect.height : timeOffset(slot, event.item.endTime);\n event.rect.height = slotRect.top + slotOffset - event.rect.top;\n });\n });\n sorted.forEach(event => event.reflow());\n }\n initDaySlots(rowHeight, eventHeight) {\n const slots = this.slots;\n if (!slots.length) {\n return;\n }\n const { height, slotItems } = initHorizontalSlots(slots, this.items, rowHeight, eventHeight, findRowIndex);\n this.setSlotsHeight(height);\n this.slotItems = slotItems;\n }\n setDayOffsets() {\n if (!this.itemMap.count || !this.slotItems) {\n return;\n }\n setHorizontalOffsets(this.slotItems, this.items);\n this.slotItems = null;\n }\n setSlotsHeight(height) {\n this.firstSlot.height = height;\n }\n}\n/**\n * @hidden\n */\nclass DayTimeResourceGroup {\n constructor(index) {\n this.index = index;\n this.dayRanges = [];\n this.timeRanges = [];\n }\n registerSlot(slot) {\n const range = this.slotRange(slot);\n range.registerSlot(slot);\n }\n unregisterSlot(slot) {\n const range = this.slotRange(slot);\n range.unregisterSlot(slot);\n if (!range.hasSlots) {\n const ranges = this.slotRanges(slot);\n delete ranges[slot.id.rangeIndex];\n }\n }\n registerItem(component) {\n const range = this.itemRange(component);\n if (range) {\n range.registerItem(component);\n component.rangeIndex = range.index;\n }\n else {\n component.rangeIndex = undefined;\n component.toggle(false);\n }\n }\n unregisterItem(component, id) {\n if (component.rangeIndex !== undefined) {\n const ranges = component.item.isAllDay ? this.dayRanges : this.timeRanges;\n if (ranges[id.rangeIndex]) {\n ranges[id.rangeIndex].unregisterItem(component, id);\n }\n component.rangeIndex = undefined;\n }\n }\n forEachDateRange(callback) {\n for (let i = 0; i < this.dayRanges.length; i++) {\n callback(this.dayRanges[i]);\n }\n }\n forEachTimeRange(callback) {\n for (let i = 0; i < this.timeRanges.length; i++) {\n callback(this.timeRanges[i]);\n }\n }\n slotRange(slot) {\n const ranges = this.slotRanges(slot);\n const rangeIndex = slot.id.rangeIndex;\n if (!ranges[rangeIndex]) {\n ranges[rangeIndex] = new SlotRange(rangeIndex);\n }\n return ranges[rangeIndex];\n }\n slotRanges(slot) {\n return slot.isDaySlot ? this.dayRanges : this.timeRanges;\n }\n initTimeSlots(rowHeight, eventHeight, resourceRowHeight) {\n const slots = this.slots;\n if (!slots.length) {\n return;\n }\n const { height, slotItems } = initHorizontalSlots(slots, this.items, rowHeight, eventHeight, findTimeRowIndex);\n this.setSlotsHeight(Math.max(height, resourceRowHeight));\n this.slotItems = slotItems;\n }\n setTimelineOffsets() {\n const items = this.items;\n if (!this.slotItems || !items.length) {\n return;\n }\n setHorizontalOffsets(this.slotItems, items, true);\n this.slotItems = null;\n }\n setSlotsHeight(height) {\n //setting the first slot height should be sufficient\n this.timeRanges[0].setSlotsHeight(height);\n }\n get items() {\n return this.timeRanges.reduce((acc, range) => acc.concat(range.items), []);\n }\n get slots() {\n return this.timeRanges.reduce((acc, range) => acc.concat(range.slots), []);\n }\n get hasSlots() {\n return Boolean(this.dayRanges.find(range => range && range.hasSlots) || this.timeRanges.find(range => range && range.hasSlots));\n }\n cleanRanges() {\n this.dayRanges = this.dayRanges.filter(r => Boolean(r));\n this.timeRanges = this.timeRanges.filter(r => Boolean(r));\n }\n itemRange(component) {\n const task = component.item;\n const ranges = task.isAllDay ? this.dayRanges : this.timeRanges;\n if (isNumber(task.rangeIndex)) {\n return ranges[task.rangeIndex];\n }\n return ranges.find(r => intersects(task.startTime, task.endTime, r.start, r.end));\n }\n}\n/**\n * @hidden\n */\nclass DayTimeSlotService extends BaseSlotService {\n layoutDays(eventHeight = 25) {\n this.groups.forEach((group) => group.forEachDateRange(range => range.slots.forEach(slot => {\n slot.element.nativeElement.style.height = '';\n })));\n const rowHeight = this.groups[0].dayRanges[0].slots[0].height;\n this.groups.forEach((group) => {\n group.forEachDateRange(range => range.initDaySlots(rowHeight, eventHeight));\n });\n this.groups.forEach((group) => {\n group.forEachDateRange(range => range.setDayOffsets());\n });\n }\n layoutTimeline(eventHeight, resourceRows) {\n this.groups.forEach((group) => group.forEachTimeRange(range => range.slots.forEach(slot => {\n slot.element.nativeElement.style.height = '';\n })));\n const rowHeight = this.groups[0].timeRanges[0].slots[0].height;\n this.groups.forEach((group, index) => {\n group.initTimeSlots(rowHeight, eventHeight, resourceRows && resourceRows[index] ? resourceRows[index].nativeElement.children[0].children[0].offsetHeight : 0);\n });\n this.groups.forEach((group) => group.setTimelineOffsets());\n }\n layoutTimes(options) {\n this.groups.forEach((group) => group.forEachTimeRange(range => range.layout(options)));\n }\n forEachDateRange(callback) {\n this.groups.forEach((group, index) => {\n callback(group.dayRanges[0], index);\n });\n }\n syncDateRanges() {\n let maxHeight = 0;\n this.groups.forEach((group) => {\n const slot = group.dayRanges[0].firstSlot;\n if (slot) {\n maxHeight = Math.max(slot.rect.height - slot.padding, maxHeight);\n }\n });\n this.groups.forEach((group) => {\n group.dayRanges[0].setSlotsHeight(maxHeight);\n });\n return maxHeight;\n }\n forEachGroup(callback) {\n this.groups.forEach(callback);\n }\n forEachSlot(callback) {\n this.groups.forEach((group) => {\n group.dayRanges.forEach(range => {\n range.slots.forEach(slot => callback(slot));\n });\n group.timeRanges.forEach(range => {\n range.slots.forEach(slot => callback(slot));\n });\n });\n }\n createGroup(index) {\n return new DayTimeResourceGroup(index);\n }\n slotByIndex(slotIndex, allDay = false) {\n const [resourceIndex, rangeIndex, index] = slotIndex.split(':').map(part => parseInt(part, 10));\n return this.groups[resourceIndex][allDay ? 'dayRanges' : 'timeRanges'][rangeIndex].slots[index];\n }\n slotByPosition(x, y, isDaySlot, includeDayRanges) {\n let range;\n if (isDaySlot) {\n this.groups.find((group) => {\n range = group.dayRanges.find(r => rectContainsX(r.rect, x));\n return range;\n });\n if (range) {\n return range.slots.find(slot => rectContainsX(slot.rect, x));\n }\n }\n else {\n this.groups.find((group) => {\n if (includeDayRanges) {\n range = group.dayRanges.find(r => rectContains(r.rect, x, y));\n }\n if (!range) {\n range = group.timeRanges.find(r => rectContains(r.rect, x, y));\n }\n return range;\n });\n if (range) {\n return range.slots.find(slot => rectContains(slot.rect, x, y));\n }\n }\n }\n groupSlotByPosition(currentSlot, x, y) {\n const group = this.groups[currentSlot.id.resourceIndex];\n let range;\n if (currentSlot.isDaySlot) {\n range = group.dayRanges.find(r => rectContains(r.rect, x, y));\n }\n else {\n range = group.timeRanges.find(r => rectContains(r.rect, x, y));\n }\n if (range) {\n return range.slots.find(slot => rectContains(slot.rect, x, y));\n }\n }\n dragRanges(currentSlot, offset, timeRanges) {\n const start = new Date(currentSlot.start.getTime() - offset.start);\n const end = new Date(currentSlot.start.getTime() + offset.end);\n const group = this.groups[currentSlot.id.resourceIndex];\n let result;\n if (timeRanges) {\n const slotRanges = [];\n group.timeRanges.forEach(range => {\n const slots = range.slots.filter(s => intersects(start, end, s.start, s.end));\n if (slots.length) {\n slotRanges.push(slots);\n }\n });\n const lastRange = slotRanges[slotRanges.length - 1];\n result = [slotRanges[0][0], lastRange[lastRange.length - 1]];\n }\n else {\n result = group.slotRange(currentSlot).slots.filter(s => intersects(start, end, s.start, s.end));\n }\n return {\n start,\n end,\n ranges: [result]\n };\n }\n resizeRanges(currentSlot, task, resizeStart, offset) {\n const group = this.groups[currentSlot.id.resourceIndex];\n const ranges = task.isAllDay ? group.dayRanges : group.timeRanges;\n const result = [];\n const startDate = task.start.toUTCDate();\n const endDate = task.end.toUTCDate();\n let start, end;\n if (resizeStart) {\n const startTime = currentSlot.start.getTime() + offset.start;\n end = startDate.getTime() === endDate.getTime() ? this.findDateSlot(endDate, ranges, true).end : endDate;\n if (startTime >= endDate.getTime()) {\n if (task.isAllDay) {\n start = new Date(Math.min(dateWithTime(endDate, startDate).getTime(), endDate.getTime()));\n }\n else {\n start = this.findDateSlot(end, ranges).start;\n }\n }\n else if (offset.start && task.isAllDay) {\n start = new Date(startTime);\n }\n else {\n start = new Date(currentSlot.start.getTime());\n }\n }\n else {\n start = startDate;\n if (currentSlot.start.getTime() <= start.getTime()) {\n if (task.isAllDay) {\n end = new Date(Math.max(dateWithTime(startDate, endDate).getTime(), startDate.getTime()));\n }\n else {\n end = this.findDateSlot(start, ranges, true).end;\n }\n }\n else if (offset.end && task.isAllDay) {\n end = new Date(currentSlot.start.getTime() + offset.end);\n }\n else {\n end = currentSlot.end;\n }\n }\n ranges.forEach(range => {\n const slots = range.slots.filter(s => intersects(start, end, s.start, s.end));\n if (slots.length) {\n result.push(slots);\n }\n });\n return {\n start,\n end,\n ranges: result\n };\n }\n timePosition(date, resourceIndex, vertical) {\n const group = this.groups[resourceIndex];\n const range = group.timeRanges.find(r => dateInRange(date, r.start, r.end));\n if (!range) {\n return;\n }\n const slot = range.slots.find(s => dateInRange(date, s.start, s.end));\n if (slot) {\n const position = (vertical ? slot.height : slot.width) *\n ((date.getTime() - slot.start.getTime()) / (slot.end.getTime() - slot.start.getTime()));\n return vertical ? slot.rect.top + position : slot.rect.left + position;\n }\n }\n findDateSlot(date, ranges, excludeEnd) {\n let result;\n ranges.forEach(range => {\n const slots = excludeEnd ? range.slots.filter(s => intersects(date, date, s.start, s.end)) :\n range.slots.filter(s => dateInRange(date, s.start, s.end));\n if (slots.length) {\n result = slots[0];\n }\n });\n return result;\n }\n}\n\n/** @hidden */\nconst isMultiDay = ({ start, end }) => {\n const startDate = start.stripTime();\n const endDate = end.stripTime();\n return startDate.getTime() !== endDate.getTime() &&\n (endDate.getTime() !== end.getTime() || startDate.addDays(1).getTime() !== endDate.getTime());\n};\n//check start and times or update day ranges to have them\n/** @hidden */\nconst createTasks$1 = (periodStart, periodEnd, items, ranges) => {\n const tasks = [];\n const utcStart = toUTCDate(periodStart);\n const utcEnd = toUTCDate(periodEnd);\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const multiDay = isMultiDay(item);\n const multipleRanges = multiDay && !item.event.isAllDay && (item.end.getTime() - item.start.getTime()) < MS_PER_DAY;\n const isAllDay = item.event.isAllDay || (multiDay && !multipleRanges);\n const endTime = (isAllDay ? roundAllDayEnd(item) : item.end).toUTCDate();\n const startTime = (isAllDay ? item.start.stripTime() : item.start).toUTCDate();\n for (let rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n const rangeStart = ranges[rangeIndex].start;\n const rangeEnd = ranges[rangeIndex].end;\n if (intersects(startTime, endTime, rangeStart, rangeEnd)) {\n const task = {\n index,\n isAllDay,\n startTime,\n endTime,\n rangeIndex: isAllDay ? 0 : rangeIndex,\n start: item.start,\n end: item.end,\n event: item.event\n };\n tasks.push(task);\n if (!multipleRanges) {\n task.head = utcEnd < endTime;\n task.tail = startTime < utcStart;\n break;\n }\n else {\n const nextRange = ranges[rangeIndex + 1];\n const previousRange = ranges[rangeIndex - 1];\n task.head = (nextRange ? nextRange.start : utcEnd) < endTime;\n task.tail = startTime < (previousRange ? previousRange.end : utcStart);\n }\n }\n }\n }\n return sortTasksByTime(tasks);\n};\n\n/**\n * @hidden\n */\nfunction createTimeSlots(intlService, { showWorkHours, startTime, endTime, workDayStart, workDayEnd, slotDivisions, slotDuration }) {\n const startDate = intlService.parseDate(showWorkHours ? workDayStart : startTime);\n const start = toInvariantTime(startDate).getTime();\n const endDate = intlService.parseDate(showWorkHours ? workDayEnd : endTime);\n let end = toInvariantTime(endDate).getTime();\n if (end <= start) {\n end = toInvariantTime(MIDNIGHT_INVARIANT).getTime() + MS_PER_DAY;\n }\n const slots = [];\n const duration = Math.round((slotDuration / slotDivisions) * MS_PER_MINUTE);\n let slotTime = start;\n let index = 0;\n while (slotTime < end) {\n slots.push({\n start: new Date(slotTime),\n end: new Date(slotTime + duration),\n isMajor: index % slotDivisions === 0\n });\n index++;\n slotTime += duration;\n }\n return slots;\n}\n\n/**\n * @hidden\n */\nclass DayTimeViewItemComponent extends BaseViewItem {\n constructor(intlService, slotService, localization, focusService, element, renderer, localeId) {\n super(slotService, localization, focusService, element, renderer, localeId);\n this.intlService = intlService;\n this.localeId = localeId;\n }\n get eventTime() {\n return this.intlService.format('{0:t}–{1:t}', toLocalDate(this.item.startTime), toLocalDate(this.item.endTime));\n }\n}\nDayTimeViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewItemComponent, deps: [{ token: i1$4.IntlService }, { token: DayTimeSlotService }, { token: i1$1.LocalizationService }, { token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nDayTimeViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DayTimeViewItemComponent, selector: \"[dayTimeViewItem]\", inputs: { vertical: \"vertical\", isAllDay: \"isAllDay\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
    \n
    {{ eventTime }}
    \n
    {{ item.event.title }}
    \n
    \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n `, isInline: true, directives: [{ type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[dayTimeViewItem]',\n template: `\n \n \n \n \n \n \n \n
    \n
    {{ eventTime }}
    \n
    {{ item.event.title }}
    \n
    \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: DayTimeSlotService }, { type: i1$1.LocalizationService }, { type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { vertical: [{\n type: Input\n }], isAllDay: [{\n type: Input\n }] } });\n\nconst getStartDate = date => getDate(date);\nconst getEndDate = (start, numberOfDays) => getDate(addDays(start, numberOfDays || 1));\nconst getNextDate = (date, count, numberOfDays) => getDate(addDays(date, numberOfDays * count));\n/**\n * @hidden\n */\nclass DayTimeViewComponent extends BaseView {\n constructor(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) {\n super(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector);\n this.changeDetector = changeDetector;\n this.numberOfDays = 1;\n this.startTime = '00:00';\n this.endTime = '00:00';\n this.workDayStart = '08:00';\n this.workDayEnd = '17:00';\n this.workWeekStart = 1;\n this.workWeekEnd = 5;\n this.slotDuration = 60;\n this.slotDivisions = 2;\n this.showWorkHours = false;\n this.getStartDate = getStartDate;\n this.getEndDate = getEndDate;\n this.getNextDate = getNextDate;\n this.daySlots = [];\n this.timeSlots = [];\n this.resizeHintFormat = 't';\n this.showCurrentTime = false;\n this.verticalTime = true;\n this.initialUpdate = true;\n this.updateCurrentTime = this.updateCurrentTime.bind(this);\n this.toggleOngoingClass = this.toggleOngoingClass.bind(this);\n this.updateOngoingEvents = this.updateOngoingEvents.bind(this);\n }\n get classNames() {\n return `k-scheduler-${this.name}view`;\n }\n get timeSlotTemplateRef() {\n return this.timeSlotTemplate || (this.schedulerTimeSlotTemplate || {}).templateRef;\n }\n get dateHeaderTemplateRef() {\n return this.dateHeaderTemplate || (this.schedulerDateHeaderTemplate || {}).templateRef;\n }\n ngOnChanges(changes) {\n if (changes.startTime || changes.endTime || changes.showWorkHours || changes.workDayStart || changes.workDayEnd ||\n changes.workWeekStart || changes.workWeekEnd || changes.slotDivisions || changes.slotDuration) {\n this.timeSlots = this.createTimeSlots();\n this.initWorkDay();\n this.changes.next(null);\n }\n if (isChanged('currentTimeMarker', changes)) {\n this.showCurrentTime = this.enableCurrentTime();\n }\n if (isChanged('weekStart', changes)) {\n this.onSelectDate(this.selectedDate);\n }\n super.ngOnChanges(changes);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n clearTimeout(this.currentTimeTimeout);\n clearTimeout(this.ongoingEventsTimeout);\n }\n verticalItem(leafIndex, resourceIndex) {\n const data = this.verticalResources[resourceIndex].data || [];\n const resources = this.verticalResources;\n let result = 1;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= ((resources[idx].data || []).length || 1);\n }\n return data[(leafIndex / result) % data.length];\n }\n timeSlotClass(slot, date, resourceIndex) {\n if (this.slotClass) {\n return this.slotClass({\n start: dateWithTime(date, slot.start),\n end: dateWithTime(date, slot.end),\n resources: this.resourcesByIndex(resourceIndex),\n isAllDay: false\n });\n }\n }\n toggleOngoingClass() {\n const now = this.currentTime();\n const cssClass = isPresent(this.highlightOngoingEvents.cssClass) ? this.highlightOngoingEvents.cssClass : ONGOING_EVENT_CSS_CLASS;\n this.eventElements.forEach((event) => {\n const isOngoing = dateInRange(now, event.item.start, event.item.end);\n this.renderer[isOngoing ? 'addClass' : 'removeClass'](event.nativeElement, cssClass);\n });\n }\n scrollToTime(time = this.scrollTime) {\n let date;\n if (typeof time === 'string') {\n const scrollDate = this.intl.parseDate(time);\n if (!scrollDate) {\n return;\n }\n date = toUTCTime(this.daySlots[0].start, scrollDate);\n }\n else {\n date = toUTCDateTime(time);\n }\n const position = this.slotService.timePosition(date, 0, this.verticalTime);\n if (isNumber(position)) {\n const contentElement = this.content.nativeElement;\n contentElement[this.verticalTime ? 'scrollTop' : 'scrollLeft'] =\n (this.localization.rtl && !this.verticalTime) ? rtlScrollPosition(contentElement, position) : position;\n }\n }\n optionsChange(options) {\n this.schedulerTimeSlotTemplate = options.timeSlotTemplate;\n this.schedulerDateHeaderTemplate = options.dateHeaderTemplate;\n super.optionsChange(options);\n }\n updateView() {\n super.updateView();\n this.updateCurrentTime();\n this.updateOngoingEvents();\n if (this.initialUpdate) {\n this.scrollToTime();\n this.initialUpdate = false;\n }\n }\n enableCurrentTime() {\n if (!this.currentTimeMarker || this.currentTimeMarker.enabled === false || !this.selectedDate) {\n return false;\n }\n const dateRange = this.dateRange();\n this.currentDate = ZonedDate.fromLocalDate(this.currentTime(), this.currentTimeMarker.localTimezone !== false ? '' : this.timezone);\n const localTime = this.currentDate.toLocalDate();\n const invariantTime = toInvariantTime(localTime);\n const timeSlots = this.timeSlots;\n const inDateRange = dateInRange(localTime, dateRange.start, dateRange.end);\n const inTimeRange = timeSlots.length && dateInRange(invariantTime, timeSlots[0].start, timeSlots[timeSlots.length - 1].end);\n return inDateRange && inTimeRange;\n }\n currentTime() {\n return new Date();\n }\n updateCurrentTime() {\n if (!isDocumentAvailable()) {\n return;\n }\n const enable = this.enableCurrentTime();\n if (enable !== this.showCurrentTime) {\n this.showCurrentTime = enable;\n this.changeDetector.detectChanges();\n }\n clearTimeout(this.currentTimeTimeout);\n if (enable) {\n this.zone.runOutsideAngular(() => {\n this.currentTimeTimeout = setTimeout(this.updateCurrentTime, this.currentTimeMarker.updateInterval || MS_PER_MINUTE);\n });\n this.positionCurrentTime();\n }\n }\n updateOngoingEvents() {\n const disabled = !this.highlightOngoingEvents || this.highlightOngoingEvents.enabled === false;\n if (!isDocumentAvailable() || disabled) {\n return;\n }\n clearTimeout(this.ongoingEventsTimeout);\n this.zone.runOutsideAngular(() => {\n this.ongoingEventsTimeout = setTimeout(this.updateOngoingEvents, this.highlightOngoingEvents.updateInterval || MS_PER_MINUTE);\n });\n this.toggleOngoingClass();\n }\n positionCurrentTime() {\n if (this.currentTimeElements && this.currentTimeElements.length) {\n const date = this.currentDate.toUTCDate();\n const currentTimeArrows = this.currentTimeArrows ? this.currentTimeArrows.toArray() : [];\n const arrowOffset = currentTimeArrows.length ? this.currentTimeArrowOffset() : 0;\n const arrowMid = currentTimeArrows.length ? (currentTimeArrows[0].nativeElement.offsetHeight / 2) : 4;\n const tableWidth = this.contentTable.nativeElement.clientWidth;\n const tableHeight = this.contentTable.nativeElement.clientHeight;\n const vertical = this.verticalTime;\n this.currentTimeElements.forEach((element, index) => {\n const position = this.slotService.timePosition(date, index, vertical);\n if (position !== undefined) {\n const line = element.nativeElement;\n if (currentTimeArrows[index]) {\n const arrow = currentTimeArrows[index].nativeElement;\n const origin = vertical ? arrowOffset : position - arrowMid;\n setCoordinates(arrow, {\n top: vertical ? position - arrowMid : arrowOffset,\n left: origin,\n right: origin\n });\n }\n const origin = vertical ? 0 : position;\n setCoordinates(line, {\n top: vertical ? position : 0,\n left: origin,\n right: origin,\n width: vertical ? tableWidth : 1,\n height: vertical ? 1 : tableHeight\n });\n }\n });\n }\n }\n bindEvents() {\n super.bindEvents();\n this.zone.runOutsideAngular(() => {\n this.subs.add(fromClick(this.headerWrap.nativeElement)\n .subscribe(e => this.onHeaderClick(e)));\n this.subs.add(fromEvent(this.headerWrap.nativeElement, 'contextmenu')\n .subscribe(e => this.onClick(e)));\n this.subs.add(fromDoubleClick(this.headerWrap.nativeElement)\n .subscribe(e => this.onClick(e, 'dblclick')));\n });\n }\n onHeaderClick(e) {\n this.onClick(e);\n if (this.daySlots.length <= 1) {\n return;\n }\n const daySlotIndex = e.target.getAttribute('data-dayslot-index');\n if (daySlotIndex) {\n const slot = this.daySlots[parseInt(daySlotIndex, 10)];\n this.zone.run(() => {\n this.viewState.navigateTo({ viewName: 'day', date: slot.start });\n });\n }\n }\n slotByIndex(slotIndex, args) {\n return this.slotService.slotByIndex(slotIndex, args.target.hasAttribute('data-day-slot'));\n }\n onSelectDate(date) {\n this.selectedDate = date;\n this.daySlots = this.createDaySlots();\n this.showCurrentTime = this.enableCurrentTime();\n this.viewState.notifyDateRange(this.dateRange());\n }\n onAction(e) {\n const now = getDate(this.selectedDate);\n if (e.type === 'next') {\n const next = this.getNextDate(now, 1, this.numberOfDays);\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n if (e.type === 'prev') {\n const next = this.getNextDate(now, -1, this.numberOfDays);\n if (this.isInRange(next)) {\n this.viewState.notifyNextDate(next);\n }\n }\n if (e.type === 'scroll-time') {\n this.scrollToTime(e.time);\n }\n }\n dateRange(date = this.selectedDate) {\n const start = this.getStartDate(date);\n const end = this.getEndDate(start, this.numberOfDays);\n const rangeEnd = this.getEndDate(start, this.numberOfDays - 1);\n const text = this.intl.format(this.selectedDateFormat, start, rangeEnd);\n const shortText = this.intl.format(this.selectedShortDateFormat, start, rangeEnd);\n return { start, end, text, shortText };\n }\n createDaySlots() {\n let current = this.getStartDate(this.selectedDate);\n const end = this.getEndDate(current, this.numberOfDays);\n const dates = [];\n while (current < end) {\n const next = addDays(current, 1);\n dates.push({\n start: current,\n end: next\n });\n current = next;\n }\n return dates;\n }\n createTimeSlots() {\n return createTimeSlots(this.intl, {\n showWorkHours: this.showWorkHours,\n startTime: this.startTime,\n endTime: this.endTime,\n workDayStart: this.workDayStart,\n workDayEnd: this.workDayEnd,\n slotDivisions: this.slotDivisions,\n slotDuration: this.slotDuration\n });\n }\n initWorkDay() {\n const startDate = this.intl.parseDate(this.workDayStart);\n this.workDayStartTime = toInvariantTime(startDate);\n const endDate = this.intl.parseDate(this.workDayEnd);\n if (endDate <= startDate) {\n this.workDayEndTime = addDays(MIDNIGHT_INVARIANT, 1);\n }\n else {\n this.workDayEndTime = toInvariantTime(endDate);\n }\n }\n slotByPosition(x, y, container) {\n const isDaySlot = container ? hasClasses(container.parentNode, 'k-scheduler-header-wrap') : y < 0;\n return this.slotService.slotByPosition(x, y, isDaySlot, Boolean(this.verticalResources.length));\n }\n slotFields(slot) {\n const fields = super.slotFields(slot);\n if (slot.isDaySlot) {\n fields.isAllDay = true;\n }\n else {\n fields.start = this.convertDate(slot.start);\n fields.end = this.convertDate(slot.end);\n }\n return fields;\n }\n}\nDayTimeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDayTimeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DayTimeViewComponent, selector: \"kendo-day-time-view\", inputs: { timeSlotTemplate: \"timeSlotTemplate\", dateHeaderTemplate: \"dateHeaderTemplate\", numberOfDays: \"numberOfDays\", scrollTime: \"scrollTime\", startTime: \"startTime\", endTime: \"endTime\", workDayStart: \"workDayStart\", workDayEnd: \"workDayEnd\", workWeekStart: \"workWeekStart\", workWeekEnd: \"workWeekEnd\", slotDuration: \"slotDuration\", slotDivisions: \"slotDivisions\", showWorkHours: \"showWorkHours\", getStartDate: \"getStartDate\", getEndDate: \"getEndDate\", getNextDate: \"getNextDate\", currentTimeMarker: \"currentTimeMarker\", highlightOngoingEvents: \"highlightOngoingEvents\" }, viewQueries: [{ propertyName: \"currentTimeElements\", predicate: [\"currentTimeMarker\"], descendants: true }, { propertyName: \"eventElements\", predicate: DayTimeViewItemComponent, descendants: true }, { propertyName: \"currentTimeArrows\", predicate: [\"currentTimeArrow\"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kendo-day-time-view', template: '' }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: PDFService }, { type: i1$1.LocalizationService }]; }, propDecorators: { timeSlotTemplate: [{\n type: Input\n }], dateHeaderTemplate: [{\n type: Input\n }], numberOfDays: [{\n type: Input\n }], scrollTime: [{\n type: Input\n }], startTime: [{\n type: Input\n }], endTime: [{\n type: Input\n }], workDayStart: [{\n type: Input\n }], workDayEnd: [{\n type: Input\n }], workWeekStart: [{\n type: Input\n }], workWeekEnd: [{\n type: Input\n }], slotDuration: [{\n type: Input\n }], slotDivisions: [{\n type: Input\n }], showWorkHours: [{\n type: Input\n }], getStartDate: [{\n type: Input\n }], getEndDate: [{\n type: Input\n }], getNextDate: [{\n type: Input\n }], currentTimeMarker: [{\n type: Input\n }], highlightOngoingEvents: [{\n type: Input\n }], currentTimeElements: [{\n type: ViewChildren,\n args: ['currentTimeMarker']\n }], eventElements: [{\n type: ViewChildren,\n args: [DayTimeViewItemComponent]\n }], currentTimeArrows: [{\n type: ViewChildren,\n args: ['currentTimeArrow']\n }] } });\n\n/**\n * @hidden\n */\nclass TimeSlotDirective extends BaseSlotDirective {\n constructor(element, slotService, localization) {\n super(element, slotService, localization);\n this.isDaySlot = false;\n }\n get nonWorkHour() {\n const date = this.date.getDay();\n return this.invariantStart < this.workDayStart || this.workDayEnd < this.invariantEnd || !isWorkWeekDay(date, this.workWeekStart, this.workWeekEnd);\n }\n get startLocalTime() {\n if (!this.date || !this.invariantStart) {\n return null;\n }\n return dateWithTime(this.date, this.invariantStart);\n }\n get endLocalTime() {\n if (!this.date || !this.invariantEnd) {\n return null;\n }\n return dateWithTime(this.date, this.invariantEnd);\n }\n get start() {\n if (!this.date || !this.invariantStart) {\n return null;\n }\n return toUTCTime(this.date, this.invariantStart);\n }\n get end() {\n if (!this.date || !this.invariantEnd) {\n return null;\n }\n const localEnd = toUTCTime(this.date, this.invariantEnd);\n if (INVARIANT_END.getTime() <= this.invariantEnd.getTime()) {\n return addUTCDays(localEnd, 1);\n }\n return localEnd;\n }\n}\nTimeSlotDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSlotDirective, deps: [{ token: i0.ElementRef }, { token: DayTimeSlotService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimeSlotDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSlotDirective, selector: \"[timeSlot]\", inputs: { invariantStart: \"invariantStart\", invariantEnd: \"invariantEnd\", workDayStart: \"workDayStart\", workDayEnd: \"workDayEnd\", workWeekStart: \"workWeekStart\", workWeekEnd: \"workWeekEnd\", date: \"date\" }, host: { properties: { \"class.k-nonwork-hour\": \"this.nonWorkHour\" } }, exportAs: [\"timeSlot\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSlotDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[timeSlot]',\n exportAs: 'timeSlot'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DayTimeSlotService }, { type: i1$1.LocalizationService }]; }, propDecorators: { invariantStart: [{\n type: Input\n }], invariantEnd: [{\n type: Input\n }], workDayStart: [{\n type: Input\n }], workDayEnd: [{\n type: Input\n }], workWeekStart: [{\n type: Input\n }], workWeekEnd: [{\n type: Input\n }], date: [{\n type: Input\n }], nonWorkHour: [{\n type: HostBinding,\n args: ['class.k-nonwork-hour']\n }] } });\n/**\n * @hidden\n */\nclass DaySlotDirective extends BaseSlotDirective {\n constructor(element, slotService, localization) {\n super(element, slotService, localization);\n this.isDaySlot = true;\n }\n set start(value) {\n this.startDate = value;\n }\n get start() {\n if (!this.startDate) {\n return null;\n }\n return toUTCDate(this.startDate);\n }\n set end(value) {\n this.endDate = value;\n }\n get end() {\n if (!this.endDate) {\n return null;\n }\n return toUTCDate(this.endDate);\n }\n get daySlot() {\n return true;\n }\n}\nDaySlotDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DaySlotDirective, deps: [{ token: i0.ElementRef }, { token: DayTimeSlotService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDaySlotDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DaySlotDirective, selector: \"[daySlot]\", inputs: { start: \"start\", end: \"end\" }, host: { properties: { \"attr.data-day-slot\": \"this.daySlot\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DaySlotDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[daySlot]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DayTimeSlotService }, { type: i1$1.LocalizationService }]; }, propDecorators: { start: [{\n type: Input\n }], end: [{\n type: Input\n }], daySlot: [{\n type: HostBinding,\n args: ['attr.data-day-slot']\n }] } });\n\n/**\n * @hidden\n */\nclass MultiDayViewRendererComponent extends DayTimeViewComponent {\n constructor(localization, viewContext, viewState, intl, slotService, zone, renderer, element, changeDetector, pdfService) {\n super(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization);\n this.name = 'day';\n this.dateFormat = { skeleton: 'MEd' };\n this.allDayResizeHintFormat = { skeleton: 'Md' };\n this.allDayItems = new BehaviorSubject(null);\n }\n get allDaySlotTemplateRef() {\n return this.allDaySlotTemplate || (this.schedulerAllDaySlotTemplate || {}).templateRef;\n }\n get allDayEventTemplateRef() {\n return this.allDayEventTemplate || (this.schedulerAllDayEventTemplate || {}).templateRef;\n }\n get minorTimeHeaderTemplateRef() {\n return this.minorTimeHeaderTemplate || (this.schedulerMinorTimeHeaderTemplate || {}).templateRef;\n }\n get majorTimeHeaderTemplateRef() {\n return this.majorTimeHeaderTemplate || (this.schedulerMajorTimeHeaderTemplate || {}).templateRef;\n }\n get allDayMessage() {\n return this.localization.get('allDay');\n }\n get allDayResizeHint() {\n return this.resizing && this.resizing.task.isAllDay;\n }\n get allDayDragHint() {\n return this.dragging && this.dragging.slot.isDaySlot;\n }\n optionsChange(changes) {\n this.schedulerAllDaySlotTemplate = changes.allDaySlotTemplate;\n this.schedulerAllDayEventTemplate = changes.allDayEventTemplate;\n this.schedulerMinorTimeHeaderTemplate = changes.minorTimeHeaderTemplate;\n this.schedulerMajorTimeHeaderTemplate = changes.majorTimeHeaderTemplate;\n super.optionsChange(changes);\n }\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (changes.slotFill) {\n this.changes.next(null);\n }\n if (anyChanged(['startTime', 'endTime', 'showWorkHours', 'workDayStart',\n 'workDayEnd', 'workWeekStart', 'workWeekEnd'], changes)) {\n this.viewRangeChange.next(null);\n }\n if (isChanged('numberOfDays', changes, true /* skipFirstChange */) ||\n isChanged('weekStart', changes)) {\n this.daySlots = this.createDaySlots();\n this.viewState.notifyDateRange(this.dateRange());\n }\n }\n horizontalColspan(resourceIndex) {\n const resources = this.horizontalResources;\n let result = this.daySlots.length;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n verticalRowspan(resourceIndex) {\n const resources = this.verticalResources;\n let result = this.timeSlots.length + 1;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n allDaySlotClass(slot, resourceIndex) {\n if (this.slotClass) {\n return this.slotClass({\n start: slot.start,\n end: slot.end,\n resources: this.resourcesByIndex(resourceIndex),\n isAllDay: true\n });\n }\n }\n createTasks(items, dateRange) {\n const startTimeSlot = this.timeSlots[0];\n const endTimeSlot = this.timeSlots[this.timeSlots.length - 1].end;\n const nextDateEnd = !(endTimeSlot.getHours() || endTimeSlot.getMinutes());\n const ranges = this.daySlots.map(daySlot => ({\n start: toUTCTime(daySlot.start, startTimeSlot.start),\n end: nextDateEnd ? toUTCDate(daySlot.end) : toUTCTime(daySlot.start, endTimeSlot)\n }));\n return createTasks$1(dateRange.start, dateRange.end, items, ranges);\n }\n onTasksChange() {\n this.items.next(this.tasks.filter(task => !task.isAllDay));\n this.allDayItems.next(this.tasks.filter(task => task.isAllDay));\n }\n reflow() {\n const slotService = this.slotService;\n if (!this.verticalResources.length) {\n this.updateContentHeight();\n this.syncTables();\n }\n this.slotService.containerSize = this.content.nativeElement.clientWidth;\n slotService.layoutDays(this.eventHeight);\n this.updateContentHeight();\n this.syncTables();\n if (this.dayCells.length) {\n const cells = this.dayCells.toArray();\n if (this.verticalResources.length) {\n slotService.forEachDateRange((range, index) => {\n const slot = range.firstSlot;\n cells[index].nativeElement.style.height = `${slot.rect.height - slot.padding}px`;\n });\n }\n else {\n const size = slotService.syncDateRanges();\n cells[0].nativeElement.style.height = `${size}px`;\n }\n }\n slotService.layoutTimes({ fill: this.slotFill });\n this.syncTables();\n }\n dragHorizontal(slot) {\n return slot.isDaySlot;\n }\n updateHintContainer() {\n if (this.headerHintContainer) {\n this.headerHintContainer.detectChanges();\n }\n super.updateHintContainer();\n }\n onRelease(args) {\n super.onRelease(args);\n this.dragContainers = null;\n }\n updateDragContainer(args) {\n if (!this.dragContainers) {\n this.dragContainers = this.containers;\n }\n const container = this.dragContainers.find(c => {\n const offset = c.offset;\n return offset.top <= args.pageY && args.pageY <= offset.top + offset.height;\n }) || {};\n this.container = container.element;\n this.containerOffset = container.offset;\n }\n containerByPosition({ x, y }) {\n return this.containers.find(c => {\n const offset = c.offset;\n return offset.top <= y && y <= offset.top + offset.height && offset.left <= x && x <= offset.left + offset.width;\n });\n }\n get containers() {\n const header = this.headerWrap.nativeElement.children[1];\n const content = this.content.nativeElement;\n return [{\n element: content,\n offset: elementOffset(content)\n }, {\n element: header,\n offset: elementOffset(header)\n }];\n }\n scrollContainer(callback, args) {\n clearInterval(this.scrollInterval);\n if (this.container && this.container === this.content.nativeElement) {\n super.scrollContainer(callback, args);\n }\n }\n dragRanges(slot) {\n const task = this.dragging.task;\n if (slot.isDaySlot && !task.isAllDay) {\n return {\n ranges: [[slot]],\n start: dateWithTime(slot.start, task.start.toUTCDate()),\n end: dateWithTime(slot.start, task.end.toUTCDate()),\n isAllDay: true\n };\n }\n const allDayToTime = task.isAllDay && !slot.isDaySlot;\n const result = this.slotService.dragRanges(slot, allDayToTime ? { start: 0, end: 0 } : this.dragging.offset);\n if (allDayToTime) {\n result.end = slot.end;\n }\n result.isAllDay = this.draggedIsAllDay(task, slot);\n return result;\n }\n dragHintEventStyleArgs() {\n return {\n event: this.dragging.task.event,\n resources: this.dragging.resourceItems,\n isAllDay: Boolean(this.allDayDragHint)\n };\n }\n draggedIsAllDay(task, slot) {\n return Boolean(slot.isDaySlot && (task.event.isAllDay || !isMultiDay(task)));\n }\n dragHintSize(firstSlot, lastSlot) {\n let width, height;\n if (firstSlot.isDaySlot) {\n width = toPx(lastSlot.rect.left - firstSlot.rect.left + lastSlot.rect.width);\n height = toPx(firstSlot.height);\n }\n else {\n width = toPx(firstSlot.rect.width * 0.9);\n height = toPx(this.dragging.task.isAllDay ? firstSlot.rect.height : lastSlot.rect.top - firstSlot.rect.top + lastSlot.rect.height);\n }\n return { width, height };\n }\n currentTimeArrowOffset() {\n if (this.verticalResources.length) {\n const el = this.times.nativeElement.querySelector('.k-scheduler-times-all-day');\n const timesEl = this.times.nativeElement;\n return this.localization.rtl ? timesEl.offsetWidth - el.offsetWidth : el.offsetLeft;\n }\n return 0;\n }\n}\nMultiDayViewRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewRendererComponent, deps: [{ token: i1$1.LocalizationService }, { token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PDFService }], target: i0.ɵɵFactoryTarget.Component });\nMultiDayViewRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiDayViewRendererComponent, selector: \"multi-day-view\", inputs: { name: \"name\", slotFill: \"slotFill\", allDaySlotTemplate: \"allDaySlotTemplate\", allDayEventTemplate: \"allDayEventTemplate\", minorTimeHeaderTemplate: \"minorTimeHeaderTemplate\", majorTimeHeaderTemplate: \"majorTimeHeaderTemplate\" }, providers: [\n DayTimeSlotService\n ], viewQueries: [{ propertyName: \"headerHintContainer\", first: true, predicate: [\"headerHintContainer\"], descendants: true }, { propertyName: \"dayCells\", predicate: [\"allDayCell\"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    {{ allDayMessage }}
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n {{ slot.start | kendoDate: dateFormat }}\n \n
    \n
    \n \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n {{ allDayMessage }}
    \n {{ slot.start | kendoDate: 't' }}\n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: DayTimeViewItemComponent, selector: \"[dayTimeViewItem]\", inputs: [\"vertical\", \"isAllDay\"] }, { type: HintContainerComponent, selector: \"kendo-hint-container\" }, { type: ResizeHintComponent, selector: \"[kendoResizeHint]\", inputs: [\"hint\", \"format\"] }], directives: [{ type: i10.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: DaySlotDirective, selector: \"[daySlot]\", inputs: [\"start\", \"end\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: FocusableDirective, selector: \"[kendoSchedulerFocusIndex]\", inputs: [\"kendoSchedulerFocusIndex\"] }, { type: TimeSlotDirective, selector: \"[timeSlot]\", inputs: [\"invariantStart\", \"invariantEnd\", \"workDayStart\", \"workDayEnd\", \"workWeekStart\", \"workWeekEnd\", \"date\"], exportAs: [\"timeSlot\"] }], pipes: { \"resourceIterator\": ResourceIteratorPipe, \"kendoDate\": i1$4.DatePipe, \"async\": i10.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewRendererComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'multi-day-view',\n providers: [\n DayTimeSlotService\n ],\n template: `\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    {{ allDayMessage }}
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n {{ slot.start | kendoDate: dateFormat }}\n \n
    \n
    \n \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n {{ allDayMessage }}
    \n {{ slot.start | kendoDate: 't' }}\n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: PDFService }]; }, propDecorators: { name: [{\n type: Input\n }], slotFill: [{\n type: Input\n }], allDaySlotTemplate: [{\n type: Input\n }], allDayEventTemplate: [{\n type: Input\n }], minorTimeHeaderTemplate: [{\n type: Input\n }], majorTimeHeaderTemplate: [{\n type: Input\n }], dayCells: [{\n type: ViewChildren,\n args: ['allDayCell']\n }], headerHintContainer: [{\n type: ViewChild,\n args: ['headerHintContainer', { static: false }]\n }] } });\n\n/**\n * The component for rendering the **Day** view.\n */\nclass DayViewComponent extends MultiDayViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The invariant name for this view (`day`).\n */\n this.name = 'day';\n this._selectedDateFormat = '{0:D}';\n this._selectedShortDateFormat = '{0:d}';\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('dayViewTitle');\n }\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n set selectedDateFormat(value) {\n this._selectedDateFormat = value;\n }\n ;\n get selectedDateFormat() {\n return this._selectedDateFormat;\n }\n /**\n * The short-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n set selectedShortDateFormat(value) {\n this._selectedShortDateFormat = value;\n }\n ;\n get selectedShortDateFormat() {\n return this._selectedShortDateFormat;\n }\n}\nDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DayViewComponent, selector: \"kendo-scheduler-day-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => DayViewComponent)\n }], queries: [{ propertyName: \"allDaySlotTemplate\", first: true, predicate: AllDaySlotTemplateDirective, descendants: true }, { propertyName: \"allDayEventTemplate\", first: true, predicate: AllDayEventTemplateDirective, descendants: true }, { propertyName: \"minorTimeHeaderTemplate\", first: true, predicate: MinorTimeHeaderTemplateDirective, descendants: true }, { propertyName: \"majorTimeHeaderTemplate\", first: true, predicate: MajorTimeHeaderTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: MultiDayViewRendererComponent, selector: \"multi-day-view\", inputs: [\"name\", \"slotFill\", \"allDaySlotTemplate\", \"allDayEventTemplate\", \"minorTimeHeaderTemplate\", \"majorTimeHeaderTemplate\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-day-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => DayViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], allDaySlotTemplate: [{\n type: ContentChild,\n args: [AllDaySlotTemplateDirective, { static: false }]\n }], allDayEventTemplate: [{\n type: ContentChild,\n args: [AllDayEventTemplateDirective, { static: false }]\n }], minorTimeHeaderTemplate: [{\n type: ContentChild,\n args: [MinorTimeHeaderTemplateDirective, { static: false }]\n }], majorTimeHeaderTemplate: [{\n type: ContentChild,\n args: [MajorTimeHeaderTemplateDirective, { static: false }]\n }] } });\n\n/**\n * The component for rendering the **Multi-Day** view.\n */\nclass MultiDayViewComponent extends DayViewComponent {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * Specifies the number of days that the view will render.\n * Defaults to `1`.\n */\n this.numberOfDays = 1;\n /**\n * The invariant name for this view (`multi-day`).\n */\n this.name = 'multiDay';\n }\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D} - {1:D}` for multiple days and `{0:D}` for a single day\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting).\n */\n set selectedDateFormat(value) {\n this.dateFormat = value;\n }\n get selectedDateFormat() {\n return this.dateFormat || this.defaultDateFormat;\n }\n /**\n * The short date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:d} - {1:d}` for multiple days and `{0:d}` for a single day\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting).\n */\n set selectedShortDateFormat(value) {\n this.shortDateFormat = value;\n }\n get selectedShortDateFormat() {\n return this.shortDateFormat || this.defaultShortDateFormat;\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('multiDayViewTitle');\n }\n get defaultDateFormat() {\n return this.numberOfDays === 1 ? '{0:D}' : '{0:D} - {1:D}';\n }\n get defaultShortDateFormat() {\n return this.numberOfDays === 1 ? '{0:d}' : '{0:d} - {1:d}';\n }\n}\nMultiDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nMultiDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiDayViewComponent, selector: \"kendo-scheduler-multi-day-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\", numberOfDays: \"numberOfDays\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => MultiDayViewComponent)\n }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: MultiDayViewRendererComponent, selector: \"multi-day-view\", inputs: [\"name\", \"slotFill\", \"allDaySlotTemplate\", \"allDayEventTemplate\", \"minorTimeHeaderTemplate\", \"majorTimeHeaderTemplate\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-multi-day-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => MultiDayViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], numberOfDays: [{\n type: Input\n }] } });\n\n/**\n * The component for rendering the **Week** view.\n */\nclass WeekViewComponent extends MultiDayViewBase {\n constructor(intl, localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n this.intl = intl;\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D} - {1:D}`,\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting).\n */\n this.selectedDateFormat = '{0:D} - {1:D}';\n /**\n * The short date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:d} - {1:d}`,\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting).\n */\n this.selectedShortDateFormat = '{0:d} - {1:d}';\n /**\n * The invariant name for this view (`week`).\n */\n this.name = 'week';\n this.getStartDate = this.getStartDate.bind(this);\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('weekViewTitle');\n }\n /**\n * @hidden\n */\n getStartDate(selectedDate) {\n return firstDayInWeek(getDate(selectedDate), this.viewWeekStart);\n }\n}\nWeekViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekViewComponent, deps: [{ token: i1$4.IntlService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WeekViewComponent, selector: \"kendo-scheduler-week-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => WeekViewComponent)\n }], queries: [{ propertyName: \"allDaySlotTemplate\", first: true, predicate: AllDaySlotTemplateDirective, descendants: true }, { propertyName: \"allDayEventTemplate\", first: true, predicate: AllDayEventTemplateDirective, descendants: true }, { propertyName: \"minorTimeHeaderTemplate\", first: true, predicate: MinorTimeHeaderTemplateDirective, descendants: true }, { propertyName: \"majorTimeHeaderTemplate\", first: true, predicate: MajorTimeHeaderTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: MultiDayViewRendererComponent, selector: \"multi-day-view\", inputs: [\"name\", \"slotFill\", \"allDaySlotTemplate\", \"allDayEventTemplate\", \"minorTimeHeaderTemplate\", \"majorTimeHeaderTemplate\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-week-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => WeekViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }], allDaySlotTemplate: [{\n type: ContentChild,\n args: [AllDaySlotTemplateDirective, { static: false }]\n }], allDayEventTemplate: [{\n type: ContentChild,\n args: [AllDayEventTemplateDirective, { static: false }]\n }], minorTimeHeaderTemplate: [{\n type: ContentChild,\n args: [MinorTimeHeaderTemplateDirective, { static: false }]\n }], majorTimeHeaderTemplate: [{\n type: ContentChild,\n args: [MajorTimeHeaderTemplateDirective, { static: false }]\n }] } });\n\nconst DAYS_IN_WEEK = 7;\n/**\n * The component for rendering the **Work Week** view.\n */\nclass WorkWeekViewComponent extends WeekViewComponent {\n constructor(intl, localization, changeDetector, viewContext, viewState) {\n super(intl, localization, changeDetector, viewContext, viewState);\n /**\n * The invariant name for this view (`week`).\n */\n this.name = 'workWeek';\n this.getNextDate = this.getNextDate.bind(this);\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('workWeekViewTitle');\n }\n /**\n * @hidden\n */\n get numberOfDays() {\n if (this.viewWorkWeekStart > this.viewWorkWeekEnd) {\n return (DAYS_IN_WEEK - this.viewWorkWeekStart + this.viewWorkWeekEnd) + 1;\n }\n return (this.viewWorkWeekEnd - this.viewWorkWeekStart) + 1;\n }\n /**\n * @hidden\n */\n getStartDate(selectedDate) {\n return firstDayInWeek(getDate(selectedDate), this.viewWorkWeekStart);\n }\n /**\n * @hidden\n */\n getNextDate(date, count, _numberOfDays) {\n return getDate(addDays(date, DAYS_IN_WEEK * count));\n }\n}\nWorkWeekViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WorkWeekViewComponent, deps: [{ token: i1$4.IntlService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nWorkWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WorkWeekViewComponent, selector: \"kendo-scheduler-work-week-view\", providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => WorkWeekViewComponent)\n }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: MultiDayViewRendererComponent, selector: \"multi-day-view\", inputs: [\"name\", \"slotFill\", \"allDaySlotTemplate\", \"allDayEventTemplate\", \"minorTimeHeaderTemplate\", \"majorTimeHeaderTemplate\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WorkWeekViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-work-week-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => WorkWeekViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; } });\n\nconst DIRECTIVES = [TimeSlotDirective, DaySlotDirective, DayTimeViewItemComponent];\n/**\n * @hidden\n */\nclass DayTimeModule {\n}\nDayTimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDayTimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeModule, declarations: [TimeSlotDirective, DaySlotDirective, DayTimeViewItemComponent], imports: [CommonModule, SharedModule, ViewsSharedModule], exports: [TimeSlotDirective, DaySlotDirective, DayTimeViewItemComponent] });\nDayTimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeModule, imports: [[CommonModule, SharedModule, ViewsSharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayTimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, ViewsSharedModule],\n exports: [\n DIRECTIVES\n ],\n declarations: [\n DIRECTIVES\n ]\n }]\n }] });\n\nconst PUBLIC_DIRECTIVES$1 = [\n DayViewComponent,\n MultiDayViewComponent,\n WeekViewComponent,\n WorkWeekViewComponent\n];\n/**\n * @hidden\n */\nclass MultiDayViewModule {\n}\nMultiDayViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiDayViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewModule, declarations: [DayViewComponent,\n MultiDayViewComponent,\n WeekViewComponent,\n WorkWeekViewComponent, MultiDayViewRendererComponent], imports: [ViewsSharedModule,\n DayTimeModule], exports: [DayViewComponent,\n MultiDayViewComponent,\n WeekViewComponent,\n WorkWeekViewComponent] });\nMultiDayViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewModule, imports: [[\n ViewsSharedModule,\n DayTimeModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiDayViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n ViewsSharedModule,\n DayTimeModule\n ],\n exports: [\n PUBLIC_DIRECTIVES$1\n ],\n declarations: [\n ...PUBLIC_DIRECTIVES$1,\n MultiDayViewRendererComponent\n ]\n }]\n }] });\n\n// eslint-disable no-input-rename\n/**\n * A directive selector for a custom Scheduler view\n */\nclass SchedulerViewDirective extends SchedulerView {\n constructor(template) {\n super();\n this.template = template;\n }\n /**\n * The invariant name for this view. For example, `day`.\n * If not set, the name will be the same as the title.\n */\n get name() {\n return this._name || this.title;\n }\n set name(value) {\n this._name = value;\n }\n}\nSchedulerViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerViewDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nSchedulerViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SchedulerViewDirective, selector: \"[kendoSchedulerView]\", inputs: { title: [\"kendoSchedulerView\", \"title\"], name: [\"kendoSchedulerViewName\", \"name\"] }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => SchedulerViewDirective)\n }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerViewDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => SchedulerViewDirective)\n }],\n selector: '[kendoSchedulerView]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { title: [{\n type: Input,\n args: ['kendoSchedulerView']\n }], name: [{\n type: Input,\n args: ['kendoSchedulerViewName']\n }] } });\n\n/**\n * @hidden\n */\nconst createTasks = (periodStart, periodEnd, items) => {\n const tasks = [];\n const utcStart = toUTCDate(periodStart);\n const utcEnd = toUTCDate(periodEnd);\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const event = item.event;\n const task = {\n index,\n start: item.start,\n end: item.end,\n event: event,\n isAllDay: false\n };\n const endTime = event.isAllDay ? roundAllDayEnd(item) : task.end;\n const startTime = event.isAllDay ? task.start.stripTime() : task.start;\n task.startTime = startTime.toUTCDate();\n task.endTime = endTime.toUTCDate();\n if (intersects(task.startTime, task.endTime, utcStart, utcEnd)) {\n tasks.push(task);\n task.head = task.endTime > periodEnd;\n task.tail = task.startTime < periodStart;\n }\n }\n return tasks;\n};\n\n/**\n * @hidden\n */\nclass TimelineMultiDayViewComponent extends DayTimeViewComponent {\n constructor(localization, changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService) {\n super(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization);\n this.name = 'timeline';\n this.columnWidth = 100;\n this.viewName = 'timeline';\n this.verticalTime = false;\n }\n get classNames() {\n return `k-scheduler-${this.viewName}-view`;\n }\n ngOnChanges(changes) {\n if (changes.columnWidth) {\n this.changes.next(null);\n }\n super.ngOnChanges(changes);\n }\n reflow() {\n const slotService = this.slotService;\n this.updateContentHeight();\n slotService.containerSize = this.content.nativeElement.scrollWidth;\n const verticalResourceRows = this.verticalResources.length ? this.verticalResourceRows.toArray() : [];\n slotService.layoutTimeline(this.eventHeight, verticalResourceRows);\n if (verticalResourceRows.length) {\n slotService.forEachGroup((group, index) => {\n verticalResourceRows[index].nativeElement.style.height = `${group.timeRanges[0].slots[0].height}px`;\n });\n }\n this.syncTables();\n }\n get allEventsMessage() {\n return this.localization.get('allEvents');\n }\n get slotsCount() {\n const resources = this.horizontalResources;\n let result = this.daySlots.length * this.timeSlots.length;\n for (let idx = 0; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n timeColspan(index) {\n const timeSlots = this.timeSlots.length;\n const remainder = timeSlots % this.slotDivisions;\n return remainder === 0 || (index < timeSlots - remainder) ? this.slotDivisions : 1;\n }\n horizontalColspan(resourceIndex) {\n const resources = this.horizontalResources;\n let result = this.daySlots.length * this.timeSlots.length;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n verticalRowspan(resourceIndex) {\n const resources = this.verticalResources;\n let result = 1;\n for (let idx = resourceIndex + 1; idx < resources.length; idx++) {\n result *= (resources[idx].data || []).length || 1;\n }\n return result;\n }\n createTasks(items, dateRange) {\n return createTasks(dateRange.start, dateRange.end, items);\n }\n onTasksChange() {\n this.items.next(this.tasks);\n }\n dragRanges(slot) {\n return this.slotService.dragRanges(slot, this.dragging.offset, true);\n }\n dragHintSize(firstSlot, lastSlot) {\n return {\n width: toPx(lastSlot.rect.left - firstSlot.rect.left + lastSlot.rect.width),\n height: toPx(firstSlot.height)\n };\n }\n updateResizeHints(ranges, start, end) {\n const last = ranges[ranges.length - 1];\n super.updateResizeHints([[ranges[0][0], last[last.length - 1]]], start, end);\n }\n pdfWidth() {\n const contentWidth = this.content.nativeElement.scrollWidth;\n const timesWidth = this.times.nativeElement.offsetWidth;\n return contentWidth + timesWidth;\n }\n currentTimeArrowOffset() {\n return this.headerWrap.nativeElement.querySelector('tr:last-child').offsetTop;\n }\n}\nTimelineMultiDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineMultiDayViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }, { token: i1$4.IntlService }, { token: DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }], target: i0.ɵɵFactoryTarget.Component });\nTimelineMultiDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimelineMultiDayViewComponent, selector: \"timeline-multi-day-view\", inputs: { name: \"name\", columnWidth: \"columnWidth\", viewName: \"viewName\" }, providers: [\n DayTimeSlotService\n ], viewQueries: [{ propertyName: \"verticalResourceRows\", predicate: [\"verticalResourceRows\"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n 1 }\" [attr.data-dayslot-index]=\"index\">{{ daySlot.start | kendoDate: 'm'}}\n \n
    {{ timeSlot.start | kendoDate: 't' }}
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ allEventsMessage }}\n
    \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: DayTimeViewItemComponent, selector: \"[dayTimeViewItem]\", inputs: [\"vertical\", \"isAllDay\"] }, { type: HintContainerComponent, selector: \"kendo-hint-container\" }, { type: ResizeHintComponent, selector: \"[kendoResizeHint]\", inputs: [\"hint\", \"format\"] }], directives: [{ type: i10.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i10.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i10.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i10.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i10.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: TimeSlotDirective, selector: \"[timeSlot]\", inputs: [\"invariantStart\", \"invariantEnd\", \"workDayStart\", \"workDayEnd\", \"workWeekStart\", \"workWeekEnd\", \"date\"], exportAs: [\"timeSlot\"] }, { type: FocusableDirective, selector: \"[kendoSchedulerFocusIndex]\", inputs: [\"kendoSchedulerFocusIndex\"] }], pipes: { \"resourceIterator\": ResourceIteratorPipe, \"repeat\": RepeatPipe, \"kendoDate\": i1$4.DatePipe, \"async\": i10.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineMultiDayViewComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'timeline-multi-day-view',\n providers: [\n DayTimeSlotService\n ],\n template: `\n
    \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ getField(item, resource.textField) }}\n \n
    \n 1 }\" [attr.data-dayslot-index]=\"index\">{{ daySlot.start | kendoDate: 'm'}}\n \n
    {{ timeSlot.start | kendoDate: 't' }}
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ allEventsMessage }}\n
    \n
    \n {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }, { type: i1$4.IntlService }, { type: DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: PDFService }]; }, propDecorators: { name: [{\n type: Input\n }], columnWidth: [{\n type: Input\n }], viewName: [{\n type: Input\n }], verticalResourceRows: [{\n type: ViewChildren,\n args: ['verticalResourceRows']\n }] } });\n\nconst COLUMN_WIDTH = 'columnWidth';\n/**\n * @hidden\n */\nclass TimelineBase extends DayTimeViewBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n }\n /**\n * @hidden\n */\n get viewColumnWidth() {\n return this.optionValue(COLUMN_WIDTH);\n }\n}\nTimelineBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineBase, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Directive });\nTimelineBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimelineBase, inputs: { columnWidth: \"columnWidth\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { columnWidth: [{\n type: Input\n }] } });\n\n/**\n * The component for rendering the **Timeline** view.\n */\nclass TimelineViewComponent extends TimelineBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedDateFormat = '{0:D}';\n /**\n * The short-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedShortDateFormat = '{0:d}';\n /**\n * The invariant name for this view (`timeline`).\n */\n this.name = 'timeline';\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('timelineViewTitle');\n }\n}\nTimelineViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nTimelineViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimelineViewComponent, selector: \"kendo-scheduler-timeline-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineViewComponent)\n }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: TimelineMultiDayViewComponent, selector: \"timeline-multi-day-view\", inputs: [\"name\", \"columnWidth\", \"viewName\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-timeline-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }] } });\n\n/**\n * The component for rendering the **Week** timeline view.\n */\nclass TimelineWeekViewComponent extends TimelineBase {\n constructor(_intl, localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The long-date format that will be used for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:D} - {1:D}`\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedDateFormat = '{0:D} - {1:D}';\n /**\n * The short date format that will be used for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:d} - {1:d}`\n * where `0` is the start and `1` is the end date\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedShortDateFormat = '{0:d} - {1:d}';\n /**\n * The invariant name for this view (`timelineWeek`).\n */\n this.name = 'timelineWeek';\n /**\n * @hidden\n */\n this.getStartDate = (selectedDate) => {\n return firstDayInWeek(getDate(selectedDate), this.viewWeekStart);\n };\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('timelineWeekViewTitle');\n }\n}\nTimelineWeekViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineWeekViewComponent, deps: [{ token: i1$4.IntlService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nTimelineWeekViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimelineWeekViewComponent, selector: \"kendo-scheduler-timeline-week-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineWeekViewComponent)\n }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: TimelineMultiDayViewComponent, selector: \"timeline-multi-day-view\", inputs: [\"name\", \"columnWidth\", \"viewName\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineWeekViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-timeline-week-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineWeekViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$4.IntlService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }] } });\n\n/**\n * The component for rendering the **Month** timeline view.\n */\nclass TimelineMonthViewComponent extends TimelineBase {\n constructor(localization, changeDetector, viewContext, viewState) {\n super(localization, changeDetector, viewContext, viewState);\n /**\n * The long-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:Y}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedDateFormat = '{0:Y}';\n /**\n * The short-date format for displaying the\n * selected date in the Scheduler toolbar.\n * Defaults to `{0:y}`\n * ([more information]({% slug parsingandformatting_intl %}#toc-date-formatting)).\n */\n this.selectedShortDateFormat = '{0:y}';\n /**\n * The invariant name for this view (`timelineMonth`).\n */\n this.name = 'timelineMonth';\n /**\n * @hidden\n */\n this.getStartDate = (selectedDate) => {\n return firstDayOfMonth(getDate(selectedDate));\n };\n /**\n * @hidden\n */\n this.getEndDate = (selectedDate) => {\n return addMonths(this.getStartDate(selectedDate), 1);\n };\n /**\n * @hidden\n */\n this.getNextDate = (date, count) => {\n return addMonths(date, count);\n };\n }\n /**\n * @hidden\n */\n get title() {\n return this.localization.get('timelineMonthViewTitle');\n }\n}\nTimelineMonthViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineMonthViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });\nTimelineMonthViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimelineMonthViewComponent, selector: \"kendo-scheduler-timeline-month-view\", inputs: { selectedDateFormat: \"selectedDateFormat\", selectedShortDateFormat: \"selectedShortDateFormat\" }, providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineMonthViewComponent)\n }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: TimelineMultiDayViewComponent, selector: \"timeline-multi-day-view\", inputs: [\"name\", \"columnWidth\", \"viewName\"] }, { type: ViewFooterComponent, selector: \"[viewFooter]\", inputs: [\"items\"], outputs: [\"itemClick\"] }], directives: [{ type: WorkHoursFooterDirective, selector: \"[kendoWorkHoursFooter]\", inputs: [\"showWorkHours\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineMonthViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-scheduler-timeline-month-view',\n providers: [{\n provide: SchedulerView,\n useExisting: forwardRef(() => TimelineMonthViewComponent)\n }],\n template: `\n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }, { type: ViewStateService }]; }, propDecorators: { selectedDateFormat: [{\n type: Input\n }], selectedShortDateFormat: [{\n type: Input\n }] } });\n\nconst PUBLIC_DIRECTIVES = [\n TimelineViewComponent,\n TimelineWeekViewComponent,\n TimelineMonthViewComponent\n];\n/**\n * @hidden\n */\nclass TimelineViewModule {\n}\nTimelineViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTimelineViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewModule, declarations: [TimelineViewComponent,\n TimelineWeekViewComponent,\n TimelineMonthViewComponent, TimelineMultiDayViewComponent], imports: [DayTimeModule,\n ViewsSharedModule], exports: [TimelineViewComponent,\n TimelineWeekViewComponent,\n TimelineMonthViewComponent] });\nTimelineViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewModule, imports: [[\n DayTimeModule,\n ViewsSharedModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimelineViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n DayTimeModule,\n ViewsSharedModule\n ],\n exports: [\n PUBLIC_DIRECTIVES\n ],\n declarations: [\n ...PUBLIC_DIRECTIVES,\n TimelineMultiDayViewComponent\n ]\n }]\n }] });\n\nconst isRecurrenceMaster = (ev) => !!(ev.id && ev.recurrenceRule);\n/**\n * @hidden\n */\nclass LocalEditService {\n constructor(scheduler, localDataChangesService) {\n this.scheduler = scheduler;\n this.localDataChangesService = localDataChangesService;\n }\n get fields() {\n return this.scheduler.modelFields;\n }\n get hasLocalData() {\n return isPresent(this.localDataChangesService.data);\n }\n get data() {\n if (this.hasLocalData) {\n return this.localDataChangesService.data;\n }\n return this.scheduler.events;\n }\n create(item) {\n const idField = this.fields.id;\n const id = getField(item, idField);\n if (!isPresent(id)) {\n setField(item, idField, this.nextId());\n }\n this.data.push(item);\n this.dataChanged();\n }\n createException(item, value) {\n const exception = this.buildException(value);\n this.removeOccurrenceInternal(item);\n this.create(exception);\n }\n update(item, value) {\n assignValues(item, value);\n this.dataChanged();\n }\n remove(item) {\n const idField = this.fields.id;\n const itemId = getField(item, idField);\n const data = this.data;\n for (let idx = 0; idx < data.length; idx++) {\n if (itemId === getField(data[idx], idField)) {\n data.splice(idx, 1);\n break;\n }\n }\n this.dataChanged();\n }\n removeSeries(item) {\n const event = readEvent(item, this.fields);\n const isHead = isRecurrenceMaster(event);\n this.removeItemAndExceptions(isHead ? event.id : event.recurrenceId);\n this.dataChanged();\n }\n removeOccurrence(item) {\n this.removeOccurrenceInternal(item);\n this.dataChanged();\n }\n findRecurrenceMaster(item) {\n const fields = this.scheduler.modelFields;\n const event = readEvent(item, fields);\n const headId = isRecurrenceMaster(event) ? event.id : event.recurrenceId;\n return this.data.find((dataItem) => getField(dataItem, fields.id) === headId);\n }\n isRecurring(event) {\n return isRecurring(event, this.scheduler.modelFields);\n }\n isException(event) {\n return isException(event, this.scheduler.modelFields);\n }\n nextId() {\n return guid();\n }\n buildException(item) {\n const fields = this.fields;\n const head = this.findRecurrenceMaster(item);\n if (!head) {\n if (isDevMode()) {\n throw new Error('Unable to find recurrence head for event. Please check that recurrenceId is set and refers to an existing event.');\n }\n return;\n }\n const exception = clone(item);\n setField(exception, fields.id, this.nextId());\n setField(exception, fields.recurrenceId, getField(head, fields.id));\n setField(exception, fields.recurrenceRule, null);\n return exception;\n }\n removeItemAndExceptions(itemId) {\n const data = this.data;\n const fields = this.scheduler.modelFields;\n for (let idx = data.length - 1; idx >= 0; idx--) {\n if (itemId === getField(data[idx], fields.recurrenceId) || itemId === getField(data[idx], fields.id)) {\n data.splice(idx, 1);\n }\n }\n }\n removeOccurrenceInternal(item) {\n const fields = this.fields;\n const head = this.findRecurrenceMaster(item);\n const exceptionDate = getField(item, fields.start);\n const currentExceptions = getField(head, fields.recurrenceExceptions) || [];\n setField(head, fields.recurrenceExceptions, [...currentExceptions, exceptionDate]);\n }\n dataChanged() {\n if (this.hasLocalData) {\n this.localDataChangesService.changes.emit();\n }\n }\n}\n\n/**\n * @hidden\n */\nconst markAllAsTouched = (control) => {\n control.markAsTouched();\n if (control.hasOwnProperty('controls')) {\n let controls = control.controls;\n for (let inner in controls) {\n if (controls.hasOwnProperty(inner)) {\n markAllAsTouched(controls[inner]);\n }\n }\n }\n};\n/**\n * @hidden\n */\nfunction diff(obj1, obj2, fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n if (!areEqual(getField(obj1, field), getField(obj2, field))) {\n return true;\n }\n }\n return false;\n}\n/**\n * @hidden\n */\nfunction areEqual(value1, value2) {\n if (value1 && value1.getTime && value2 && value2.getTime) {\n return value1.getTime() === value2.getTime();\n }\n else if (Array.isArray(value1)) {\n if (!Array.isArray(value2) || value1.length !== value2.length) {\n return false;\n }\n for (let idx = 0; idx < value1.length; idx++) {\n if (value1[idx] !== value2[idx]) {\n return false;\n }\n }\n return true;\n }\n return value1 == value2;\n}\nconst DATE_ACCESSORS = ['getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds', 'getMilliseconds'];\n/**\n * @hidden\n */\nfunction seriesDate(head, occurrence, current, field) {\n const values = [];\n const headDate = getField(head, field);\n const occurrenceDate = getField(occurrence, field);\n const currentDate = getField(current, field);\n DATE_ACCESSORS.forEach(accessor => {\n values.push(occurrenceDate[accessor]() === currentDate[accessor]() ? headDate[accessor]() : currentDate[accessor]());\n });\n return new Date(...values);\n}\n\n/**\n * @hidden\n */\nclass EditingDirectiveBase {\n constructor(scheduler, localDataChangesService, dialogsService) {\n this.scheduler = scheduler;\n this.localDataChangesService = localDataChangesService;\n this.dialogsService = dialogsService;\n /**\n * Fires before the editing directive renders the **Add** dialog.\n */\n this.add = new EventEmitter();\n /**\n * Fires before the editing directive renders the **Edit** dialog.\n */\n this.edit = new EventEmitter();\n this.defaultTitle = 'No title';\n this.defaultEditService = this.createDefaultService();\n this.scheduler.editable = true;\n }\n /**\n * The edit service that will handle the editing operations.\n */\n set editService(value) {\n this.userEditService = value;\n }\n get editService() {\n return this.userEditService || this.defaultEditService;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = merge(this.scheduler.slotDblClick, this.scheduler.create).subscribe(this.addHandler.bind(this));\n this.subscriptions.add(this.scheduler.removeConfirmed.subscribe(this.removeHandler.bind(this)));\n this.subscriptions.add(this.scheduler.cancel.subscribe(this.cancelHandler.bind(this)));\n this.subscriptions.add(this.scheduler.resizeEndConfirmed.subscribe(this.resizeEndHandler.bind(this)));\n this.subscriptions.add(this.scheduler.dragEndConfirmed.subscribe(this.dragEndHandler.bind(this)));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n createDefaultService() {\n return new LocalEditService(this.scheduler, this.localDataChangesService);\n }\n addHandler(args) {\n this.closeEditor();\n if (!this.isEnabled('add')) {\n return;\n }\n const fields = this.scheduler.modelFields;\n const dataItem = {};\n setField(dataItem, fields.start, args.start);\n setField(dataItem, fields.end, args.end);\n setField(dataItem, fields.isAllDay, args.isAllDay);\n setField(dataItem, fields.title, args.title);\n const resources = groupResources(this.scheduler.group, this.scheduler.resources);\n const slotResources = args.resources;\n for (let idx = 0; idx < resources.length; idx++) {\n const resource = resources[idx];\n const value = getField(slotResources[idx], resource.valueField);\n setField(dataItem, resource.field, resource.multiple ? [value] : value);\n }\n const addArgs = new AddEvent(this.scheduler, { dataItem });\n this.add.emit(addArgs);\n if (!addArgs.isDefaultPrevented()) {\n this.scheduler.addEvent(this.createModel({\n action: 'add',\n isNew: true,\n dataItem\n }));\n }\n }\n removeHandler({ dataItem }) {\n if (!this.isEnabled('remove')) {\n return;\n }\n if (this.editService.isRecurring(dataItem)) {\n this.dialogsService.openRecurringConfirmationDialog(1 /* Remove */)\n .subscribe((editMode) => {\n if (editMode !== undefined) {\n this.handleRemove(dataItem, editMode);\n }\n });\n }\n else {\n this.dialogsService.openRemoveConfirmationDialog()\n .subscribe((shouldRemove) => {\n if (shouldRemove) {\n this.handleRemove(dataItem, 0 /* Event */);\n }\n });\n }\n }\n cancelHandler() {\n this.closeEditor();\n }\n closeEditor() {\n this.scheduler.closeEvent();\n }\n handleUpdate(item, value, mode) {\n const svc = this.editService;\n if (mode === 1 /* Occurrence */) {\n svc.isException(item) ?\n svc.update(item, value) :\n svc.createException(item, value);\n }\n else {\n // Item is not recurring or we're editing the entire series\n svc.update(item, value);\n }\n }\n handleRemove(item, mode) {\n const svc = this.editService;\n if (mode === 2 /* Series */) {\n svc.removeSeries(item);\n }\n else if (mode === 1 /* Occurrence */) {\n svc.isException(item) ?\n svc.remove(item) :\n svc.removeOccurrence(item);\n }\n else {\n // Item is not recurring\n svc.remove(item);\n }\n }\n resizeEndHandler({ event, start, end }) {\n if (areEqual(start, event.start) && areEqual(end, event.end)) {\n return;\n }\n const dataItem = event.dataItem;\n const fields = this.scheduler.modelFields;\n let value = {};\n setField(value, fields.start, start);\n setField(value, fields.end, end);\n if (this.editService.isRecurring(dataItem)) {\n this.dialogsService.openRecurringConfirmationDialog(0 /* Edit */)\n .subscribe((result) => {\n let target = dataItem;\n if (result === 2 /* Series */) {\n target = this.editService.findRecurrenceMaster(dataItem);\n setField(value, fields.start, seriesDate(target, dataItem, value, fields.start));\n setField(value, fields.end, seriesDate(target, dataItem, value, fields.end));\n }\n else if (result !== undefined) {\n value = assignValues(clone(dataItem), value);\n }\n this.handleUpdate(target, value, result);\n });\n }\n else {\n this.editService.update(dataItem, value);\n }\n }\n dragEndHandler({ event: { dataItem }, start, end, resources, isAllDay }) {\n const modelFields = this.scheduler.modelFields;\n const resourceFields = groupResources(this.scheduler.group, this.scheduler.resources).map(r => r.field);\n const fields = [modelFields.start, modelFields.end, modelFields.isAllDay].concat(resourceFields);\n let value = clone(resources);\n setField(value, modelFields.start, start);\n setField(value, modelFields.end, end);\n setField(value, modelFields.isAllDay, isAllDay);\n if (!diff(dataItem, value, fields)) {\n return;\n }\n if (this.editService.isRecurring(dataItem)) {\n this.dialogsService.openRecurringConfirmationDialog(0 /* Edit */)\n .subscribe((result) => {\n let target = dataItem;\n if (result === 2 /* Series */) {\n target = this.editService.findRecurrenceMaster(dataItem);\n setField(value, modelFields.start, seriesDate(target, dataItem, value, modelFields.start));\n setField(value, modelFields.end, seriesDate(target, dataItem, value, modelFields.end));\n }\n else if (result !== undefined) {\n value = assignValues(clone(dataItem), value);\n }\n this.handleUpdate(target, value, result);\n });\n }\n else {\n this.editService.update(dataItem, value);\n }\n }\n isEnabled(action) {\n const editable = this.scheduler.editable;\n return editable && editable[action] !== false;\n }\n}\nEditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, deps: [{ token: SchedulerComponent }, { token: LocalDataChangesService }, { token: DialogsService }], target: i0.ɵɵFactoryTarget.Directive });\nEditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditingDirectiveBase, inputs: { editService: \"editService\" }, outputs: { add: \"add\", edit: \"edit\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: SchedulerComponent }, { type: LocalDataChangesService }, { type: DialogsService }]; }, propDecorators: { add: [{\n type: Output\n }], edit: [{\n type: Output\n }], editService: [{\n type: Input\n }] } });\n\n/**\n * A directive which encapsulates the editing operations when the Scheduler\n * uses the [Reactive Angular Forms]({{ site.data.urls.angular['reactiveforms'] }}).\n */\nclass ReactiveEditingDirective extends EditingDirectiveBase {\n constructor(scheduler, localDataChangesService, dialogsService) {\n super(scheduler, localDataChangesService, dialogsService);\n this.scheduler = scheduler;\n this.localDataChangesService = localDataChangesService;\n this.dialogsService = dialogsService;\n }\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(this.scheduler.eventDblClick.subscribe(this.editHandler.bind(this)));\n this.subscriptions.add(this.scheduler.save.subscribe(this.saveHandler.bind(this)));\n }\n editHandler(args) {\n if (!this.isEnabled('edit')) {\n return;\n }\n const editArgs = new EditEvent(this.scheduler, { dataItem: args.event.dataItem, event: args.event });\n this.edit.emit(editArgs);\n if (editArgs.isDefaultPrevented()) {\n return;\n }\n let dataItem = args.event.dataItem;\n if (this.editService.isRecurring(dataItem)) {\n this.dialogsService.openRecurringConfirmationDialog(0 /* Edit */)\n .pipe(filter(mode => mode !== undefined))\n .subscribe((mode) => {\n if (mode === 2 /* Series */) {\n dataItem = this.editService.findRecurrenceMaster(dataItem);\n }\n const group = this.createModel({\n action: 'edit',\n isNew: false,\n mode,\n dataItem\n });\n this.scheduler.editEvent(dataItem, { group, mode });\n });\n }\n else {\n const group = this.createModel({\n action: 'edit',\n isNew: false,\n mode: 0 /* Event */,\n dataItem\n });\n this.scheduler.editEvent(dataItem, { group });\n }\n }\n saveHandler(args) {\n if (this.isFormValid(args)) {\n const formValue = args.formGroup.value;\n if (args.isNew) {\n this.editService.create(formValue);\n }\n else {\n this.handleUpdate(args.dataItem, formValue, args.mode);\n }\n }\n this.closeEditor();\n }\n createModel(args) {\n // Alias `event` for backwards compatibility.\n args.event = args.dataItem;\n return this.createFormGroup(args);\n }\n isFormValid({ formGroup, isNew }) {\n if (formGroup.valid) {\n return true;\n }\n if (!formGroup.dirty && !isNew) {\n return false;\n }\n markAllAsTouched(formGroup);\n return false;\n }\n}\nReactiveEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, deps: [{ token: SchedulerComponent }, { token: LocalDataChangesService }, { token: DialogsService }], target: i0.ɵɵFactoryTarget.Directive });\nReactiveEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ReactiveEditingDirective, selector: \"[kendoSchedulerReactiveEditing]\", inputs: { createFormGroup: [\"kendoSchedulerReactiveEditing\", \"createFormGroup\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerReactiveEditing]'\n }]\n }], ctorParameters: function () { return [{ type: SchedulerComponent }, { type: LocalDataChangesService }, { type: DialogsService }]; }, propDecorators: { createFormGroup: [{\n type: Input,\n args: ['kendoSchedulerReactiveEditing']\n }] } });\n\n/**\n * @hidden\n * Custom component messages override default component messages.\n */\nclass RecurrenceEditorCustomMessagesComponent extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nRecurrenceEditorCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRecurrenceEditorCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RecurrenceEditorCustomMessagesComponent, selector: \"kendo-recurrence-editor-messages\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => RecurrenceEditorCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RecurrenceEditorCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => RecurrenceEditorCustomMessagesComponent)\n }\n ],\n selector: 'kendo-recurrence-editor-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst isContentWrapper = element => hasClasses(element, 'k-scheduler-content');\n/**\n * @hidden\n */\nclass ShortcutsDirective {\n constructor(scheduler, domEvents, focusService, zone, changeDetector, viewState, dialogsService) {\n this.scheduler = scheduler;\n this.domEvents = domEvents;\n this.focusService = focusService;\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.viewState = viewState;\n this.dialogsService = dialogsService;\n this.shortcuts = [{\n match: e => e.keyCode === Keys.KeyC && noModifiers(e),\n action: e => {\n const scheduler = this.scheduler;\n const hours = new Date().getHours();\n const selected = scheduler.selectedDate;\n const start = new Date(selected.getFullYear(), selected.getMonth(), selected.getDate(), hours + 1);\n const end = new Date(selected.getFullYear(), selected.getMonth(), selected.getDate(), hours + 2);\n let firstResource;\n if (scheduler.group) {\n const resources = scheduler.resources || [];\n const group = scheduler.group || {};\n const grouped = groupResources(group, resources);\n if (grouped.length > 0) {\n firstResource = grouped[0].data[0];\n }\n }\n scheduler.create.emit({\n start: ZonedDate.fromLocalDate(start, scheduler.timezone).toLocalDate(),\n end: ZonedDate.fromLocalDate(end, scheduler.timezone).toLocalDate(),\n isAllDay: false,\n resources: [firstResource],\n originalEvent: e,\n sender: scheduler\n });\n }\n }, {\n match: e => e.keyCode >= Keys.Digit1 && e.keyCode <= Keys.Digit9 && withModifiers(e, Modifiers.AltKey),\n action: e => {\n const scheduler = this.scheduler;\n const viewIndex = e.keyCode - Keys.Digit0 - 1;\n const views = scheduler.views.toArray();\n const view = views[viewIndex];\n if (view) {\n this.zone.run(() => {\n const prevented = scheduler.onNavigationAction({ type: 'view-change', view });\n if (!prevented) {\n this.changeDetector.markForCheck();\n this.focusWait();\n }\n });\n }\n }\n }, {\n match: e => e.keyCode === Keys.KeyT && noModifiers(e),\n action: () => {\n this.zone.run(() => {\n this.scheduler.onNavigationAction({ type: 'today' });\n this.focusWait();\n });\n }\n }, {\n match: (e) => (e.keyCode === Keys.ArrowLeft || e.keyCode === Keys.ArrowRight) && withModifiers(e, Modifiers.ShiftKey),\n action: (e) => {\n const type = e.keyCode === Keys.ArrowLeft ? 'prev' : 'next';\n this.zone.run(() => {\n this.scheduler.onNavigationAction({ type });\n this.focusWait();\n });\n }\n }, {\n match: e => (e.keyCode === Keys.ArrowUp || e.keyCode === Keys.ArrowLeft) && noModifiers(e) && !isContentWrapper(e.target),\n action: e => {\n const prevented = this.scheduler.onNavigationAction({ type: 'focus-prev' });\n if (!prevented) {\n this.focusService.focusNext({ offset: -1 });\n e.preventDefault();\n }\n }\n }, {\n match: e => (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowRight) && noModifiers(e) && !isContentWrapper(e.target),\n action: e => {\n const prevented = this.scheduler.onNavigationAction({ type: 'focus-next' });\n if (!prevented) {\n this.focusService.focusNext({ offset: 1 });\n e.preventDefault();\n }\n }\n }];\n this.taskShortcuts = [{\n match: e => (e.keyCode === Keys.Delete || e.keyCode === Keys.Backspace) && noModifiers(e),\n action: (e, event) => {\n this.viewState.emitEvent('remove', { event: event, dataItem: event.dataItem });\n e.preventDefault();\n }\n }, {\n match: e => e.keyCode === Keys.Enter && noModifiers(e),\n action: (e, event) => {\n this.viewState.emitEvent('eventDblClick', { type: 'dblclick', event: event, originalEvent: e });\n e.preventDefault();\n }\n }];\n this.subs = new Subscription();\n this.subs.add(this.domEvents.keydown.subscribe(e => this.onKeydown(e)));\n this.subs.add(this.scheduler.eventKeydown.subscribe(e => this.onEventKeydown(e)));\n }\n onKeydown(e) {\n const match = this.shortcuts.find(shortcut => shortcut.match(e));\n if (match && !this.dialogsService.isOpen) {\n match.action(e);\n }\n }\n onEventKeydown(e) {\n const match = this.taskShortcuts.find(shortcut => shortcut.match(e.originalEvent));\n if (match && !this.dialogsService.isOpen) {\n match.action(e.originalEvent, e.event);\n }\n }\n focusWait() {\n this.viewState.layoutEnd.pipe(take(1)).subscribe(() => this.focusService.focus());\n }\n}\nShortcutsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ShortcutsDirective, deps: [{ token: SchedulerComponent }, { token: DomEventsService }, { token: FocusService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: ViewStateService }, { token: DialogsService }], target: i0.ɵɵFactoryTarget.Directive });\nShortcutsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ShortcutsDirective, selector: \"kendo-scheduler\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ShortcutsDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'kendo-scheduler'\n }]\n }], ctorParameters: function () { return [{ type: SchedulerComponent }, { type: DomEventsService }, { type: FocusService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: ViewStateService }, { type: DialogsService }]; } });\n\n/**\n * A directive which manages the in-memory selection state of the Scheduler slots\n * ([see example]({% slug slotselection_scheduler %}#toc-built-in-directive)).\n */\nclass SlotSelectableDirective {\n constructor(scheduler, cdr) {\n this.scheduler = scheduler;\n this.cdr = cdr;\n /**\n * Fires when the currently selected slot range has changed through user interaction.\n */\n this.slotSelectionChange = new EventEmitter();\n this.selectedRange = null;\n this.slotSelectionChangeSource = new EventEmitter();\n this.subscriptions = new Subscription();\n this.scheduler.selectable = true;\n this.subscriptions.add(this.slotSelectionChangeSource\n .pipe(distinctUntilChanged(isSameRange)).subscribe((v) => {\n this.slotSelectionChange.emit(v);\n }));\n const start$ = this.scheduler.slotDragStart;\n const drag$ = this.scheduler.slotDrag;\n const end$ = this.scheduler.slotDragEnd;\n const startSource = start$.pipe(filter(e => !e.isDefaultPrevented()));\n this.subscriptions.add(startSource.subscribe(e => this.initDragSelect(e)));\n this.subscriptions.add(drag$.subscribe(e => this.onDrag(e)));\n this.subscriptions.add(end$.subscribe(() => this.onRelease()));\n }\n ngOnInit() {\n this.scheduler.isSlotSelected = this.isSlotSelected.bind(this);\n }\n ngOnChanges(changes) {\n if (isChanged(\"slotSelection\", changes, false)) {\n const defaults = {\n isAllDay: false,\n resources: this.scheduler.resources.reduce((result, resource) => {\n result.push(...resource.data);\n return result;\n }, [])\n };\n this.selectedRange = Object.assign(defaults, changes.slotSelection.currentValue);\n this.cdr.markForCheck();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n isSlotSelected({ start, end, isAllDay, resources }) {\n if (!start || !end || !this.selectedRange) {\n return false;\n }\n const match = resourcesMatch(this.selectedRange.resources, resources);\n if (!match) {\n return false; // Limit selection to the grouped resource where the drag started.\n }\n return this.selectedRange && isAllDay === this.selectedRange.isAllDay && this.isInRange(start, end);\n }\n initDragSelect({ start, end, isAllDay, resources }) {\n this.selectionOriginResources = resources.slice();\n this.selectedRange = { start, end, isAllDay, resources: resources.slice() };\n this.cdr.markForCheck();\n }\n onDrag({ start, end, resources }) {\n const match = resourcesMatch(this.selectionOriginResources, resources);\n if (!match) {\n return; // Don't change selection when dragging over a different grouped resource's cells.\n }\n this.selectedRange.start = start;\n this.selectedRange.end = end;\n this.cdr.markForCheck();\n }\n onRelease() {\n this.selectionOriginResources = null;\n if (this.selectedRange) {\n this.slotSelectionChangeSource.emit(this.selectedRange);\n }\n }\n /**\n * @hidden\n * Checks if the selected range contains a local date range.\n */\n isInRange(start, end) {\n if (!this.selectedRange) {\n return;\n }\n return intersects(start, end, this.selectedRange.start, this.selectedRange.end);\n }\n}\nSlotSelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlotSelectableDirective, deps: [{ token: SchedulerComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nSlotSelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SlotSelectableDirective, selector: \"[kendoSchedulerSlotSelectable]\", inputs: { slotSelection: \"slotSelection\" }, outputs: { slotSelectionChange: \"slotSelectionChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlotSelectableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerSlotSelectable]'\n }]\n }], ctorParameters: function () { return [{ type: SchedulerComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { slotSelection: [{\n type: Input\n }], slotSelectionChange: [{\n type: Output\n }] } });\n\nconst TEMPLATES = [\n AgendaDateTemplateDirective,\n AgendaTimeTemplateDirective,\n AllDayEventTemplateDirective,\n AllDaySlotTemplateDirective,\n DateHeaderTemplateDirective,\n EventTemplateDirective,\n EditDialogTemplateDirective,\n GroupHeaderTemplateDirective,\n MajorTimeHeaderTemplateDirective,\n MinorTimeHeaderTemplateDirective,\n MonthDaySlotTemplateDirective,\n TimeSlotTemplateDirective\n];\nconst declarations$1 = [\n SchedulerComponent,\n SchedulerViewDirective,\n DataBindingDirective,\n ShortcutsDirective,\n ReactiveEditingDirective,\n SlotSelectableDirective,\n SchedulerDateTimePickerComponent,\n RecurrenceEditorComponent,\n RecurrenceEndRuleEditorComponent,\n RecurrenceFrequencyEditorComponent,\n RecurrenceIntervalEditorComponent,\n RecurrenceMonthlyYearlyEditorComponent,\n RecurrenceWeekdayRuleEditorComponent,\n EndRuleRadioButtonDirective,\n RepeatOnRadioButtonDirective,\n MultipleResourceEditorComponent,\n SingleResourceEditorComponent,\n TimeZoneEditorComponent,\n EditDialogComponent,\n SchedulerCustomMessagesComponent,\n LocalizedMessagesDirective,\n RecurrenceEditorCustomMessagesComponent,\n RecurrenceEditorLocalizedMessagesDirective,\n LoadingComponent,\n ...TEMPLATES\n];\nconst publicDirectives = [\n AgendaViewComponent,\n MonthViewModule,\n MultiDayViewModule,\n ReactiveEditingDirective,\n TimelineViewModule,\n publicDirectives$1,\n ...declarations$1\n];\nconst importedKendoModules = [\n ButtonsModule,\n CheckBoxModule,\n TextAreaModule,\n DateInputsModule,\n DialogModule,\n NumericTextBoxModule,\n TextBoxModule,\n DropDownsModule,\n ReactiveFormsModule,\n SharedModule\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Scheduler component.\n *\n * @example\n * ```ts-no-run\n * import { BrowserModule } from '@angular/platform-browser';\n * import { NgModule } from '@angular/core';\n *\n * // Import the Scheduler module\n * import { SchedulerModule } from '@progress/kendo-angular-scheduler';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [\n * AppComponent\n * ],\n * imports: [\n * BrowserModule,\n *\n * // Import the Scheduler module\n * SchedulerModule\n * ],\n * bootstrap: [\n * AppComponent\n * ]\n * })\n * export class AppModule { }\n * ```\n */\nclass SchedulerModule {\n}\nSchedulerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSchedulerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerModule, declarations: [SchedulerComponent,\n SchedulerViewDirective,\n DataBindingDirective,\n ShortcutsDirective,\n ReactiveEditingDirective,\n SlotSelectableDirective,\n SchedulerDateTimePickerComponent,\n RecurrenceEditorComponent,\n RecurrenceEndRuleEditorComponent,\n RecurrenceFrequencyEditorComponent,\n RecurrenceIntervalEditorComponent,\n RecurrenceMonthlyYearlyEditorComponent,\n RecurrenceWeekdayRuleEditorComponent,\n EndRuleRadioButtonDirective,\n RepeatOnRadioButtonDirective,\n MultipleResourceEditorComponent,\n SingleResourceEditorComponent,\n TimeZoneEditorComponent,\n EditDialogComponent,\n SchedulerCustomMessagesComponent,\n LocalizedMessagesDirective,\n RecurrenceEditorCustomMessagesComponent,\n RecurrenceEditorLocalizedMessagesDirective,\n LoadingComponent, AgendaDateTemplateDirective,\n AgendaTimeTemplateDirective,\n AllDayEventTemplateDirective,\n AllDaySlotTemplateDirective,\n DateHeaderTemplateDirective,\n EventTemplateDirective,\n EditDialogTemplateDirective,\n GroupHeaderTemplateDirective,\n MajorTimeHeaderTemplateDirective,\n MinorTimeHeaderTemplateDirective,\n MonthDaySlotTemplateDirective,\n TimeSlotTemplateDirective], imports: [CommonModule,\n ToolbarModule,\n AgendaViewModule,\n MultiDayViewModule,\n ResizeSensorModule,\n MonthViewModule,\n TimelineViewModule, ButtonsModule,\n CheckBoxModule,\n TextAreaModule,\n DateInputsModule,\n DialogModule,\n NumericTextBoxModule,\n TextBoxModule,\n DropDownsModule,\n ReactiveFormsModule,\n SharedModule], exports: [AgendaViewComponent,\n MonthViewModule,\n MultiDayViewModule,\n ReactiveEditingDirective,\n TimelineViewModule, ToolbarNavigationComponent, ToolbarTemplateDirective, ToolbarViewSelectorComponent, SchedulerComponent,\n SchedulerViewDirective,\n DataBindingDirective,\n ShortcutsDirective,\n ReactiveEditingDirective,\n SlotSelectableDirective,\n SchedulerDateTimePickerComponent,\n RecurrenceEditorComponent,\n RecurrenceEndRuleEditorComponent,\n RecurrenceFrequencyEditorComponent,\n RecurrenceIntervalEditorComponent,\n RecurrenceMonthlyYearlyEditorComponent,\n RecurrenceWeekdayRuleEditorComponent,\n EndRuleRadioButtonDirective,\n RepeatOnRadioButtonDirective,\n MultipleResourceEditorComponent,\n SingleResourceEditorComponent,\n TimeZoneEditorComponent,\n EditDialogComponent,\n SchedulerCustomMessagesComponent,\n LocalizedMessagesDirective,\n RecurrenceEditorCustomMessagesComponent,\n RecurrenceEditorLocalizedMessagesDirective,\n LoadingComponent, AgendaDateTemplateDirective,\n AgendaTimeTemplateDirective,\n AllDayEventTemplateDirective,\n AllDaySlotTemplateDirective,\n DateHeaderTemplateDirective,\n EventTemplateDirective,\n EditDialogTemplateDirective,\n GroupHeaderTemplateDirective,\n MajorTimeHeaderTemplateDirective,\n MinorTimeHeaderTemplateDirective,\n MonthDaySlotTemplateDirective,\n TimeSlotTemplateDirective] });\nSchedulerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerModule, providers: [{\n provide: IntlService,\n useClass: CldrIntlService\n }], imports: [[\n CommonModule,\n ToolbarModule,\n AgendaViewModule,\n MultiDayViewModule,\n ResizeSensorModule,\n MonthViewModule,\n TimelineViewModule,\n ...importedKendoModules\n ], MonthViewModule,\n MultiDayViewModule,\n TimelineViewModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SchedulerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ToolbarModule,\n AgendaViewModule,\n MultiDayViewModule,\n ResizeSensorModule,\n MonthViewModule,\n TimelineViewModule,\n ...importedKendoModules\n ],\n declarations: declarations$1,\n exports: publicDirectives,\n providers: [{\n provide: IntlService,\n useClass: CldrIntlService\n }]\n }]\n }] });\n\nconst DATE_FORMATS = [\n \"yyyyMMddTHHmmssSSSXXX\",\n \"yyyyMMddTHHmmssXXX\",\n \"yyyyMMddTHHmmss\",\n \"yyyyMMddTHHmm\",\n \"yyyyMMddTHH\",\n \"yyyyMMdd\"\n];\n/**\n * A base implementation of the [edit service]({% slug api_scheduler_editservice %}) which persists data to traditional CRUD services such as OData.\n *\n * To support custom models, the `BaseEditService` class requires a [field map]({% slug api_scheduler_schedulermodelfields %}) as a constructor parameter. Subclasses require you to\n * implement the `read` operation, which is not called directly by the base class, and the [`save`]({% slug api_scheduler_baseeditservice %}#toc-save) method which persists the created,\n * updated, and deleted entities.\n *\n * The [`events`](#toc-events) observable will publish the current data which is set upon subscription by using, for example, an [async pipe](https://angular.io/api/common/AsyncPipe)\n * ([more information]({% slug editing_directives_scheduler %}#toc-custom-service)).\n *\n * Implementations which utilize dedicated services, such as Google Calendar and Microsoft Exchange, will typically implement the\n * [`EditService`]({% slug api_scheduler_editservice %}) of the Scheduler directly.\n *\n * See example in [this article]({% slug custom_reactive_editing_scheduler %}).\n */\nclass BaseEditService {\n /**\n * Initializes the base edit service.\n *\n * @param fields - A field map that will be used for reading and modifying model objects. Defaults to the [`SchedulerEvent`]({% slug api_scheduler_schedulerevent %}) fields.\n */\n constructor(fields) {\n /**\n * An array of the currently loaded events which is populated by the derived class.\n */\n this.data = [];\n /**\n * The source subject for the `events` observable.\n */\n this.source = new BehaviorSubject([]);\n this.createdItems = [];\n this.updatedItems = [];\n this.deletedItems = [];\n this.events = this.source.asObservable();\n this.fields = Object.assign(Object.assign({}, defaultModelFields), fields);\n this.getId = getter(this.fields.id);\n this.getRecurrenceId = getter(this.fields.recurrenceId);\n this.getRecurrenceRule = getter(this.fields.recurrenceRule);\n this.getRecurrenceExceptions = getter(this.fields.recurrenceExceptions);\n this.getStart = getter(this.fields.start);\n this.setId = setter(this.fields.id);\n this.setRecurrenceRule = setter(this.fields.recurrenceRule);\n this.setRecurrenceExceptions = setter(this.fields.recurrenceExceptions);\n this.setRecurrenceId = setter(this.fields.recurrenceId);\n }\n create(event) {\n this.logCreate(event);\n this.saveChanges();\n }\n /*\n * Creates an exception to a recurring series.\n *\n * The `createException` method performs the following operations:\n * * Adds the start date of the event to the `recurrenceExceptions` of the master event (recurrence head).\n * * Creates a new event that stores the recurrence exception itself.\n */\n createException(event, value) {\n const exception = this.buildException(value);\n this.logRemoveOccurrence(event);\n this.logCreate(exception);\n this.saveChanges();\n }\n update(event, value) {\n this.assignValues(event, value);\n this.logUpdate(event);\n this.saveChanges();\n }\n remove(event) {\n this.logRemove(event);\n this.saveChanges();\n }\n removeSeries(event) {\n const id = this.getId(event);\n const recurrenceId = this.getRecurrenceId(event);\n const isHead = this.isRecurrenceHead(event);\n this.removeItemAndExceptions(isHead ? id : recurrenceId);\n this.saveChanges();\n }\n removeOccurrence(event) {\n this.logRemoveOccurrence(event);\n this.saveChanges();\n }\n /**\n * Returns the master recurring event for a specified recurring event.\n *\n * @param event - An event from the recurrence series.\n * @returns the master recurring event for the series.\n */\n findRecurrenceMaster(event) {\n const id = this.getId(event);\n const recurrenceId = this.getRecurrenceId(event);\n const headId = this.isRecurrenceHead(event) ? id : recurrenceId;\n const index = this.itemIndex(headId, this.data);\n return this.data[index];\n }\n /**\n * Checks if the event is part of the recurrence series.\n *\n * @param event - The event that will be checked.\n * @returns `true` if the event is an occurrence, an exception, or a master event. Otherwise, returns `false`.\n */\n isRecurring(event) {\n return isRecurring(event, this.fields);\n }\n /**\n * Checks if the event is a recurrence exception.\n *\n * @param event - The event that will be checked.\n * @returns `true` if the event is a unique event which belongs to a recurrence series. Otherwise, returns `false`.\n */\n isException(event) {\n return isException(event, this.fields);\n }\n /**\n * Returns a Boolean value which indicates if the event is new.\n * If the `ID` field is defined, the default implementation returns `true`.\n * Can be overridden to implement different conditions.\n *\n * @param event - The event that will be checked.\n */\n isNew(event) {\n const id = this.getId(event);\n return !isPresent(id);\n }\n /**\n * Returns the next `ID` that will be used for new events.\n * The default implementation returns `undefined`.\n */\n nextId() {\n return undefined;\n }\n /**\n * Copies values to the target model instance.\n * To copy the top-level fields, the base implementation uses\n * [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign).\n * To copy nested fields, override `assignValues` and handle the model-specific cases.\n *\n * @param target - The target object that will receive the field values.\n * @param source - The source object from which the fields will be read.\n */\n assignValues(target, source) {\n cloneTo(source, target);\n }\n /**\n * Clones an existing model object.\n * To copy the top-level model fields, the base creates an empty object and calls [`assignValues`](#toc-assignvalues).\n * To create models of the correct type, override `cloneEvent`.\n *\n * @param event - The model instance to copy.\n * @returns TEvent - The new model instance.\n */\n cloneEvent(event) {\n const result = {};\n this.assignValues(result, event);\n return result;\n }\n /**\n * A utility method which parses recurrence exception dates in an ISO format.\n *\n * @example\n * ```ts-no-run\n * const exdates = '20180614T060000Z;20180615T060000Z';\n * const result = super.parseExceptions(exdates);\n *\n * // console.log(result);\n * // Array [ Date 2018-06-14T03:00:00.000Z, Date 2018-06-15T03:00:00.000Z ]\n * ```\n *\n * @param value - A comma-separated list of ISO-formatted dates.\n * @returns Date[] - The recurrence exceptions as local dates.\n */\n parseExceptions(value) {\n if (!isPresent(value) || value === '') {\n return [];\n }\n return value\n .split(';')\n .map(ex => parseDate(ex, DATE_FORMATS) || undefined);\n }\n /**\n * A utility method which serializes recurrence exception dates in an ISO format.\n *\n * @example\n * ```ts-no-run\n * const exdates = [ new Date(2018, 5, 14, 3, 0, 0), new Date(2018, 5, 15, 3, 0, 0) ];\n * const result = super.serializeExceptions(exdates);\n *\n * // console.log(result);\n * // '20180614T060000Z;20180615T060000Z'\n * ```\n *\n * @param value - An array of `Date` instances.\n * @returns string - A comma-separated list of ISO-formatted dates.\n */\n serializeExceptions(exceptions) {\n if (!exceptions || exceptions.length === 0) {\n return '';\n }\n return exceptions.map(date => formatDate(toLocalDate(date), 'yyyyMMddTHHmmss') + 'Z').join(';');\n }\n reset() {\n this.data = [];\n this.deletedItems = [];\n this.updatedItems = [];\n this.createdItems = [];\n }\n itemIndex(id, items) {\n for (let idx = 0; idx < items.length; idx++) {\n if (this.getId(items[idx]) === id) {\n return idx;\n }\n }\n return -1;\n }\n buildException(item) {\n const fields = this.fields;\n const head = this.findRecurrenceMaster(item);\n const copy = this.cloneEvent(item);\n assignField(copy, head, fields.id);\n this.setId(copy, this.nextId());\n this.setRecurrenceRule(copy, undefined);\n this.setRecurrenceId(copy, this.getId(head));\n return copy;\n }\n isRecurrenceHead(item) {\n const id = this.getId(item);\n const recurrenceRule = this.getRecurrenceRule(item);\n return !!(id && recurrenceRule);\n }\n logCreate(item) {\n this.data = [...this.data, item];\n this.source.next(this.data);\n this.createdItems.push(item);\n }\n logUpdate(item) {\n const id = this.getId(item);\n if (!this.isNew(item)) {\n const index = this.itemIndex(id, this.updatedItems);\n if (index !== -1) {\n this.updatedItems.splice(index, 1, item);\n }\n else {\n this.updatedItems.push(item);\n }\n }\n else {\n const index = this.createdItems.indexOf(item);\n this.createdItems.splice(index, 1, item);\n }\n }\n logRemove(item) {\n const id = this.getId(item);\n let index = this.itemIndex(id, this.data);\n this.data = this.data.filter((_, i) => i !== index);\n this.source.next(this.data);\n index = this.itemIndex(id, this.createdItems);\n if (index >= 0) {\n this.createdItems.splice(index, 1);\n }\n else {\n this.deletedItems.push(item);\n }\n index = this.itemIndex(id, this.updatedItems);\n if (index >= 0) {\n this.updatedItems.splice(index, 1);\n }\n }\n logRemoveOccurrence(event) {\n const head = this.findRecurrenceMaster(event);\n const exceptionDate = this.getStart(event);\n const currentExceptions = this.getRecurrenceExceptions(head) || [];\n this.setRecurrenceExceptions(head, [...currentExceptions, exceptionDate]);\n this.logUpdate(head);\n }\n removeItemAndExceptions(itemId) {\n this.deletedItems = this.deletedItems.concat(this.data.filter(ev => this.getRecurrenceId(ev) === itemId || this.getId(ev) === itemId));\n }\n hasChanges() {\n return this.deletedItems.length + this.updatedItems.length + this.createdItems.length > 0;\n }\n saveChanges() {\n if (!this.hasChanges()) {\n return;\n }\n this.save(this.createdItems, this.updatedItems, this.deletedItems);\n this.reset();\n }\n}\n\nconst createElement = (tagName, className) => {\n const element = document.createElement(tagName);\n if (className) {\n element.className = className;\n }\n return element;\n};\nconst createDiv = (className) => createElement('div', className);\n/**\n * Configures the settings for the export of Scheduler in PDF ([see example]({% slug pdfexport_scheduler %})).\n */\nclass PDFComponent {\n constructor(pdfService, ngZone) {\n this.pdfService = pdfService;\n this.ngZone = ngZone;\n /**\n * The creator of the PDF document.\n * Defaults to `Kendo UI PDF Generator`.\n */\n this.creator = 'Kendo UI PDF Generator';\n this.subscriptions = this.pdfService.elementReady.subscribe(this.createElement.bind(this));\n this.saveDataUri = this.saveDataUri.bind(this);\n this.exportGroup = this.exportGroup.bind(this);\n this.done = this.done.bind(this);\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get drawOptions() {\n return {\n _destructive: true,\n avoidLinks: this.avoidLinks,\n margin: this.margin,\n scale: this.scale\n };\n }\n get pdfOptions() {\n return {\n author: this.author,\n creator: this.creator,\n date: this.date,\n imgDPI: this.imageResolution,\n keywords: this.keywords,\n margin: this.margin,\n producer: this.producer,\n subject: this.subject,\n title: this.title\n };\n }\n get saveOptions() {\n return {\n forceProxy: this.forceProxy,\n proxyData: this.proxyData,\n proxyTarget: this.proxyTarget,\n proxyURL: this.proxyURL\n };\n }\n createElement(args) {\n this.ngZone.runOutsideAngular(() => {\n const container = this.container = createDiv();\n container.style.top = container.style.left = '-10000px';\n container.style.position = 'absolute';\n const wrapper = createDiv('k-widget k-scheduler k-floatwrap');\n wrapper.style.position = 'relative';\n wrapper.appendChild(args.element);\n container.appendChild(wrapper);\n document.body.appendChild(container);\n this.save(wrapper);\n });\n }\n save(element) {\n this.drawElement(element, this.drawOptions)\n .then(this.exportGroup)\n .then(this.saveDataUri)\n .then(this.done, this.done);\n }\n drawElement(element, options) {\n return drawDOM(element, options);\n }\n exportGroup(group) {\n return exportPDF(group, this.pdfOptions);\n }\n saveDataUri(dataUri) {\n saveAs(dataUri, this.fileName, this.saveOptions);\n }\n done() {\n if (this.container) {\n document.body.removeChild(this.container);\n this.container = null;\n }\n this.pdfService.done.emit();\n }\n}\nPDFComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, deps: [{ token: PDFService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPDFComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFComponent, selector: \"kendo-scheduler-pdf\", inputs: { author: \"author\", avoidLinks: \"avoidLinks\", creator: \"creator\", date: \"date\", imageResolution: \"imageResolution\", fileName: \"fileName\", forceProxy: \"forceProxy\", keywords: \"keywords\", margin: \"margin\", scale: \"scale\", proxyData: \"proxyData\", proxyURL: \"proxyURL\", proxyTarget: \"proxyTarget\", producer: \"producer\", subject: \"subject\", title: \"title\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-scheduler-pdf',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: i0.NgZone }]; }, propDecorators: { author: [{\n type: Input\n }], avoidLinks: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], imageResolution: [{\n type: Input\n }], fileName: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], keywords: [{\n type: Input\n }], margin: [{\n type: Input\n }], scale: [{\n type: Input\n }], proxyData: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], proxyTarget: [{\n type: Input\n }], producer: [{\n type: Input\n }], subject: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * Represents the `export-to-PDF` command of the Scheduler.\n * You can apply this directive to any `button` element inside a\n * [`ToolbarTemplate`]({% slug toolbar_scheduler %}).\n * When the user clicks a button that is associated with the directive, the\n * [`pdfExport`]({% slug api_scheduler_schedulercomponent %}#toc-pdfexport) event\n * fires ([see example]({% slug pdfexport_scheduler %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n *
    \n * \n *
    \n *
    \n * \n * \n *
    \n * ```\n */\nclass PDFCommandDirective extends Button {\n constructor(pdfService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.pdfService = pdfService;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.pdfService.exportClick.emit();\n }\n ngOnInit() {\n this.icon = 'pdf';\n }\n}\nPDFCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, deps: [{ token: PDFService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nPDFCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFCommandDirective, selector: \"[kendoSchedulerPDFCommand]\", host: { listeners: { \"click\": \"onClick($event)\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSchedulerPDFCommand]'\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nconst declarations = [\n PDFComponent,\n PDFCommandDirective\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule)\n * definition for the Scheduler PDF component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Scheduler and PDF modules\n * import { SchedulerModule, PDFModule } from '@progress/kendo-angular-scheduler';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, SchedulerModule, PDFModule], // import Scheduler and PDF modules\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PDFModule {\n}\nPDFModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPDFModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, declarations: [PDFComponent,\n PDFCommandDirective], exports: [PDFComponent,\n PDFCommandDirective] });\nPDFModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AddEvent, AgendaDateTemplateDirective, AgendaTimeTemplateDirective, AgendaViewComponent, AllDayEventTemplateDirective, AllDaySlotTemplateDirective, BaseEditService, CancelEvent, CrudOperation, DataBindingDirective, DateChangeEvent, DateHeaderTemplateDirective, DayViewComponent, DragEndEvent, DragEvent, DragStartEvent, EditDialogComponent, EditDialogTemplateDirective, EditEvent, EditEventBase, EditMode, EndRuleRadioButtonDirective, EventClickEvent, EventKeydownEvent, EventTemplateDirective, FocusableDirective, GroupHeaderTemplateDirective, IsSlotSelectedArgs, LoadingComponent, LocalizedMessagesDirective, MajorTimeHeaderTemplateDirective, MinorTimeHeaderTemplateDirective, MonthDaySlotTemplateDirective, MonthViewComponent, MonthViewModule, MultiDayViewComponent, MultiDayViewModule, MultipleResourceEditorComponent, NavigateEvent, PDFCommandDirective, PDFComponent, PDFExportEvent, PDFModule, PDFService, ReactiveEditingDirective, RecurrenceEditorComponent, RecurrenceEditorCustomMessagesComponent, RecurrenceEditorLocalizedMessagesDirective, RecurrenceEndRuleEditorComponent, RecurrenceFrequencyEditorComponent, RecurrenceIntervalEditorComponent, RecurrenceMonthlyYearlyEditorComponent, RecurrenceWeekdayRuleEditorComponent, RemoveEvent, RepeatOnRadioButtonDirective, ResizeEndEvent, ResizeEvent, ResizeStartEvent, SaveEvent, SchedulerComponent, SchedulerCustomMessagesComponent, SchedulerDateTimePickerComponent, SchedulerModule, SchedulerView, SchedulerViewDirective, SharedModule, ShortcutsDirective, SingleResourceEditorComponent, SlotClickEvent, SlotDragEndEvent, SlotDragEvent, SlotDragStartEvent, SlotSelectableDirective, TimeSlotTemplateDirective, TimeZoneEditorComponent, TimelineMonthViewComponent, TimelineViewComponent, TimelineViewModule, TimelineWeekViewComponent, ToolbarNavigationComponent, ToolbarService, ToolbarTemplateDirective, ToolbarViewSelectorComponent, VIEW_EVENT_MAP, ViewContextService, ViewStateService, WeekViewComponent, WorkWeekViewComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Component, Input, Output, HostListener, Directive, forwardRef, ViewContainerRef, ContentChildren, ViewChild, ViewChildren, HostBinding, ElementRef, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport * as i6 from '@progress/kendo-angular-common';\nimport { Keys, isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { Subject, Subscription, merge, fromEvent } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-buttons';\nimport { DropDownButtonComponent, ButtonsModule } from '@progress/kendo-angular-buttons';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-toolbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652109663,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass RefreshService {\n constructor() {\n this.onRefresh = new EventEmitter();\n }\n refresh(tool) {\n this.onRefresh.emit(tool);\n }\n}\nRefreshService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRefreshService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction innerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width -= parseFloat(style.paddingLeft) || 0 + parseFloat(style.borderLeftWidth) || 0;\n width -= parseFloat(style.paddingRight) || 0 + parseFloat(style.borderRightWidth) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction outerHeight(element) {\n var width = element.offsetHeight;\n var style = getComputedStyle(element);\n width += parseFloat(style.marginTop) || 0 + parseFloat(style.marginBottom) || 0;\n return width;\n}\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they should still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n let focusable = tabIndex !== null;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findFocusableSibling = (element, checkVisibility = true, reverse) => {\n let node = reverse ? element.prevSibling : element.nextSibling;\n while (node) {\n if (node.nodeType === 1) {\n const result = findElement(node, el => isFocusable(el, checkVisibility));\n if (result) {\n return result;\n }\n }\n node = reverse ? node.prevSibling : node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst makePeeker = (collection) => (index) => isPresent(collection[index]);\n/**\n * @hidden\n */\nconst getIndexOfFocused = (prevKeyCode, nextKeyCode, collection) => (ev) => {\n switch (ev.type) {\n case 'keydown':\n if (ev.keyCode === prevKeyCode) {\n return collection.length - 1;\n }\n if (ev.keyCode === nextKeyCode) {\n return 0;\n }\n break;\n case 'click':\n return collection.findIndex(be => be === ev.target || be.contains(ev.target));\n case 'focus':\n return 0;\n default:\n return 0;\n }\n};\n/**\n * @hidden\n */\nconst seekFocusedIndex = (prevKeyCode, nextKeyCode, seeker) => (startIndex, ev) => {\n switch (ev.keyCode) {\n case prevKeyCode:\n return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n case nextKeyCode:\n return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n default:\n return startIndex;\n }\n};\n/**\n * @hidden\n */\nconst areEqual = (first) => (second) => first === second;\n/**\n * @hidden\n */\nconst getNextKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowDown : rtl ? Keys.ArrowLeft : Keys.ArrowRight;\n/**\n * @hidden\n */\nconst getPrevKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowUp : rtl ? Keys.ArrowRight : Keys.ArrowLeft;\n/**\n * @hidden\n */\nconst getValueForLocation = (property, displayMode, overflows) => {\n switch (displayMode) {\n case 'toolbar':\n return overflows ? undefined : property;\n case 'overflow':\n return overflows ? property : undefined;\n default:\n return property;\n }\n};\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(zone) {\n this.zone = zone;\n this.focused = { renderedTool: null, index: -1 };\n this.renderedTools = [];\n this.isPopupFocused = false;\n this.isOverflowButtonFocused = false;\n }\n setRenderedTools(rts) {\n this.renderedTools = [...rts];\n }\n click({ context, event: ev }) {\n if (this.focused.renderedTool !== context && ev) {\n this.focus(context, ev);\n }\n }\n moveFocusToToolBar() {\n this.isPopupFocused = false;\n this.focusOverflowButton();\n }\n moveFocusToPopup() {\n this.isPopupFocused = true;\n this.blurOverflowButton();\n this.focus();\n }\n focusNext(ev) {\n if (!this.isOverflowButtonFocused && this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const nextRT = this.getFocusableTools().slice(this.focused.index + 1)[0];\n if (nextRT) {\n this.focus(nextRT, ev);\n }\n else {\n if (this.isOverflowButtonVisible() && !this.isPopupFocused) {\n this.focusOverflowButton();\n }\n }\n }\n }\n focusPrev(ev) {\n if (this.isOverflowButtonFocused) {\n const lastFocusableRT = this.getFocusableTools().reverse()[0];\n this.focus(lastFocusableRT, ev);\n }\n else if (this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const prevRT = this.getFocusableTools()\n .slice(0, this.focused.index)\n .reverse()[0];\n if (prevRT) {\n this.focus(prevRT, ev);\n }\n }\n }\n resetNavigation() {\n this.blurOverflowButton();\n this.focused.renderedTool = null;\n this.focused.index = -1;\n }\n focusFirst(ev) {\n const firstTool = this.getFocusableTools()[0];\n const overFlowButton = this.overflowButton;\n if (firstTool) {\n this.focused.renderedTool = firstTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === firstTool);\n this.focus(firstTool, ev);\n }\n else if (overFlowButton) {\n overFlowButton.nativeElement.focus();\n }\n }\n getFocusableTools() {\n return this.renderedTools.filter(rt => rt.tool.overflows === this.isPopupFocused && rt.tool.canFocus());\n }\n focus(renderedTool, ev) {\n // running the code below in onStable fixes issue #2939\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (!renderedTool) {\n const focusableRTs = this.getFocusableTools();\n const lastFocusedRT = focusableRTs.find(rt => rt === this.focused.renderedTool) || focusableRTs[0];\n // guard against only disabled tools\n if (lastFocusedRT) {\n this.focused.renderedTool = lastFocusedRT;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === lastFocusedRT);\n // if event is undefined, then this means that the tool is the first one in the overflow popup\n lastFocusedRT.tool.focus(ev);\n }\n }\n else if (renderedTool.tool.canFocus && renderedTool.tool.canFocus()) {\n this.focused.renderedTool = renderedTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === renderedTool);\n renderedTool.tool.focus(ev);\n this.blurOverflowButton();\n }\n });\n }\n blurOverflowButton() {\n if (this.overflowButton) {\n this.isOverflowButtonFocused = false;\n this.overflowButton.nativeElement.tabIndex = -1;\n }\n }\n focusOverflowButton() {\n this.isOverflowButtonFocused = true;\n this.overflowButton.nativeElement.tabIndex = 0;\n this.overflowButton.nativeElement.focus();\n }\n isOverflowButtonVisible() {\n return (isPresent(this.overflowButton) &&\n window.getComputedStyle(this.overflowButton.nativeElement).getPropertyValue('visibility') === 'visible');\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the Base ToolBar Tool component for Angular.\n * Extend this class to create custom tools.\n */\nclass ToolBarToolComponent {\n constructor() {\n this.tabIndex = -1; //Focus movement inside the toolbar is managed using roving tabindex.\n this.overflows = true;\n // this should be replaced with showTool: DisplayMode = 'both';\n /**\n * @hidden\n */\n this.responsive = true;\n }\n get toolbarDisplay() {\n return this.overflows ? 'none' : 'inline-block';\n }\n get overflowDisplay() {\n return this.overflows ? 'block' : 'none';\n }\n /**\n * Determines if the tool can be focused.\n * If the returned value is `false`, the tool will not be part of the keyboard navigation.\n * @returns `true` if the tool should take part in keyboard navigation.\n */\n canFocus() {\n return false;\n }\n /**\n * Called when the tool is focused.\n * The method accepts as argument the original browser event, which can be a `KeyboardEvent`, `MouseEvent` or `FocusEvent`.\n * @param {Event} ev - This is the event that caused the tool to be focused.\n */\n // @ts-ignore\n focus(ev) {\n /* noop */\n }\n /**\n * Called when the tool is focused and one of the arrow keys is pressed.\n * The returned boolean value determines whether the `ToolBarComponent` will move the focus to the next/previous `ToolBarToolComponent`\n * ([see example]({% slug customcontroltypes_toolbar %}#toc-adding-keyboard-navigation)).\n * @param {KeyboardEvent} ev - The last pressed arrow key\n * @returns\n */\n // @ts-ignore\n handleKey(ev) {\n return false;\n }\n}\nToolBarToolComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarToolComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarToolComponent, selector: \"toolbar-tool\", inputs: { responsive: \"responsive\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarToolComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'toolbar-tool',\n template: ``\n }]\n }], propDecorators: { responsive: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst defaultPopupWidth = '150px';\n\n/**\n * @hidden\n */\nclass RendererService {\n getElement() {\n return this.element.nativeElement;\n }\n querySelector(selector) {\n return this.element.nativeElement.querySelector(selector);\n }\n querySelectorAll(selector) {\n return this.element.nativeElement.querySelectorAll(selector);\n }\n findFocusable() {\n return findFocusable(this.element.nativeElement, false);\n }\n findFocusableChild(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableChild(element, false);\n }\n findNextFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false);\n }\n findPrevFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false, true);\n }\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ToolBarRendererComponent {\n constructor(element, renderer, rendererService, refreshService) {\n this.element = element;\n this.renderer = renderer;\n this.rendererService = rendererService;\n this.refreshService = refreshService;\n this.rendererClick = new EventEmitter();\n this.rendererService.element = element;\n this.rendererService.renderer = this;\n this.refreshSubscription = this.refreshService.onRefresh.subscribe((tool) => {\n if (this.tool === tool) {\n this.refresh();\n }\n });\n }\n onClick(ev) {\n this.rendererClick.emit({ context: this, event: ev });\n }\n ngOnInit() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n else {\n this.template = this.tool.popupTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n }\n else {\n this.tool.overflows = false;\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'display');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'inline-block');\n }\n }\n ngOnDestroy() {\n this.refreshSubscription.unsubscribe();\n }\n ngAfterViewInit() {\n if (this.resizable) {\n this.refresh();\n }\n }\n /**\n * @hidden\n */\n get width() {\n return this.tool.overflows ? 0 : outerWidth(this.element.nativeElement);\n }\n /**\n * @hidden\n */\n isDisplayed() {\n return this.element.nativeElement.style.display !== 'none';\n }\n /**\n * @hidden\n */\n refresh() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', this.tool.visibility);\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.toolbarDisplay);\n }\n else {\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.overflowDisplay);\n }\n }\n }\n /**\n * @hidden\n */\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nToolBarRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarRendererComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: RendererService }, { token: RefreshService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: { tool: \"tool\", location: \"location\", resizable: \"resizable\" }, outputs: { rendererClick: \"rendererClick\" }, host: { listeners: { \"click\": \"onClick($event)\" } }, providers: [RendererService], exportAs: [\"kendoToolBarRenderer\"], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarRendererComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarRenderer',\n providers: [RendererService],\n selector: 'kendo-toolbar-renderer',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: RendererService }, { type: RefreshService }]; }, propDecorators: { tool: [{\n type: Input\n }], location: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rendererClick: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolbarMessages extends ComponentMessages {\n}\nToolbarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nToolbarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarMessages, selector: \"kendo-toolbar-messages-base\", inputs: { moreToolsTitle: \"moreToolsTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-toolbar-messages-base'\n }]\n }], propDecorators: { moreToolsTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedToolbarMessagesDirective extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedToolbarMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedToolbarMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedToolbarMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedToolbarMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ],\n selector: '[kendoToolbarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst getInitialPopupSettings = (isRtl) => ({\n animate: true,\n anchorAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'bottom' },\n popupAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'top' }\n});\n/**\n * Represents the [Kendo UI ToolBar component for Angular]({% slug overview_toolbar %}).\n */\nclass ToolBarComponent {\n constructor(localization, popupService, refreshService, navigationService, element, zone, renderer, _cdr) {\n this.localization = localization;\n this.popupService = popupService;\n this.refreshService = refreshService;\n this.navigationService = navigationService;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this._cdr = _cdr;\n /**\n * Hides the overflowing tools in a popup.\n */\n this.overflow = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the ToolBar.\n */\n this.tabindex = 0;\n /**\n * Fires when the overflow popup of the ToolBar is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when the overflow popup of the ToolBar is closed.\n */\n this.close = new EventEmitter();\n this.hostClasses = true;\n this.cancelRenderedToolsSubscription$ = new Subject();\n this.subscriptions = new Subscription();\n this.popupSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n set resizable(value) {\n this.overflow = value;\n }\n get resizable() {\n return this.overflow;\n }\n /**\n * Configures the popup of the ToolBar drop-down list.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, getInitialPopupSettings(this.localization.rtl), settings);\n }\n get popupSettings() {\n return this._popupSettings || getInitialPopupSettings(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n set popupOpen(open) {\n if (this.popupOpen === open) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n }\n get popupOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n onFocus(ev) {\n this.navigationService.resetNavigation();\n this.navigationService.focusFirst(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n onFocusOut(event) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n if (closest(event.relatedTarget, (el) => el === this.element.nativeElement)) {\n this.element.nativeElement.setAttribute('tabindex', '-1');\n return;\n }\n this.element.nativeElement.setAttribute('tabindex', this.tabindex.toString());\n }\n get getRole() {\n return 'toolbar';\n }\n get getDir() {\n return this.direction;\n }\n get resizableClass() {\n return this.overflow;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n if (!element.getAttribute('tabindex')) {\n this.element.nativeElement.setAttribute('tabindex', '0');\n }\n this.zone.runOutsideAngular(() => {\n this.toolbarKeydownListener = this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowLeft:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusPrev(ev);\n }\n else {\n this.navigationService.focusNext(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.ArrowRight:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusNext(ev);\n }\n else {\n this.navigationService.focusPrev(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.Tab:\n this.zone.run(() => this.navigationService.resetNavigation());\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n default:\n break;\n }\n });\n });\n if (this.overflow) {\n this.subscriptions.add(merge(this.resizeSensor.resize, this.renderedTools.changes).subscribe(() => { this.onResize(); }));\n // because of https://github.com/telerik/kendo-angular-buttons/pull/276\n // calling onResize twice is the trade-off for removing the manual ChangeDetection\n // triggering altogether - it ensures correct layout and calculations\n // when some tools need overflow on initial rendering\n this.zone.runOutsideAngular(() => setTimeout(() => { this.onResize(); this.onResize(); }));\n this.navigationService.overflowButton = this.overflowButton;\n }\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.subscriptions.add(this.renderedTools.changes.subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray())));\n }\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n if (isDocumentAvailable()) {\n this.zone.runOutsideAngular(() => this.subscriptions.add(fromEvent(document, 'click')\n .pipe(filter(() => !!this.popupRef), filter((ev) => !this.popupRef.popup.instance.container.nativeElement.contains(ev.target)), filter((ev) => !this.overflowButton.nativeElement.contains(ev.target)))\n .subscribe(() => {\n this.zone.run(() => {\n this.popupOpen = false;\n });\n })));\n }\n }\n ngOnChanges(changes) {\n if (changes.tabindex) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', changes.tabindex.currentValue.toString());\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n if (this.toolbarKeydownListener) {\n this.toolbarKeydownListener();\n }\n this.cancelRenderedToolsSubscription$.next();\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get moreToolsTitle() {\n return this.localization.get('moreToolsTitle');\n }\n /**\n * @hidden\n */\n get cdr() {\n return this._cdr;\n }\n /**\n * @hidden\n */\n onRendererClick(data) {\n this.navigationService.click(data);\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n showPopup() {\n this.popupOpen = !this.popupOpen;\n this.navigationService.click({ context: undefined, event: undefined });\n }\n /**\n * Toggles the visibility of the overflow popup.\n */\n toggle(popupOpen) {\n this._open = popupOpen !== undefined ? popupOpen : !this.popupOpen;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupOpen) {\n this.popupRef = this.popupService.open({\n anchor: this.overflowButton,\n anchorAlign: this.popupSettings.anchorAlign,\n popupAlign: this.popupSettings.popupAlign,\n content: this.popupTemplate,\n appendTo: this.appendTo,\n animate: this.popupSettings.animate,\n popupClass: this.popupSettings.popupClass,\n positionMode: 'absolute'\n });\n this.setPopupContentDimensions();\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.onPopupOpen.bind(this)));\n this.popupSubs.add(this.popupRef.popupClose.subscribe(this.onPopupClose.bind(this)));\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (isDocumentAvailable()) {\n const containerWidth = innerWidth(this.element.nativeElement) - this.overflowAnchorWidth;\n this.shrink(containerWidth, this.childrenWidth);\n this.stretch(containerWidth, this.childrenWidth);\n this.displayAnchor();\n this.resizeSensor.acceptSize();\n }\n }\n /**\n * @hidden\n */\n onPopupOpen() {\n this.zone.runOutsideAngular(() => {\n this.overflowKeydownListener = this.renderer.listen(this.popupRef.popupElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowUp:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusPrev(ev);\n });\n break;\n case Keys.ArrowDown:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusNext(ev);\n });\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n case Keys.Tab:\n this.zone.run(() => {\n this.toggle(false);\n this.navigationService.resetNavigation();\n });\n break;\n default:\n break;\n }\n });\n });\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.moveFocusToPopup();\n this.navigationService.setRenderedTools(this.overflowRenderedTools.toArray());\n this.overflowRenderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n }\n /**\n * @hidden\n */\n onPopupClose() {\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.renderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n this.navigationService.moveFocusToToolBar();\n if (this.overflowKeydownListener) {\n this.overflowKeydownListener();\n }\n }\n displayAnchor() {\n const visibility = this.allTools.filter(t => t.overflows && t.responsive).length > 0 ? 'visible' : 'hidden';\n this.renderer.setStyle(this.overflowButton.nativeElement, 'visibility', visibility);\n }\n get popupWidth() {\n if (!this.popupSettings || !this.popupSettings.width) {\n return defaultPopupWidth;\n }\n return isNaN(this.popupSettings.width) ? this.popupSettings.width : `${this.popupSettings.width}px`;\n }\n get popupHeight() {\n if (!this.popupSettings || !this.popupSettings.height) {\n return;\n }\n return isNaN(this.popupSettings.height) ? this.popupSettings.height : `${this.popupSettings.height}px`;\n }\n get overflowAnchorWidth() {\n if (!this.overflow) {\n return 0;\n }\n if (!this.cachedOverflowAnchorWidth) {\n this.cachedOverflowAnchorWidth = outerWidth(this.overflowButton.nativeElement);\n }\n return this.cachedOverflowAnchorWidth;\n }\n get gap() {\n if (isPresent(this.cachedGap)) {\n return this.cachedGap;\n }\n const computedGap = getComputedStyle(this.element.nativeElement).gap;\n this.cachedGap = isPresent(computedGap) ? parseInt(computedGap, 10) : 0;\n return this.cachedGap;\n }\n get childrenWidth() {\n const width = this.renderedTools.reduce((totalWidth, tool) => tool.width + totalWidth + (tool.isDisplayed() ? this.gap : 0), 0);\n return Math.ceil(width);\n }\n get visibleTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === false;\n });\n }\n get overflowTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === true;\n });\n }\n shrink(containerWidth, childrenWidth) {\n let width;\n if (containerWidth < childrenWidth) {\n for (var i = this.visibleTools.length - 1; i >= 0; i--) {\n if (containerWidth > childrenWidth) {\n break;\n }\n else {\n width = this.hideLastVisibleTool();\n childrenWidth -= width;\n }\n }\n }\n }\n stretch(containerWidth, childrenWidth) {\n let width;\n if (containerWidth > childrenWidth) {\n for (var i = this.overflowTools.length - 1; i >= 0; i--) {\n width = this.showFirstHiddenTool(containerWidth, childrenWidth);\n if (width) {\n childrenWidth += width;\n }\n else {\n break;\n }\n }\n }\n }\n hideLastVisibleTool() {\n const tool = this.visibleTools[this.visibleTools.length - 1];\n const renderedElement = this.renderedTools.find((r) => {\n return r.tool === tool;\n });\n const width = renderedElement.width;\n tool.overflows = true;\n this.refreshService.refresh(tool);\n return width;\n }\n showFirstHiddenTool(containerWidth, childrenWidth) {\n const tool = this.overflowTools[0];\n const renderedElement = this.renderedTools.find(r => r.tool === tool);\n tool.overflows = false;\n tool.visibility = 'hidden';\n this.refreshService.refresh(tool);\n if (containerWidth > childrenWidth + renderedElement.width) {\n tool.visibility = 'visible';\n this.refreshService.refresh(tool);\n }\n else {\n tool.overflows = true;\n this.refreshService.refresh(tool);\n }\n return renderedElement.width; // returns 0 if `overflows` is true\n }\n setPopupContentDimensions() {\n const popupContentContainer = this.popupRef.popup.instance.contentContainer.nativeElement;\n popupContentContainer.style.width = this.popupWidth;\n popupContentContainer.style.height = this.popupHeight;\n popupContentContainer.style.overflow = 'auto';\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n}\nToolBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: RefreshService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nToolBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarComponent, selector: \"kendo-toolbar\", inputs: { overflow: \"overflow\", resizable: \"resizable\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", tabIndex: \"tabIndex\" }, outputs: { open: \"open\", close: \"close\" }, host: { listeners: { \"focus\": \"onFocus($event)\", \"focusout\": \"onFocusOut($event)\" }, properties: { \"class.k-widget\": \"this.hostClasses\", \"class.k-toolbar\": \"this.hostClasses\", \"attr.role\": \"this.getRole\", \"attr.dir\": \"this.getDir\", \"class.k-toolbar-resizable\": \"this.resizableClass\" } }, providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ], queries: [{ propertyName: \"allTools\", predicate: ToolBarToolComponent }], viewQueries: [{ propertyName: \"overflowButton\", first: true, predicate: [\"overflowButton\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: [\"resizeSensor\"], descendants: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"renderedTools\", predicate: [\"toolbarRenderer\"], descendants: true }, { propertyName: \"overflowRenderedTools\", predicate: [\"overflowRenderer\"], descendants: true }], exportAs: [\"kendoToolBar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n
      \n \n
    • \n \n
    • \n
      \n
    \n
    \n \n \n `, isInline: true, components: [{ type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: [\"tool\", \"location\", \"resizable\"], outputs: [\"rendererClick\"], exportAs: [\"kendoToolBarRenderer\"] }, { type: i6.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBar',\n providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ],\n selector: 'kendo-toolbar',\n template: `\n \n \n \n \n \n \n \n \n \n
      \n \n
    • \n \n
    • \n
      \n
    \n
    \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: RefreshService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { overflow: [{\n type: Input\n }], resizable: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], allTools: [{\n type: ContentChildren,\n args: [ToolBarToolComponent]\n }], overflowButton: [{\n type: ViewChild,\n args: ['overflowButton', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], renderedTools: [{\n type: ViewChildren,\n args: ['toolbarRenderer']\n }], overflowRenderedTools: [{\n type: ViewChildren,\n args: ['overflowRenderer']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-toolbar']\n }], onFocus: [{\n type: HostListener,\n args: ['focus', ['$event']]\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-toolbar-resizable']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Button tool for Angular]({% slug controltypes_toolbar %}#toc-buttons).\n */\nclass ToolBarButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * Provides visual styling that indicates if the Button is active\n * ([see example]({% slug controltypes_toolbar %}#toc-toggle-buttons)).\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * Sets the selected state of the Button.\n */\n this.selected = false;\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the Button is clicked.\n */\n this.click = new EventEmitter();\n /**\n * Fires when the Button [pointerdown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/pointerdown_event) event is triggered.\n */\n this.pointerdown = new EventEmitter();\n /**\n * Fires each time the selected state of a Toggle Button is changed.\n * The event argument is the new selected state (Boolean).\n */\n this.selectedChange = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n }\n /**\n * Specifies the text of the Button ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * @hidden\n */\n onBlur() {\n this.getButton().tabIndex = -1;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev) {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n this.getButton().focus();\n }\n this.getButton().tabIndex = 0;\n }\n /**\n * @hidden\n */\n handleKey() {\n this.getButton().tabIndex = -1;\n return false;\n }\n getButton() {\n return (this.overflows ? this.overflowButtonElement : this.toolbarButtonElement).nativeElement;\n }\n}\nToolBarButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonComponent, selector: \"kendo-toolbar-button\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", style: \"style\", className: \"className\", title: \"title\", disabled: \"disabled\", toggleable: \"toggleable\", look: \"look\", togglable: \"togglable\", selected: \"selected\", fillMode: \"fillMode\", themeColor: \"themeColor\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\" }, outputs: { click: \"click\", pointerdown: \"pointerdown\", selectedChange: \"selectedChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonElement\", first: true, predicate: [\"toolbarButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowButtonElement\", first: true, predicate: [\"overflowButton\"], descendants: true, read: ElementRef }], exportAs: [\"kendoToolBarButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n `, isInline: true, directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }],\n selector: 'kendo-toolbar-button',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], style: [{\n type: Input\n }], className: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], toggleable: [{\n type: Input\n }], look: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], click: [{\n type: Output\n }], pointerdown: [{\n type: Output\n }], selectedChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarButtonElement: [{\n type: ViewChild,\n args: ['toolbarButton', { read: ElementRef, static: false }]\n }], overflowButtonElement: [{\n type: ViewChild,\n args: ['overflowButton', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * Represents the Kendo UI Toolbar ButtonGroup for Angular.\n */\nclass ToolBarButtonGroupComponent extends ToolBarToolComponent {\n constructor(localization) {\n super();\n this.localization = localization;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n this.focusedIndex = -1;\n this.getNextKey = getNextKey(this.localization.rtl);\n this.getPrevKey = getPrevKey(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.buttonComponents.forEach(b => b.fillMode = look === 'default' ? 'solid' : look);\n }\n }\n get buttonElements() {\n return this.getButtonGroup()\n .buttons.filter(b => !b.isDisabled)\n .map(b => b.element);\n }\n /**\n * @hidden\n */\n onFocus() {\n // triggered on tabin\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n onNavigate(ev) {\n ev.preventDefault();\n }\n /**\n * @hidden\n */\n selectedChangeHandler(state, button) {\n button.selected = state;\n button.selectedChange.emit(state);\n }\n /**\n * @hidden\n */\n onButtonClick(ev) {\n this.focusedIndex = this.buttonElements.findIndex(be => be === ev.target || be.contains(ev.target));\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !(this.disabled || this.buttonElements.length === 0);\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n this.focusedIndex = getIndexOfFocused(prevKey, nextKey, this.buttonElements)(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n const peekAtIndex = makePeeker(this.buttonElements);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(prevKey, nextKey, peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n getButtonGroup() {\n return this.overflows ? this.overflowButtonGroup : this.toolbarButtonGroup;\n }\n focusButton(index, ev) {\n // Guard against focusing twice on mousedown.\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.buttonElements[index].focus();\n }\n }\n}\nToolBarButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonGroupComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonGroupComponent, selector: \"kendo-toolbar-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", look: \"look\" }, providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }], queries: [{ propertyName: \"buttonComponents\", predicate: i0.forwardRef(function () { return ToolBarButtonComponent; }) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonGroup\", first: true, predicate: [\"toolbarButtonGroup\"], descendants: true }, { propertyName: \"overflowButtonGroup\", first: true, predicate: [\"overflowButtonGroup\"], descendants: true }], exportAs: [\"kendoToolBarButtonGroup\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n \n {{ button.overflowOptions.text }}\n \n \n \n `, isInline: true, components: [{ type: i1$1.ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"tabIndex\"], outputs: [\"navigate\"], exportAs: [\"kendoButtonGroup\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButtonGroup',\n providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }],\n selector: 'kendo-toolbar-buttongroup',\n template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n \n {{ button.overflowOptions.text }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], selection: [{\n type: Input\n }], width: [{\n type: Input\n }], look: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], buttonComponents: [{\n type: ContentChildren,\n args: [forwardRef(() => ToolBarButtonComponent)]\n }], toolbarButtonGroup: [{\n type: ViewChild,\n args: ['toolbarButtonGroup', { static: false }]\n }], overflowButtonGroup: [{\n type: ViewChild,\n args: ['overflowButtonGroup', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolBarButtonListComponent {\n constructor() {\n this.disabled = false;\n this.fillMode = 'solid';\n this.themeColor = 'base';\n this.itemClick = new EventEmitter();\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n onClick(item, index) {\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n}\nToolBarButtonListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: { data: \"data\", textField: \"textField\", disabled: \"disabled\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { itemClick: \"itemClick\" }, viewQueries: [{ propertyName: \"buttons\", predicate: [\"button\"], descendants: true }], ngImport: i0, template: `\n \n {{ getText(item) }}\n \n `, isInline: true, directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-toolbar-buttonlist',\n template: `\n \n {{ getText(item) }}\n \n `\n }]\n }], propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], buttons: [{\n type: ViewChildren,\n args: ['button']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar DropDownButton for Angular]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\nclass ToolBarDropDownButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Defines the location of the button text that will be displayed.\n */\n this.showText = 'both';\n /**\n * Defines the location of the button icon that will be displayed.\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the user clicks a DropDownButton item.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines an icon that will be rendered next to the button text.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n set primary(primary) {\n this.themeColor = primary ? 'primary' : 'base';\n }\n /**\n * Sets the data of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n get overflowButtons() {\n return [...this.overflowDropDownButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowDropDownButtonButtonList.buttons\n .toArray()\n .findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarDropDownButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n}\nToolBarDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarDropDownButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarDropDownButtonComponent, selector: \"kendo-toolbar-dropdownbutton\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", look: \"look\", primary: \"primary\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", textField: \"textField\", disabled: \"disabled\", data: \"data\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"dropdownButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"dropDownButtonComponent\", first: true, predicate: DropDownButtonComponent, descendants: true }, { propertyName: \"toolbarDropDownButton\", first: true, predicate: [\"toolbarDropDownButton\"], descendants: true }, { propertyName: \"overflowDropDownButtonButtonList\", first: true, predicate: [\"overflowDropDownButtonButtonList\"], descendants: true }], exportAs: [\"kendoToolBarDropDownButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: [\"icon\", \"iconClass\", \"imageUrl\", \"popupSettings\", \"textField\", \"disabled\", \"data\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"buttonClass\", \"tabIndex\"], outputs: [\"itemClick\", \"open\", \"close\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownButton\"] }, { type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: [\"data\", \"textField\", \"disabled\", \"fillMode\", \"themeColor\"], outputs: [\"itemClick\"] }], directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarDropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarDropDownButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }],\n selector: 'kendo-toolbar-dropdownbutton',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], look: [{\n type: Input\n }], primary: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dropdownButton: [{\n type: ViewChild,\n args: ['dropdownButton', { read: ElementRef, static: true }]\n }], dropDownButtonComponent: [{\n type: ViewChild,\n args: [DropDownButtonComponent, { static: false }]\n }], toolbarDropDownButton: [{\n type: ViewChild,\n args: ['toolbarDropDownButton', { static: false }]\n }], overflowDropDownButtonButtonList: [{\n type: ViewChild,\n args: ['overflowDropDownButtonButtonList', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar SplitButton for Angular]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\nclass ToolBarSplitButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'arrow-s';\n /**\n * Configures the text field of the button-list popup.\n */\n this.textField = 'text';\n /**\n * Fires each time the user clicks the main button.\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks the drop-down list.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines the icon that will be rendered next to the button text\n * ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(value) {\n this._popupSettings = value;\n }\n get popupSettings() {\n if (!this._popupSettings) {\n this._popupSettings = { animate: true, popupClass: '' };\n }\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * Sets the data of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n get overflowButtons() {\n return [this.overflowSplitButton, ...this.overflowSplitButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowButtons.findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n onMainButtonClick(ev) {\n this.buttonClick.emit(ev);\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarSplitButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown' || ev.type === 'click') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n}\nToolBarSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarSplitButtonComponent, selector: \"kendo-toolbar-splitbutton\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", popupSettings: \"popupSettings\", fillMode: \"fillMode\", themeColor: \"themeColor\", look: \"look\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\", textField: \"textField\", data: \"data\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarSplitButton\", first: true, predicate: [\"toolbarSplitButton\"], descendants: true }, { propertyName: \"overflowSplitButton\", first: true, predicate: [\"overflowSplitButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowSplitButtonButtonList\", first: true, predicate: [\"overflowSplitButtonButtonList\"], descendants: true }], exportAs: [\"kendoToolBarSplitButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `, isInline: true, components: [{ type: i1$1.SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: [\"text\", \"icon\", \"iconClass\", \"type\", \"imageUrl\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"disabled\", \"popupSettings\", \"tabIndex\", \"textField\", \"data\", \"buttonClass\", \"arrowButtonClass\", \"arrowButtonIcon\"], outputs: [\"buttonClick\", \"itemClick\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendoSplitButton\"] }, { type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: [\"data\", \"textField\", \"disabled\", \"fillMode\", \"themeColor\"], outputs: [\"itemClick\"] }], directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSplitButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }],\n selector: 'kendo-toolbar-splitbutton',\n template: `\n \n \n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], look: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarSplitButton: [{\n type: ViewChild,\n args: ['toolbarSplitButton', { static: false }]\n }], overflowSplitButton: [{\n type: ViewChild,\n args: ['overflowSplitButton', { read: ElementRef, static: false }]\n }], overflowSplitButtonButtonList: [{\n type: ViewChild,\n args: ['overflowSplitButtonButtonList', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Separator for Angular]({% slug controltypes_toolbar %}#toc-separators).\n */\nclass ToolBarSeparatorComponent extends ToolBarToolComponent {\n constructor() {\n super();\n }\n /**\n * @hidden\n */\n canFocus() {\n return false;\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n focus() {\n /* noop */\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n handleKey() {\n return false;\n }\n ngAfterViewInit() {\n if (!this.popupTemplate) {\n this.popupTemplate = this.toolbarTemplate;\n }\n }\n}\nToolBarSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarSeparatorComponent, selector: \"kendo-toolbar-separator\", providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"separator\", first: true, predicate: [\"separator\"], descendants: true }], exportAs: [\"kendoToolBarSeparator\"], usesInheritance: true, ngImport: i0, template: `\n \n
    \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSeparatorComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSeparator',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }],\n selector: 'kendo-toolbar-separator',\n template: `\n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], separator: [{\n type: ViewChild,\n args: ['separator', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ToolbarCustomMessagesComponent extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nToolbarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarCustomMessagesComponent, selector: \"kendo-toolbar-messages\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-toolbar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst TOOLBAR_TOOLS = [\n ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent\n];\nconst TOOLBAR_COMMON = [\n ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the ToolBar component.\n *\n * The package exports:\n * - `ToolBarComponent`—The ToolBarComponent class.\n * - `ToolBarToolComponent`—The base Tool component class.\n * - `ToolBarButtonComponent`—The Button Tool component class.\n * - `ToolBarButtonGroupComponent`—The ButtonGroup Tool component class.\n * - `ToolBarDropDownButtonComponent`—The DropDownButton Tool component class.\n * - `ToolBarSplitButtonComponent`—The SplitButton Tool component class.\n * - `ToolBarSeparatorComponent`—The Separator Tool component class.\n */\nclass ToolBarModule {\n}\nToolBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToolBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, declarations: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent, ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective], imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule], exports: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective] });\nToolBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, imports: [[CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToolBarComponent, TOOLBAR_TOOLS, TOOLBAR_COMMON],\n exports: [ToolBarComponent, TOOLBAR_TOOLS, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective],\n imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedToolbarMessagesDirective, RefreshService, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarComponent, ToolBarDropDownButtonComponent, ToolBarModule, ToolBarSeparatorComponent, ToolBarSplitButtonComponent, ToolBarToolComponent, ToolbarCustomMessagesComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, forwardRef, Directive, Input, EventEmitter, Component, HostBinding, Output, isDevMode, Optional, Inject, ContentChild, ElementRef, NgModule } from '@angular/core';\nimport { filter, debounceTime, take, auditTime } from 'rxjs/operators';\nimport { fromEvent, Subscription, BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { PreventableEvent, isDocumentAvailable, closest, hasObservers } from '@progress/kendo-angular-common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-tooltip',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654094943,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Obsolete. Provide the TooltipSettings class instead.\n *\n * @hidden\n */\nconst TOOLTIP_SETTINGS = new InjectionToken('kendo-ui-tooltip-settings');\n/**\n * Provides a global configuration for the Kendo UI Tooltip. Once injected through\n * the `AppComponent` constructor, the configuration properties can be overridden.\n *\n * @example\n * ```ts-no-run\n * import { TooltipSettings } from '@progress/kendo-angular-tooltip';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    `,\n * providers: [{\n * provide: TooltipSettings,\n * useFactory: (): TooltipSettings => ({\n * // Override default values of tooltips if wanted\n * position: 'right'\n * })\n * }]\n * })\n * export class AppComponent { }\n * ```\n */\nclass TooltipSettings {\n /**\n * @hidden\n */\n constructor() { }\n}\nTooltipSettings.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipSettings, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipSettings.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipSettings });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipSettings, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nfunction align(position, offset) {\n let anchorAlign = {};\n let popupAlign = {};\n let popupMargin = {};\n switch (position) {\n case 'top':\n anchorAlign = { horizontal: 'center', vertical: 'top' };\n popupAlign = { horizontal: 'center', vertical: 'bottom' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'bottom':\n anchorAlign = { horizontal: 'center', vertical: 'bottom' };\n popupAlign = { horizontal: 'center', vertical: 'top' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'right':\n anchorAlign = { horizontal: 'right', vertical: 'center' };\n popupAlign = { horizontal: 'left', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n case 'left':\n anchorAlign = { horizontal: 'left', vertical: 'center' };\n popupAlign = { horizontal: 'right', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n default: break;\n }\n return {\n anchorAlign,\n popupAlign,\n popupMargin\n };\n}\n/**\n * @hidden\n */\nfunction collision(inputcollision, position) {\n if (inputcollision) {\n return inputcollision;\n }\n if (position === 'top' || position === 'bottom') {\n return { horizontal: 'fit', vertical: 'flip' };\n }\n return { horizontal: 'flip', vertical: 'fit' };\n}\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nfunction closestBySelector(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ?\n (el, sel) => el.matches(sel)\n : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nfunction contains(container, child) {\n if (!container) {\n return false;\n }\n if (isDocumentNode(container)) {\n return false;\n }\n if (container.contains) {\n return container.contains(child);\n }\n if (container.compareDocumentPosition) {\n return !!(container.compareDocumentPosition(child) & Node.DOCUMENT_POSITION_CONTAINED_BY);\n }\n}\n/**\n * @hidden\n */\nconst hasParent = (node, parent) => {\n while (node && node !== parent) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nfunction getCenterOffset(item, dir, size) {\n const rect = item.getBoundingClientRect();\n return rect[dir] + (rect[size] / 2);\n}\n/**\n * @hidden\n */\nfunction containsItem(collection, item) {\n return collection.indexOf(item) !== -1;\n}\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoTooltipLocalizedMessages]\", inputs: { closeTitle: \"closeTitle\" }, providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `[kendoTooltipLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { closeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TooltipContentComponent {\n constructor(content, localizationService) {\n this.content = content;\n this.localizationService = localizationService;\n this.close = new EventEmitter();\n this.tooltipWidth = null;\n this.tooltipHeight = null;\n this.callout = true;\n this.calloutStyles = (position, calloutSize, isFlip) => {\n const styles = {};\n const isVertical = position === 'top' || position === 'bottom';\n const flipDeg = '180deg';\n const zeroDeg = '0deg';\n if (!isFlip) {\n styles.transform = isVertical ? `rotateX(${zeroDeg})` : `rotateY(${zeroDeg})`;\n return styles;\n }\n if (position === 'top') {\n styles.bottom = 'unset';\n }\n else if (position === 'bottom') {\n styles.top = 'unset';\n }\n else if (position === 'left') {\n styles.right = 'unset';\n }\n else if (position === 'right') {\n styles.left = 'unset';\n }\n styles[position] = `${-calloutSize}px`;\n styles.transform = isVertical ? `rotateX(${flipDeg})` : `rotateY(${flipDeg})`;\n return styles;\n };\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get cssClasses() {\n return 'k-widget k-tooltip';\n }\n get className() {\n return this.closable;\n }\n get cssPosition() {\n return 'relative';\n }\n ngOnInit() {\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n calloutPositionClass() {\n return {\n 'top': 'k-callout-s',\n 'left': 'k-callout-e',\n 'bottom': 'k-callout-n',\n 'right': 'k-callout-w'\n }[this.position];\n }\n onCloseClick(event) {\n event.preventDefault();\n this.close.emit();\n }\n updateCalloutPosition(position, isFlip) {\n if (!this.callout) {\n return;\n }\n const callout = this.content.nativeElement.querySelector('.k-callout');\n const isVertical = position === 'top' || position === 'bottom';\n const size = isVertical ? 'width' : 'height';\n const dir = isVertical ? 'left' : 'top';\n const offsetProperty = isVertical ? 'marginLeft' : 'marginTop';\n const calloutSize = callout.getBoundingClientRect()[size];\n const anchorCenter = getCenterOffset(this.anchor.nativeElement, dir, size);\n const contentCenter = getCenterOffset(this.content.nativeElement, dir, size);\n const diff = Math.abs(contentCenter - anchorCenter);\n if (diff > 1 || diff === 0 || Math.round(diff) === 0) {\n const newMargin = contentCenter - anchorCenter + (calloutSize / 2);\n callout.style[offsetProperty] = `${-newMargin}px`;\n }\n const calloutStyles = this.calloutStyles(position, calloutSize, isFlip);\n Object.keys(calloutStyles).forEach((style) => {\n callout.style[style] = calloutStyles[style];\n });\n }\n}\nTooltipContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipContentComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTooltipContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipContentComponent, selector: \"kendo-tooltip\", inputs: { tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", titleTemplate: \"titleTemplate\", anchor: \"anchor\", closable: \"closable\", templateRef: \"templateRef\", templateString: \"templateString\" }, outputs: { close: \"close\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class\": \"this.cssClasses\", \"class.k-tooltip-closable\": \"this.className\", \"style.position\": \"this.cssPosition\", \"style.width.px\": \"this.tooltipWidth\", \"style.height.px\": \"this.tooltipHeight\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ], ngImport: i0, template: `\n \n \n\n
    \n
    \n \n \n
    \n\n \n \n \n {{ templateString }}\n \n
    \n\n
    \n \n
    \n\n
    \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoTooltipLocalizedMessages]\", inputs: [\"closeTitle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tooltip',\n template: `\n \n \n\n
    \n
    \n \n \n
    \n\n \n \n \n {{ templateString }}\n \n
    \n\n
    \n \n
    \n\n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], close: [{\n type: Output\n }], cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], className: [{\n type: HostBinding,\n args: ['class.k-tooltip-closable']\n }], cssPosition: [{\n type: HostBinding,\n args: ['style.position']\n }], tooltipWidth: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: Input\n }], tooltipHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }], titleTemplate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], closable: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI Tooltip directive for Angular]({% slug overview_tooltip %}).\n * Used to display additional information that is related to an element.\n *\n * @example\n * ```ts-no-run\n *
    \n * foo\n *
    \n * ```\n */\nclass TooltipDirective {\n constructor(tooltipWrapper, ngZone, renderer, popupService, settings, legacySettings) {\n this.tooltipWrapper = tooltipWrapper;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.popupService = popupService;\n /**\n * Specifies a selector for elements within a container which will display a tooltip\n * ([see example]({% slug anchorelements_tooltip %})). The possible values include any\n * DOM `selector`. The default value is `[title]`.\n */\n this.filter = '[title]';\n /**\n * Specifies the position of the Tooltip that is relative to the\n * anchor element ([see example]({% slug positioning_tooltip %})).\n *\n * The possible values are:\n * * `top` (default)\n * * `bottom`\n * * `left`\n * * `right`\n */\n this.position = 'top';\n /**\n * Specifies the delay in milliseconds before the Tooltip is shown.\n * * `100` (default) milliseconds.\n */\n this.showAfter = 100;\n /**\n * Specifies if the Тooltip will display a callout arrow.\n *\n * The possible values are:\n * * `true` (default)\n * * `false`\n */\n this.callout = true;\n /**\n * Specifies if the Тooltip will display a **Close** button\n * ([see example]({% slug closable_tooltip %})).\n *\n * The possible values are:\n * * `true`\n * * `false`\n */\n this.closable = false;\n /**\n * Specifies the offset in pixels between the Tooltip and the anchor. Defaults to `6` pixels.\n * If the `callout` property is set to `true`, the offset is rendered from the callout arrow.\n * If the `callout` property is set to `false`, the offset is rendered from the content of the Tooltip.\n */\n this.offset = 6;\n this.anchor = null;\n this.validPositions = ['top', 'bottom', 'right', 'left'];\n this.validShowOptions = ['hover', 'click', 'none'];\n validatePackage(packageMetadata);\n Object.assign(this, settings, legacySettings);\n this.ngZone.runOutsideAngular(() => {\n const wrapper = this.tooltipWrapper.nativeElement;\n this.anchorTitleSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(filter(() => this.filter !== ''))\n .subscribe((e) => {\n const filterElement = closestBySelector(e.target, this.filter);\n if (filterElement) {\n this.hideElementTitle({ nativeElement: filterElement });\n }\n });\n this.mouseOverSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(debounceTime(100), filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseOver(e));\n this.mouseOutSubscription = fromEvent(wrapper, 'mouseout')\n .subscribe(e => this.onMouseOut(e));\n });\n }\n /**\n * Sets the content of the Tooltip as a template reference\n * ([see example]({% slug templates_tooltip %})).\n */\n set tooltipTemplate(value) {\n this.template = value;\n }\n get tooltipTemplate() {\n return this.template;\n }\n /**\n * Shows the Tooltip.\n * @param anchor— ElementRef|Element.\n * Specifies the element that will be used as an anchor. The Tooltip opens relative to that element.\n */\n show(anchor) {\n if (this.popupRef) {\n return;\n }\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n this.anchor = anchor;\n if (this.showOn === 'hover') {\n if (this.popupRef) {\n return;\n }\n clearTimeout(this.showTimeout);\n this.showTimeout = window.setTimeout(() => this.showContent(this.anchor), this.showAfter);\n }\n else {\n this.hideElementTitle(this.anchor);\n this.showContent(this.anchor);\n }\n }\n /**\n * Hides the Tooltip.\n */\n hide() {\n clearTimeout(this.showTimeout);\n const anchor = this.anchor && this.anchor.nativeElement;\n if (anchor && anchor.getAttribute('data-title')) {\n if (!anchor.getAttribute('title') && anchor.hasAttribute('title')) {\n anchor.setAttribute('title', anchor.getAttribute('data-title'));\n }\n anchor.setAttribute('data-title', '');\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n if (this.closeClickSubscription) {\n this.closeClickSubscription.unsubscribe();\n }\n this.closePopup();\n }\n /**\n * Toggle visibility of the Tooltip.\n *\n * @param anchor— ElementRef|Element. Specifies the element that will be used as an anchor.\n * @param show— Optional. Boolean. Specifies if the Tooltip will be rendered.\n */\n toggle(anchor, show) {\n const previousAnchor = this.anchor && this.anchor.nativeElement;\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n if (previousAnchor !== anchor.nativeElement) {\n this.hide();\n }\n if (previousAnchor === anchor.nativeElement && this.showOn === 'click') {\n this.hide();\n }\n if (typeof show === 'undefined') {\n show = !this.popupRef;\n }\n if (show) {\n this.show(anchor);\n }\n else {\n this.hide();\n }\n }\n ngOnInit() {\n if (this.showOn === undefined) {\n this.showOn = 'hover';\n }\n this.verifyProperties();\n }\n ngOnChanges(changes) {\n if (changes.showOn) {\n this.subscribeClick();\n }\n }\n ngAfterViewChecked() {\n if (!this.popupRef) {\n return;\n }\n if (this.anchor &&\n !hasParent(this.anchor.nativeElement || this.anchor, this.tooltipWrapper.nativeElement)) {\n this.anchor = null;\n this.hide();\n }\n }\n ngOnDestroy() {\n this.hide();\n this.template = null;\n this.anchorTitleSubscription.unsubscribe();\n this.mouseOverSubscription.unsubscribe();\n this.mouseOutSubscription.unsubscribe();\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n }\n showContent(anchorRef) {\n if (!anchorRef.nativeElement.getAttribute('data-title') && !this.template) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(anchorRef);\n this.bindContent(this.popupRef.content, anchorRef);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n bindContent(contentComponent, anchorRef) {\n const content = contentComponent.instance;\n this.closeClickSubscription = content.close\n .subscribe(() => {\n this.hide();\n });\n if (!this.template) {\n content.templateString = this.anchor.nativeElement.getAttribute('data-title');\n }\n else {\n content.templateRef = this.template;\n }\n if (this.titleTemplate) {\n content.titleTemplate = this.titleTemplate;\n }\n content.closeTitle = this.closeTitle;\n content.anchor = anchorRef;\n content.callout = this.callout;\n content.closable = this.closable;\n content.position = this.position;\n content.tooltipWidth = this.tooltipWidth;\n content.tooltipHeight = this.tooltipHeight;\n this.popupRef.content.changeDetectorRef.detectChanges();\n }\n hideElementTitle(elementRef) {\n const element = elementRef.nativeElement;\n if (element.getAttribute('title')) {\n element.setAttribute('data-title', element.getAttribute('title'));\n element.setAttribute('title', '');\n }\n }\n openPopup(anchorRef) {\n const alignSettings = align(this.position, this.offset);\n const anchorAlign = alignSettings.anchorAlign;\n const popupAlign = alignSettings.popupAlign;\n const popupMargin = alignSettings.popupMargin;\n this.popupRef = this.popupService.open({\n anchor: anchorRef,\n anchorAlign,\n animate: false,\n content: TooltipContentComponent,\n collision: collision(this.collision, this.position),\n margin: popupMargin,\n popupAlign,\n popupClass: 'k-popup-transparent'\n });\n this.renderer.addClass(this.popupRef.popupElement, 'k-tooltip-wrapper');\n if (this.tooltipClass) {\n this.renderer.addClass(this.popupRef.popupElement, this.tooltipClass);\n }\n const popupInstance = this.popupRef.content.instance;\n if (popupInstance.callout) {\n this.popupPositionChangeSubscription = this.popupRef.popupPositionChange\n .subscribe(({ flip }) => {\n const isFlip = flip.horizontal === true || flip.vertical === true;\n popupInstance.updateCalloutPosition(this.position, isFlip);\n });\n }\n if (this.showOn === 'hover') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.popupMouseOutSubscription = fromEvent(popup, 'mouseout')\n .subscribe((e) => this.onMouseOut(e));\n });\n }\n }\n closePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n }\n subscribeClick() {\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.showOn === 'click') {\n this.mouseClickSubscription = fromEvent(document, 'click')\n .pipe(filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseClick(e, this.tooltipWrapper.nativeElement));\n }\n }\n onMouseClick(e, wrapper) {\n const target = e.target;\n const filterElement = closestBySelector(target, this.filter);\n const popup = this.popupRef && this.popupRef.popupElement;\n if (popup) {\n if (popup.contains(target)) {\n return;\n }\n if (this.closable) {\n return;\n }\n }\n if (wrapper.contains(target) && filterElement) {\n this.toggle(filterElement, true);\n }\n else if (popup) {\n this.hide();\n }\n }\n onMouseOver(e) {\n const filterElement = closestBySelector(e.target, this.filter);\n if (this.showOn !== 'hover') {\n return;\n }\n if (filterElement) {\n this.toggle(filterElement, true);\n }\n }\n onMouseOut(e) {\n if (this.showOn !== 'hover') {\n return;\n }\n if (this.closable) {\n return;\n }\n const popup = this.popupRef && this.popupRef.popupElement;\n const relatedTarget = e.relatedTarget;\n if (relatedTarget && this.anchor && contains(this.anchor.nativeElement, relatedTarget)) {\n return;\n }\n if (relatedTarget && contains(popup, relatedTarget)) {\n return;\n }\n this.hide();\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n if (!containsItem(this.validPositions, this.position)) {\n throw new Error(`Invalid value provided for position property.The available options are 'top', 'bottom', 'left', or 'right'.`);\n }\n if (!containsItem(this.validShowOptions, this.showOn)) {\n throw new Error(`Invalid value provided for showOn property.The available options are 'hover' or 'none'.`);\n }\n }\n}\nTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1$1.PopupService }, { token: TooltipSettings, optional: true }, { token: TOOLTIP_SETTINGS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipDirective, selector: \"[kendoTooltip]\", inputs: { filter: \"filter\", position: \"position\", titleTemplate: \"titleTemplate\", showOn: \"showOn\", showAfter: \"showAfter\", callout: \"callout\", closable: \"closable\", offset: \"offset\", tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", tooltipClass: \"tooltipClass\", collision: \"collision\", closeTitle: \"closeTitle\", tooltipTemplate: \"tooltipTemplate\" }, exportAs: [\"kendoTooltip\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTooltip]',\n exportAs: 'kendoTooltip'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1$1.PopupService }, { type: TooltipSettings, decorators: [{\n type: Optional\n }] }, { type: TooltipSettings, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOOLTIP_SETTINGS]\n }] }]; }, propDecorators: { filter: [{\n type: Input\n }], position: [{\n type: Input\n }], titleTemplate: [{\n type: Input\n }], showOn: [{\n type: Input\n }], showAfter: [{\n type: Input\n }], callout: [{\n type: Input\n }], closable: [{\n type: Input\n }], offset: [{\n type: Input\n }], tooltipWidth: [{\n type: Input\n }], tooltipHeight: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], collision: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst ERRORS = {\n popover: `Invalid value provided for the 'popover' property. The accepted data types are 'PopoverComponent' or 'PopoverFn'.`,\n templateData: `templateData must be a function, but received`,\n showOn: `Invalid value provided for the 'showOn' property. The available options are 'click', 'hover', 'focus' or 'none'.`\n};\n\n/**\n * Represents a template that defines the content of the Popover title.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverTitleTemplate` directive inside the `` tag.\n */\nclass PopoverTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverTitleTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverTitleTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverTitleTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverTitleTemplateDirective, selector: \"[kendoPopoverTitleTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverTitleTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverTitleTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Popover body.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverBodyTemplate` directive inside the `` tag.\n */\nclass PopoverBodyTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverBodyTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverBodyTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverBodyTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverBodyTemplateDirective, selector: \"[kendoPopoverBodyTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverBodyTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverBodyTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Popover actions.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverActionsTemplate` directive inside the `` tag.\n */\nclass PopoverActionsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverActionsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverActionsTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverActionsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverActionsTemplateDirective, selector: \"[kendoPopoverActionsTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverActionsTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverActionsTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the [Kendo UI Popover component for Angular]({% slug overview_popover %}).\n * Used to display additional information that is related to a target element.\n *\n * @example\n * ```ts-no-run\n * \n * Foo Title\n * Foo Body\n * Foo Actions\n * \n * ```\n */\nclass PopoverComponent {\n constructor(localization) {\n this.localization = localization;\n /**\n * Specifies the position of the Popover in relation to its anchor element. [See example]({% slug positioning_popover %})\n *\n * The possible options are:\n * `top`\n * `bottom`\n * `right` (Default)\n * `left`\n */\n this.position = 'right';\n /**\n * Determines whether a callout will be rendered along the Popover. [See example]({% slug callout_popover %})\n *\n * @default true\n */\n this.callout = true;\n /**\n * Enables and configures the Popover animation. [See example]({% slug animations_popover %})\n *\n * The possible options are:\n *\n * * `boolean`—Enables the default animation\n * * `PopoverAnimation`—A configuration object which allows setting the `direction`, `duration` and `type` of the animation.\n *\n * @default false\n */\n this.animation = false;\n /**\n * @hidden\n * Determines the visibility of the Popover.\n */\n this.visible = false;\n /**\n * Fires before the Popover is about to be shown ([see example]({% slug events_popover %})).\n * The event is preventable. If canceled, the Popover will not be displayed. [See example]({% slug events_popover %})\n */\n this.show = new EventEmitter();\n /**\n * Fires after the Popover has been shown and the animation has ended. [See example]({% slug events_popover %})\n */\n this.shown = new EventEmitter();\n /**\n * Fires when the Popover is about to be hidden ([see example]({% slug events_popover %})).\n * The event is preventable. If canceled, the Popover will remain visible.\n */\n this.hide = new EventEmitter();\n /**\n * Fires after the Popover has been hidden and the animation has ended. [See example]({% slug events_popover %})\n */\n this.hidden = new EventEmitter();\n /**\n * @hidden\n */\n this._width = 'auto';\n /**\n * @hidden\n */\n this._height = 'auto';\n this._offset = 6;\n this.subs = new Subscription();\n /**\n * @hidden\n */\n this._templateData = () => null;\n validatePackage(packageMetadata);\n }\n /**\n * Specifies the distance from the Popover to its anchor element in pixels.\n *\n * @default `6`\n */\n set offset(value) {\n this._offset = value;\n }\n get offset() {\n const calloutBuffer = 14;\n return this.callout\n ? calloutBuffer + this._offset\n : this._offset;\n }\n /**\n * Determines the width of the popover. Numeric values are treated as pixels.\n * @default 'auto'\n */\n set width(value) {\n this._width = typeof value === 'number' ? `${value}px` : value;\n }\n get width() {\n return this._width;\n }\n /**\n * Determines the height of the popover. Numeric values are treated as pixels.\n * @default 'auto'\n */\n set height(value) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n get height() {\n return this._height;\n }\n /**\n * Defines a callback function which returns custom data passed to the Popover templates.\n * It exposes the current anchor element as an argument. [See example]({% slug templates_popover %}#toc-popoverdatacallback)\n */\n set templateData(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`${ERRORS.templateData} ${JSON.stringify(fn)}.`);\n }\n this._templateData = fn;\n }\n get templateData() {\n return this._templateData;\n }\n /**\n * @hidden\n */\n get isHidden() {\n return !this.visible;\n }\n /**\n * @hidden\n */\n get hasAttributeHidden() {\n return !this.visible;\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n /**\n * @hidden\n */\n getCalloutPosition() {\n switch (this.position) {\n case 'top': return { 'k-callout-s': true };\n case 'bottom': return { 'k-callout-n': true };\n case 'left': return { 'k-callout-e': true };\n case 'right': return { 'k-callout-w': true };\n default: return { 'k-callout-s': true };\n }\n }\n}\nPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverComponent, selector: \"kendo-popover\", inputs: { position: \"position\", offset: \"offset\", width: \"width\", height: \"height\", title: \"title\", subtitle: \"subtitle\", body: \"body\", callout: \"callout\", animation: \"animation\", templateData: \"templateData\" }, outputs: { show: \"show\", shown: \"shown\", hide: \"hide\", hidden: \"hidden\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-hidden\": \"this.isHidden\", \"attr.aria-hidden\": \"this.hasAttributeHidden\", \"style.width\": \"this._width\", \"style.height\": \"this._height\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.popover'\n }\n ], queries: [{ propertyName: \"titleTemplate\", first: true, predicate: PopoverTitleTemplateDirective, descendants: true }, { propertyName: \"bodyTemplate\", first: true, predicate: PopoverBodyTemplateDirective, descendants: true }, { propertyName: \"actionsTemplate\", first: true, predicate: PopoverActionsTemplateDirective, descendants: true }], ngImport: i0, template: `\n
    \n
    \n\n
    \n \n \n \n {{ title }}\n \n
    \n\n
    \n \n \n \n {{ body }}\n \n
    \n\n
    \n \n \n
    \n
    \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-popover',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.popover'\n }\n ],\n template: `\n
    \n
    \n\n
    \n \n \n \n {{ title }}\n \n
    \n\n
    \n \n \n \n {{ body }}\n \n
    \n\n
    \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { position: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], body: [{\n type: Input\n }], callout: [{\n type: Input\n }], animation: [{\n type: Input\n }], templateData: [{\n type: Input\n }], isHidden: [{\n type: HostBinding,\n args: ['class.k-hidden']\n }], hasAttributeHidden: [{\n type: HostBinding,\n args: ['attr.aria-hidden']\n }], show: [{\n type: Output\n }], shown: [{\n type: Output\n }], hide: [{\n type: Output\n }], hidden: [{\n type: Output\n }], titleTemplate: [{\n type: ContentChild,\n args: [PopoverTitleTemplateDirective, { static: false }]\n }], bodyTemplate: [{\n type: ContentChild,\n args: [PopoverBodyTemplateDirective, { static: false }]\n }], actionsTemplate: [{\n type: ContentChild,\n args: [PopoverActionsTemplateDirective, { static: false }]\n }], _width: [{\n type: HostBinding,\n args: ['style.width']\n }], _height: [{\n type: HostBinding,\n args: ['style.height']\n }] } });\n\n/**\n * Arguments for the `show` event. The `show` event fires when a popover is about\n * to be opened. If you cancel the event, the opening is prevented.\n */\nclass PopoverShowEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `show` event.\n * @param anchor - The host element related to the popover.\n */\n constructor(anchor) {\n super();\n this.anchor = anchor;\n }\n}\n/**\n * Arguments for the `hide` event. The `hide` event fires when a popover is about\n * to be closed. If you cancel the event, the popover stays open.\n */\nclass PopoverHideEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `hide` event.\n * @param anchor - The host element related to the popover.\n * @param popover - The popover element.\n */\n constructor(anchor, popover) {\n super();\n this.anchor = anchor;\n this.popover = popover;\n }\n}\n/**\n * Arguments for the `shown` event. The `shown` event fires after the popover has opened and its opening animation has finished.\n */\nclass PopoverShownEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `shown` event.\n * @param anchor - The host element related to the popover.\n * @param popover - The popover element.\n */\n constructor(anchor, popover) {\n this.anchor = anchor;\n this.popover = popover;\n }\n}\n/**\n * Arguments for the `hidden` event. The `hidden` event fires after the popover has closed and its closing animation has finished.\n */\nclass PopoverHiddenEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `hidden` event.\n * @param anchor - The host element related to the popover.\n */\n constructor(anchor) {\n this.anchor = anchor;\n }\n}\n\nconst validShowOptions = ['hover', 'click', 'none', 'focus'];\n/**\n * @hidden\n */\nclass PopoverDirectivesBase {\n constructor(ngZone, popupService, renderer) {\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n this.subs = new Subscription();\n this._showOn = 'click';\n }\n /**\n * Specifies the popover instance that will be rendered.\n * Accepts a [`PopoverComponent`]({% slug api_tooltip_popovercomponent %}) instance or\n * a [`PopoverFn`]({% slug api_tooltip_popoverfn %}) callback which returns a [`PopoverComponent`]({% slug api_tooltip_popovercomponent %}) instance\n * depending on the current anchor element.\n *\n * [See example]({% slug templates_popover %}#toc-popovercallback)\n */\n set popover(value) {\n if (value instanceof PopoverComponent || typeof value === `function`) {\n this._popover = value;\n }\n else {\n if (isDevMode) {\n throw new Error(ERRORS.popover);\n }\n }\n }\n get popover() {\n return this._popover;\n }\n /**\n * The event on which the Popover will be shown\n *\n * The supported values are:\n * - `click` (default) —The Popover will be shown when its `anchor` element is clicked.\n * - `hover`—The Popover will be shown when its `anchor` element is hovered.\n * - `focus`—The Popover will be shown when its `anchor` element is focused.\n * - `none`—The Popover will not be shown on user interaction. It could be rendered via the Popover API methods.\n */\n set showOn(value) {\n if (isDevMode && !containsItem(validShowOptions, value)) {\n throw new Error(ERRORS.showOn);\n }\n this._showOn = value;\n }\n get showOn() {\n return this._showOn;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n switch (this.showOn) {\n case 'hover':\n this.subscribeToEvents([{\n name: 'mouseenter', handler: this.mouseenterHandler\n }, {\n name: 'mouseleave', handler: this.mouseleaveHandler\n }]);\n break;\n case 'focus':\n this.subscribeToEvents([{\n name: 'focus', handler: this.focusHandler\n }, {\n name: 'blur', handler: this.blurHandler\n }]);\n break;\n case 'click':\n this.subscribeClick();\n break;\n default:\n break;\n }\n });\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.disposeHoverOverListener) {\n this.disposeHoverOverListener();\n }\n if (this.disposeHoverOutListener) {\n this.disposeHoverOutListener();\n }\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n if (this._focusInsideSub) {\n this._focusInsideSub.unsubscribe();\n }\n if (this._hideSub) {\n this._hideSub.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n if (this._popupOpenSub) {\n this._popupOpenSub.unsubscribe();\n }\n if (this._popupCloseSub) {\n this._popupCloseSub.unsubscribe();\n }\n }\n /**\n * Hides the Popover ([See example]({% slug programmaticcontrol_popover %})).\n */\n hide() {\n this.closePopup();\n }\n /**\n * @hidden\n */\n closePopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n if (this.disposePopupHoverOutListener) {\n this.disposePopupHoverOutListener();\n }\n if (this.disposePopupHoverInListener) {\n this.disposePopupHoverInListener();\n }\n if (this.disposePopupFocusOutListener) {\n this.disposePopupFocusOutListener();\n }\n }\n }\n /**\n * @hidden\n */\n openPopup(anchor) {\n const _anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n const popoverComp = this.popover instanceof PopoverComponent ? this.popover : this.popover(_anchor);\n const alignSettings = align(popoverComp.position, popoverComp.offset);\n const anchorAlign = alignSettings.anchorAlign;\n const popupAlign = alignSettings.popupAlign;\n const popupMargin = alignSettings.popupMargin;\n const _animation = popoverComp.animation;\n this.popupRef = this.popupService.open({\n anchor: { nativeElement: _anchor },\n animate: _animation,\n content: PopoverComponent,\n popupAlign,\n anchorAlign,\n margin: popupMargin,\n popupClass: 'k-popup-transparent',\n collision: { horizontal: 'fit', vertical: 'fit' }\n });\n this.applySettings(this.popupRef.content, popoverComp, anchor);\n this.monitorPopup();\n this.initializeCompletionEvents(popoverComp, _anchor);\n }\n /**\n * @hidden\n */\n isPrevented(anchorElement, show) {\n const popoverComp = this.popover instanceof PopoverComponent ? this.popover : this.popover(anchorElement);\n let eventArgs;\n eventArgs = this.initializeEvents(popoverComp, eventArgs, show, anchorElement);\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n monitorPopup() {\n if (this.showOn === 'hover') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.disposePopupHoverInListener = this.renderer.listen(popup, 'mouseenter', _ => {\n this.ngZone.run(_ => this._popoverService.emitPopoverState(true));\n });\n this.disposePopupHoverOutListener = this.renderer.listen(popup, 'mouseleave', _ => {\n this.ngZone.run(_ => this._popoverService.emitPopoverState(false));\n });\n });\n }\n if (this.showOn === 'focus') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.disposePopupFocusOutListener = this.renderer.listen(popup, 'focusout', (e) => {\n const isInsidePopover = closest(e.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isInsidePopover) {\n this.ngZone.run(_ => this._popoverService.emitFocusInsidePopover(false));\n }\n });\n });\n }\n }\n applySettings(contentComponent, popover, anchor) {\n const content = contentComponent.instance;\n const _anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n content.visible = true;\n content.anchor = _anchor;\n content.position = popover.position;\n content.offset = popover.offset;\n content.width = popover.width;\n content.height = popover.height;\n content.title = popover.title;\n content.body = popover.body;\n content.callout = popover.callout;\n content.animation = popover.animation;\n content.contextData = popover.templateData(_anchor);\n content.titleTemplate = popover.titleTemplate;\n content.bodyTemplate = popover.bodyTemplate;\n content.actionsTemplate = popover.actionsTemplate;\n this.popupRef.content.changeDetectorRef.detectChanges();\n }\n /**\n * @hidden\n */\n initializeEvents(popoverComp, eventArgs, show, anchorElement) {\n if (show) {\n eventArgs = new PopoverShowEvent(anchorElement);\n if (this.shouldEmitEvent(!!this.popupRef, 'show', popoverComp)) {\n this.ngZone.run(() => popoverComp.show.emit(eventArgs));\n }\n }\n else {\n eventArgs = new PopoverHideEvent(anchorElement, this.popupRef);\n if (this.shouldEmitEvent(!!this.popupRef, 'hide', popoverComp)) {\n this.ngZone.run(() => popoverComp.hide.emit(eventArgs));\n }\n }\n return eventArgs;\n }\n initializeCompletionEvents(popoverComp, _anchor) {\n if (this.shouldEmitCompletionEvents('shown', popoverComp)) {\n this.popupRef.popupOpen.subscribe(() => {\n const eventArgs = new PopoverShownEvent(_anchor, this.popupRef);\n popoverComp.shown.emit(eventArgs);\n });\n }\n if (this.shouldEmitCompletionEvents('hidden', popoverComp)) {\n this.popupRef.popupClose.subscribe(() => {\n this.ngZone.run(_ => {\n const eventArgs = new PopoverHiddenEvent(_anchor);\n popoverComp.hidden.emit(eventArgs);\n });\n });\n }\n }\n shouldEmitEvent(hasPopup, event, popoverComp) {\n if ((event === 'show' && !hasPopup && hasObservers(popoverComp[event]))\n || (event === 'hide' && hasPopup && hasObservers(popoverComp[event]))) {\n return true;\n }\n return false;\n }\n shouldEmitCompletionEvents(event, popoverComp) {\n if ((hasObservers(popoverComp[event]) && !this._popupOpenSub)\n || (hasObservers(popoverComp[event]) && !this._popupCloseSub)) {\n return true;\n }\n return false;\n }\n}\nPopoverDirectivesBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverDirectivesBase, deps: [{ token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverDirectivesBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverDirectivesBase, inputs: { popover: \"popover\", showOn: \"showOn\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverDirectivesBase, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }]; }, propDecorators: { popover: [{\n type: Input\n }], showOn: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PopoverService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this._pointerOverPopup = new BehaviorSubject(null);\n this._pointerOverAnchor = new BehaviorSubject(null);\n this._focusInsidePopover = new BehaviorSubject(null);\n this._hidePopover = new Subject();\n this.subs = new Subscription();\n this.monitor();\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n get isPopoverHovered() {\n return this._pointerOverPopup.asObservable();\n }\n emitPopoverState(isHovered) {\n this.ngZone.run(_ => this._pointerOverPopup.next(isHovered));\n }\n get isAnchorHovered() {\n return this._pointerOverAnchor.asObservable();\n }\n emitAnchorState(isHovered, anchor) {\n this._isOrigin = this.originAnchor === anchor;\n this.currentAnchor = anchor;\n if (isHovered) {\n this.originAnchor = anchor;\n }\n this.ngZone.run(_ => this._pointerOverAnchor.next(isHovered));\n }\n get isFocusInsidePopover() {\n return this._focusInsidePopover.asObservable();\n }\n emitFocusInsidePopover(isFocused) {\n this.ngZone.run(_ => this._focusInsidePopover.next(isFocused));\n this._focusInsidePopover.next(null);\n }\n get hidePopover() {\n return this._hidePopover.asObservable();\n }\n monitor() {\n this.subs.add(combineLatest(this.isPopoverHovered, this.isAnchorHovered).pipe(\n // `auditTime` is used because the `mouseleave` event is emitted before `mouseenter`\n // i.e. there is a millisecond in which the pointer leaves the first target (e.g. anchor) and hasn't reached the second one (e.g. popup)\n // resulting in both observables emitting `false`\n auditTime(20)).subscribe(val => {\n const [isPopoverHovered, isAnchorHovered] = val;\n this._hidePopover.next([isPopoverHovered, isAnchorHovered, this._isOrigin, this.currentAnchor]);\n }));\n }\n}\nPopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nPopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the [`kendoPopoverContainer`]({% slug configuration_popover %}#toc-containerdirective) directive.\n * It is used to filter and target multiple elements, which should display a popover on interaction.\n *\n * @example\n * ```ts-no-run\n *
    \n * \n * \n * \n *
    \n * ```\n */\nclass PopoverContainerDirective extends PopoverDirectivesBase {\n constructor(wrapperEl, ngZone, popupService, renderer, popoverService) {\n super(ngZone, popupService, renderer);\n this.wrapperEl = wrapperEl;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n this.popoverService = popoverService;\n this.mouseenterHandler = (anchor) => {\n this.controlVisibility(anchor, true);\n };\n this.mouseleaveHandler = (args) => {\n const anchor = args.anchor;\n if (this.isPrevented(anchor, false)) {\n return;\n }\n if (!this._hideSub) {\n this._hideSub = this.popoverService.hidePopover.subscribe((val) => {\n const [isPopoverHovered, , isOriginAnchor, currentAnchor] = val;\n if (!isPopoverHovered && !isOriginAnchor) {\n this.hide();\n if (!isOriginAnchor && currentAnchor) {\n this.show(currentAnchor);\n }\n }\n });\n }\n };\n this.focusHandler = (anchor) => {\n this.controlVisibility(anchor, true);\n };\n this.blurHandler = (args) => {\n const anchor = args.anchor;\n const event = args.domEvent;\n if (this.isPrevented(anchor, false)) {\n return;\n }\n // from anchor to popup focus check\n const isFocusInside = !!closest(event.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isFocusInside) {\n this.hide();\n }\n if (!this._focusInsideSub) {\n // inside popup focus check\n this._focusInsideSub = this.popoverService.isFocusInsidePopover.pipe(filter(v => v !== null)).subscribe((val) => {\n if (!val && !isFocusInside) {\n this.hide();\n }\n });\n }\n };\n this._popoverService = this.popoverService;\n }\n /**\n * Shows the Popover.\n *\n * @param anchor—Specifies the element that will be used as an anchor. The Popover opens relative to that element. [See example]({% slug programmaticcontrol_popover %})\n */\n show(anchor) {\n if (this.popupRef) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(anchor);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n /**\n * Toggles the visibility of the Popover. [See example]({% slug programmaticcontrol_popover %})\n *\n * @param anchor—Specifies the element that will be used as an anchor. The Popover opens relative to that element.\n */\n toggle(anchor) {\n const previousAnchor = this.popupRef && this.popupRef.content.instance.anchor;\n if (this.popupRef) {\n this.hide();\n if (previousAnchor !== anchor) {\n this.show(anchor);\n }\n }\n else {\n this.show(anchor);\n }\n }\n subscribeClick() {\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n this.disposeClickListener = this.renderer.listen(document, 'click', (e) => {\n const filterElement = closestBySelector(e.target, this.filter);\n this.clickHandler(filterElement, e);\n });\n }\n subscribeToEvents(arr) {\n const filteredElements = Array.from(document.querySelectorAll(this.filter));\n filteredElements.forEach((el) => {\n this.subs.add(this.renderer.listen(el, arr[0].name, () => {\n this.popoverService.emitAnchorState(true, el);\n arr[0].handler(el);\n }));\n this.subs.add(this.renderer.listen(el, arr[1].name, (e) => {\n this.popoverService.emitAnchorState(false, null);\n arr[1].handler({ anchor: el, domEvent: e });\n }));\n });\n }\n clickHandler(anchor, event) {\n const isInsidePopup = !!closest(event.target, (node) => node.classList && node.classList.contains('k-popup'));\n const popupRefAnchor = this.popupRef && this.popupRef.content.instance.anchor;\n let isOriginAnchor = !!closest(event.target, (node) => node === (popupRefAnchor ? popupRefAnchor : anchor));\n if (this.showOn !== 'click' || isInsidePopup || (this.popupRef && isOriginAnchor)) {\n return;\n }\n if (!anchor && this.popupRef) {\n this.controlVisibility(anchor, false);\n return;\n }\n if (isOriginAnchor) {\n this.controlVisibility(anchor, true);\n }\n else if (this.popupRef) {\n this.controlVisibility(anchor, false);\n this.controlVisibility(anchor, true);\n }\n }\n controlVisibility(anchor, show) {\n if (this.isPrevented(anchor, show)) {\n return;\n }\n if (show) {\n this.show(anchor);\n }\n else {\n this.hide();\n }\n }\n}\nPopoverContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverContainerDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }, { token: PopoverService }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverContainerDirective, selector: \"[kendoPopoverContainer]\", inputs: { filter: \"filter\" }, providers: [PopoverService], exportAs: [\"kendoPopoverContainer\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverContainer]',\n exportAs: 'kendoPopoverContainer',\n providers: [PopoverService]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }, { type: PopoverService }]; }, propDecorators: { filter: [{\n type: Input\n }] } });\n\n/**\n * Represents the [`kendoPopoverAnchor`]({% slug configuration_popover %}#toc-anchordirective) directive.\n * It is used to target an element, which should display a popover on interaction.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass PopoverAnchorDirective extends PopoverDirectivesBase {\n constructor(hostEl, ngZone, popupService, renderer, popoverService) {\n super(ngZone, popupService, renderer);\n this.hostEl = hostEl;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n this.popoverService = popoverService;\n this.mouseenterHandler = () => {\n this.controlVisibility(this.hostEl.nativeElement, true);\n };\n this.mouseleaveHandler = () => {\n if (this.isPrevented(this.hostEl.nativeElement, false)) {\n return;\n }\n if (!this._hideSub) {\n this._hideSub = this.popoverService.hidePopover.subscribe((val) => {\n const [isPopoverHovered, isAnchorHovered] = val;\n if (!isPopoverHovered && !isAnchorHovered) {\n this.hide();\n }\n });\n }\n };\n this.focusHandler = () => {\n this.controlVisibility(this.hostEl.nativeElement, true);\n };\n this.blurHandler = (args) => {\n const event = args.domEvent;\n if (this.isPrevented(this.hostEl.nativeElement, false)) {\n return;\n }\n // from anchor to popup focus check\n const isFocusInside = !!closest(event.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isFocusInside) {\n this.hide();\n }\n if (!this._focusInsideSub) {\n // inside popup focus check\n this._focusInsideSub = this.popoverService.isFocusInsidePopover.pipe(filter(v => v !== null)).subscribe((val) => {\n if (!val) {\n this.hide();\n }\n });\n }\n };\n this._popoverService = this.popoverService;\n }\n /**\n * Shows the Popover. [See example]({% slug programmaticcontrol_popover %})\n */\n show() {\n if (this.popupRef) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(this.hostEl);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n /**\n * Toggles the visibility of the Popover. [See example]({% slug programmaticcontrol_popover %})\n */\n toggle() {\n if (this.popupRef) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n subscribeToEvents(arr) {\n this.subs.add(this.renderer.listen(this.hostEl.nativeElement, arr[0].name, () => {\n this.popoverService.emitAnchorState(true, this.hostEl.nativeElement);\n arr[0].handler();\n }));\n this.subs.add(this.renderer.listen(this.hostEl.nativeElement, arr[1].name, (e) => {\n this.popoverService.emitAnchorState(false, null);\n arr[1].handler({ domEvent: e });\n }));\n }\n subscribeClick() {\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n this.disposeClickListener = this.renderer.listen(document, 'click', (e) => {\n this.onClick(e);\n });\n }\n /**\n * @hidden\n */\n onClick(event) {\n const isInsidePopup = !!closest(event.target, (node) => node.classList && node.classList.contains('k-popup'));\n let isAnchor = !!closest(event.target, (node) => node === this.hostEl.nativeElement);\n if (isInsidePopup || (this.popupRef && isAnchor)) {\n return;\n }\n if (isAnchor) {\n // on opening\n this.controlVisibility(this.hostEl.nativeElement, true);\n }\n else {\n // on closing\n this.controlVisibility(this.hostEl.nativeElement, false);\n }\n }\n controlVisibility(anchor, show) {\n if (this.isPrevented(anchor, show)) {\n return;\n }\n if (show) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n}\nPopoverAnchorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverAnchorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }, { token: PopoverService }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverAnchorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopoverAnchorDirective, selector: \"[kendoPopoverAnchor]\", providers: [PopoverService], exportAs: [\"kendoPopoverAnchor\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverAnchorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverAnchor]',\n exportAs: 'kendoPopoverAnchor',\n providers: [PopoverService]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }, { type: PopoverService }]; } });\n\nconst COMPONENT_DIRECTIVES = [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective];\nconst COMPONENT_MODULES = [PopupModule];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Tooltip component.\n *\n * The package exports:\n * - `KendoTooltipDirective`—The Tooltip directive class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Tooltip module\n * import { TooltipModule } from '@progress/kendo-angular-tooltip';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TooltipModule], // import TooltipModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipModule, declarations: [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective], imports: [CommonModule, PopupModule], exports: [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipModule, imports: [[CommonModule, ...COMPONENT_MODULES]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n entryComponents: [TooltipContentComponent],\n imports: [CommonModule, ...COMPONENT_MODULES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }] });\n\nconst DIRECTIVES = [\n PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Popover component.\n *\n * @example\n *\n * ```ts-no-run\n * import { PopoverModule } from '@progress/kendo-angular-tooltip';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, PopoverModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopoverModule {\n}\nPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverModule, declarations: [PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective, PopoverComponent], imports: [CommonModule,\n PopupModule], exports: [PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective, PopoverComponent] });\nPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverModule, imports: [[\n CommonModule,\n PopupModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopoverModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n ...DIRECTIVES,\n PopoverComponent\n ],\n entryComponents: [PopoverComponent],\n exports: [...DIRECTIVES, PopoverComponent],\n imports: [\n CommonModule,\n PopupModule\n ]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Tooltips components.\n *\n * @example\n *\n * ```ts-no-run\n * import { TooltipsModule } from '@progress/kendo-angular-tooltip';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TooltipsModule], // import TooltipsModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass TooltipsModule {\n}\nTooltipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipsModule, exports: [TooltipModule, PopoverModule] });\nTooltipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipsModule, imports: [TooltipModule, PopoverModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [TooltipModule, PopoverModule]\n }]\n }] });\n\n// Tooltip\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedMessagesDirective, PopoverActionsTemplateDirective, PopoverAnchorDirective, PopoverBodyTemplateDirective, PopoverComponent, PopoverContainerDirective, PopoverHiddenEvent, PopoverHideEvent, PopoverModule, PopoverShowEvent, PopoverShownEvent, PopoverTitleTemplateDirective, TOOLTIP_SETTINGS, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipSettings, TooltipsModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Optional, Component, HostBinding, Input, Output, forwardRef, isDevMode, ViewContainerRef, ChangeDetectionStrategy, ViewChild, ContentChild, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, guid, anyChanged, hasObservers, isChanged } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, of, Subscription, EMPTY, BehaviorSubject, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport * as i8 from '@progress/kendo-angular-inputs';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, tap, switchMap, delay, takeUntil, catchError, finalize, take, map } from 'rxjs/operators';\nimport * as i9 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport Draggable from '@telerik/kendo-draggable';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1651820172,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass DataChangeNotificationService {\n constructor() {\n this.changes = new EventEmitter();\n }\n notify() {\n this.changes.emit();\n }\n}\n\n/**\n * @hidden\n */\nconst hasChildren = () => false;\n/**\n * @hidden\n */\nconst isChecked = () => 'none';\n/**\n * @hidden\n */\nconst isDisabled = () => false;\n/**\n * @hidden\n */\nconst isExpanded = () => true;\n/**\n * @hidden\n */\nconst isSelected = () => false;\n/**\n * @hidden\n */\nconst isVisible = () => true;\n/**\n * @hidden\n */\nconst trackBy = (_, item) => item;\n\n/**\n * @hidden\n */\nclass ExpandStateService {\n constructor() {\n this.changes = new Subject();\n }\n expand(index, dataItem) {\n this.changes.next({ dataItem, index, expand: true });\n }\n collapse(index, dataItem) {\n this.changes.next({ dataItem, index, expand: false });\n }\n}\nExpandStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass IndexBuilderService {\n constructor() {\n this.INDEX_SEPARATOR = '_';\n }\n nodeIndex(index = '', parentIndex = '') {\n return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;\n }\n indexForLevel(index, level) {\n return index.split(this.INDEX_SEPARATOR).slice(0, level).join(this.INDEX_SEPARATOR);\n }\n lastLevelIndex(index = '') {\n const parts = index.split(this.INDEX_SEPARATOR);\n if (!parts.length) {\n return NaN;\n }\n return parseInt(parts[parts.length - 1], 10);\n }\n level(index) {\n return index.split(this.INDEX_SEPARATOR).length;\n }\n}\nIndexBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIndexBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass LoadingNotificationService {\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n}\nLoadingNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLoadingNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, decorators: [{\n type: Injectable\n }] });\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst match = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n */\nconst closestWithMatch = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (match(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n */\nconst noop = () => { };\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nconst isBoolean = (value) => typeof value === 'boolean';\n/**\n * @hidden\n */\nconst closestNode = (element) => {\n const selector = 'li.k-treeview-item';\n if (!isDocumentAvailable()) {\n return null;\n }\n if (element.closest) {\n return element.closest(selector);\n }\n else {\n return closestWithMatch(element, selector);\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst isContent = (element) => {\n const scopeSelector = '.k-treeview-leaf:not(.k-treeview-load-more-button),.k-treeview-item,.k-treeview';\n if (!isDocumentAvailable()) {\n return null;\n }\n let node = element;\n while (node && !match(node, scopeSelector)) {\n node = node.parentNode;\n }\n if (node) {\n return match(node, '.k-treeview-leaf:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-treeview-leaf:not(.k-treeview-load-more-button) element.\n * If the passed parent item is itself a content node, it is returned.\n */\nconst getContentElement = (parent) => {\n if (!isPresent(parent)) {\n return null;\n }\n const selector = '.k-treeview-leaf:not(.k-treeview-load-more-button)';\n if (match(parent, selector)) {\n return parent;\n }\n return parent.querySelector(selector);\n};\n/**\n * @hidden\n */\nconst isLoadMoreButton = (element) => {\n return isPresent(closestWithMatch(element, '.k-treeview-leaf.k-treeview-load-more-button'));\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst hasParent = (element, container) => {\n return Boolean(closest(element, (node) => node === container));\n};\n/**\n * @hidden\n */\nconst focusableNode = (element) => element.nativeElement.querySelector('li[tabindex=\"0\"]');\n/**\n * @hidden\n */\nconst hasActiveNode = (target, node) => {\n const closestItem = node || closestNode(target);\n return closestItem && (closestItem === target || target.tabIndex < 0);\n};\n/**\n * @hidden\n */\nconst nodeId = (node) => node ? node.getAttribute('data-treeindex') : '';\n/**\n * @hidden\n */\nconst nodeIndex = (item) => (item || {}).index;\n/**\n * @hidden\n */\nconst dataItemsEqual = (first, second) => {\n if (!isPresent(first) && !isPresent(second)) {\n return true;\n }\n return isPresent(first) && isPresent(second) && first.item.dataItem === second.item.dataItem;\n};\n/**\n * @hidden\n */\nconst getDataItem = (lookup) => {\n if (!isPresent(lookup)) {\n return lookup;\n }\n return lookup.item.dataItem;\n};\n/**\n * @hidden\n */\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\n/**\n * @hidden\n * A recursive tree-filtering algorithm that returns:\n * - all child nodes of matching nodes\n * - a chain parent nodes from the match to the root node\n */\nconst filterTree = (items, term, { operator, ignoreCase, mode }, textField, depth = 0) => {\n const field = typeof textField === \"string\" ? textField : textField[depth];\n items.forEach((wrapper) => {\n const matcher = typeof operator === \"string\" ? matchByFieldAndCase(field, operator, ignoreCase) : operator;\n const isMatch = matcher(wrapper.dataItem, term);\n wrapper.isMatch = isMatch;\n wrapper.visible = isMatch;\n wrapper.containsMatches = false;\n if (isMatch) {\n setParentChain(wrapper.parent);\n }\n if (wrapper.children && wrapper.children.length > 0) {\n if (mode === \"strict\" || !isMatch) {\n filterTree(wrapper.children, term, { operator, ignoreCase, mode }, textField, depth + 1);\n }\n else {\n makeAllVisible(wrapper.children);\n }\n }\n });\n};\nconst setParentChain = (node) => {\n if (!isPresent(node)) {\n return;\n }\n node.containsMatches = true;\n node.visible = true;\n if (isPresent(node.parent) && !node.parent.containsMatches) {\n setParentChain(node.parent);\n }\n};\nconst makeAllVisible = (nodes) => {\n nodes.forEach(node => {\n node.visible = true;\n if (node.children) {\n makeAllVisible(node.children);\n }\n });\n};\nconst operators = {\n contains: (a, b) => a.indexOf(b) >= 0,\n doesnotcontain: (a, b) => a.indexOf(b) === -1,\n startswith: (a, b) => a.lastIndexOf(b, 0) === 0,\n doesnotstartwith: (a, b) => a.lastIndexOf(b, 0) === -1,\n endswith: (a, b) => a.indexOf(b, a.length - b.length) >= 0,\n doesnotendwith: (a, b) => a.indexOf(b, a.length - b.length) < 0\n};\nconst matchByCase = (matcher, ignoreCase) => (a, b) => {\n if (ignoreCase) {\n return matcher(a.toLowerCase(), b.toLowerCase());\n }\n return matcher(a, b);\n};\nconst matchByFieldAndCase = (field, operator, ignoreCase) => (dataItem, term) => matchByCase(operators[operator], ignoreCase)(getter(field)(dataItem), term);\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, currentLevelIndex, parentIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n index: buildTreeIndex(parentIndex, currentLevelIndex)\n };\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchLoadedDescendants = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(filterExpression);\n }\n descendants.forEach(child => descendants = descendants.concat(fetchLoadedDescendants(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Compares two Seets to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n */\nconst sameValues = (as, bs) => {\n if (as.size !== bs.size) {\n return false;\n }\n return Array.from(as).every(v => bs.has(v));\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n\nconst safe = node => (node || {});\nconst safeChildren = node => (safe(node).children || []);\nconst lastVisibleNode = (nodes) => {\n if (!Array.isArray(nodes) || nodes.length === 0) {\n return null;\n }\n const nodesCount = nodes.length;\n const lastIndex = nodesCount - 1;\n for (let index = lastIndex; index >= 0; index -= 1) {\n const node = nodes[index];\n if (node.visible) {\n return node;\n }\n }\n return null;\n};\n/**\n * @hidden\n */\nclass NavigationModel {\n constructor() {\n this.ib = new IndexBuilderService();\n this.nodes = [];\n }\n firstVisibleNode() {\n return (this.nodes || []).find(node => node.visible);\n }\n lastVisibleNode() {\n let node = lastVisibleNode(this.nodes);\n while (isPresent(node) && safeChildren(node).length > 0) {\n const children = safeChildren(node);\n const lastVisibleChild = lastVisibleNode(children);\n if (!isPresent(lastVisibleChild)) {\n return node;\n }\n node = lastVisibleChild;\n }\n return node;\n }\n closestNode(index) {\n const { prev } = safe(this.findNode(index));\n const sibling = prev || this.firstVisibleNode();\n return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;\n }\n firstFocusableNode() {\n return this.nodes.find((node) => {\n return !node.disabled && node.visible;\n });\n }\n findNode(index) {\n return this.find(index, this.nodes);\n }\n findParent(index) {\n const parentLevel = this.ib.level(index) - 1;\n return this.findNode(this.ib.indexForLevel(index, parentLevel));\n }\n findVisibleChild(index) {\n const node = this.findNode(index);\n const children = safeChildren(node);\n return children.find((child) => child.visible);\n }\n findVisiblePrev(item) {\n const index = item.index;\n const parent = this.findParent(index);\n const levelIndex = this.ib.lastLevelIndex(index);\n const prevNodes = this.container(parent).slice(0, levelIndex);\n const prevNodesHidden = prevNodes.every(node => !node.visible);\n if (levelIndex === 0 || prevNodesHidden) {\n return parent;\n }\n const currentNode = this.findNode(index);\n let prev = this.visibleSibling(currentNode, -1);\n if (prev) {\n let children = this.container(prev);\n while (children.length > 0 && children.some(node => node.visible)) {\n prev = lastVisibleNode(children);\n children = this.container(prev);\n }\n }\n return prev;\n }\n findVisibleNext(item) {\n const children = this.container(item);\n const hasVisibleChildren = children.some(child => child.visible);\n if (children.length === 0 || !hasVisibleChildren) {\n return this.visibleSibling(item, 1);\n }\n return children.find(child => child.visible);\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const children = [];\n const level = this.ib.level(index);\n const parent = this.findParent(index);\n if (parent || level === 1) {\n const node = { id, children, index, parent, disabled, loadMoreButton, visible };\n this.insert(node, parent);\n }\n }\n unregisterItem(id, index) {\n const node = this.find(index, this.nodes);\n if (!node || node.id !== id) {\n return;\n }\n const children = this.container(node.parent);\n children.splice(children.indexOf(node), 1);\n }\n childLevel(nodes) {\n const children = nodes.filter(node => isPresent(node));\n if (!children || !children.length) {\n return 1;\n }\n return this.ib.level(children[0].index);\n }\n container(node) {\n return node ? node.children : this.nodes;\n }\n find(index, nodes) {\n const childLevel = this.childLevel(nodes);\n const indexToMatch = this.ib.indexForLevel(index, childLevel);\n const isLeaf = childLevel === this.ib.level(index);\n const node = nodes.find(n => n && n.index === indexToMatch);\n if (!node) {\n return null;\n }\n return isLeaf ? node : this.find(index, node.children);\n }\n insert(node, parent) {\n const nodes = this.container(parent);\n nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);\n }\n visibleSibling(node, offset) {\n if (!node) {\n return null;\n }\n const parent = this.findParent(node.index);\n const container = this.container(parent);\n let nextItemIndex = container.indexOf(node) + offset;\n let nextItem = container[nextItemIndex];\n while (isPresent(nextItem)) {\n if (nextItem.visible) {\n return nextItem;\n }\n nextItemIndex += offset;\n nextItem = container[nextItemIndex];\n }\n return this.visibleSibling(parent, offset);\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(localization) {\n this.localization = localization;\n this.expands = new Subject();\n this.moves = new Subject();\n this.checks = new Subject();\n this.selects = new Subject();\n this.loadMore = new Subject();\n this.navigable = true;\n this.actions = {\n [Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem), true),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem), true),\n [Keys.ArrowLeft]: () => !this.isLoadMoreButton && (this.expand({\n expand: this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent\n })),\n [Keys.ArrowRight]: () => !this.isLoadMoreButton && (this.expand({\n expand: !this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild\n })),\n [Keys.Home]: () => this.activate(this.model.firstVisibleNode(), true),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode(), true),\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = false;\n this.shouldScroll = false;\n this._model = new NavigationModel();\n this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);\n this.moveToParent = this.moveToParent.bind(this);\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n }\n get activeIndex() {\n return nodeIndex(this.activeItem) || null;\n }\n get isActiveExpanded() {\n return this.activeItem && this.activeItem.children.length > 0;\n }\n get isLoadMoreButton() {\n return this.activeItem && this.activeItem.loadMoreButton;\n }\n get focusableItem() {\n return this.activeItem || this.model.firstFocusableNode();\n }\n activate(item, shouldScroll = false) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\n this.shouldScroll = shouldScroll;\n this.notifyMove();\n }\n activateParent(index) {\n this.activate(this.model.findParent(index));\n }\n activateIndex(index) {\n if (!index) {\n return;\n }\n this.activate(this.model.findNode(index));\n }\n activateClosest(index) {\n if (!index || nodeIndex(this.focusableItem) !== index) {\n return;\n }\n this.activeItem = this.model.closestNode(index);\n this.notifyMove();\n }\n activateFocusable() {\n if (this.activeItem) {\n return;\n }\n this.activeItem = this.model.firstVisibleNode();\n this.notifyMove();\n }\n deactivate() {\n if (!this.navigable || !this.isFocused) {\n return;\n }\n this.isFocused = false;\n this.notifyMove();\n }\n checkIndex(index) {\n if (!this.isDisabled(index)) {\n this.checks.next(index);\n }\n }\n selectIndex(index) {\n if (!this.isDisabled(index)) {\n this.selects.next(index);\n }\n }\n notifyLoadMore(index) {\n if (!isPresent(index)) {\n return;\n }\n this.loadMore.next(index);\n }\n isActive(index) {\n if (!index) {\n return false;\n }\n return this.isFocused && this.activeIndex === index;\n }\n isFocusable(index) {\n return nodeIndex(this.focusableItem) === index;\n }\n isDisabled(index) {\n return this.model.findNode(index).disabled;\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n this.model.registerItem(id, index, disabled, loadMoreButton, visible);\n }\n unregisterItem(id, index) {\n if (this.isActive(index)) {\n this.activateParent(index);\n }\n this.model.unregisterItem(id, index);\n }\n move(e) {\n if (!this.navigable) {\n return;\n }\n const moveAction = this.actions[e.keyCode];\n if (!moveAction) {\n return;\n }\n moveAction();\n e.preventDefault();\n }\n expand({ expand, intercept }) {\n const index = nodeIndex(this.activeItem);\n if (!index || intercept(index)) {\n return;\n }\n this.notifyExpand(expand);\n }\n moveToParent() {\n if (this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findParent(nodeIndex(this.activeItem)));\n return true;\n }\n moveToFirstVisibleChild() {\n if (!this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));\n return true;\n }\n notifyExpand(expand) {\n this.expands.next(this.navigationState(expand));\n }\n notifyMove() {\n this.moves.next(this.navigationState());\n }\n navigationState(expand = false) {\n return ({ expand, index: this.activeIndex, isFocused: this.isFocused, shouldScroll: this.shouldScroll });\n }\n handleEnter() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.selectIndex(this.activeIndex);\n }\n }\n handleSpace() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.checkIndex(this.activeIndex);\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass NodeChildrenService {\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({ item, children });\n }\n}\nNodeChildrenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNodeChildrenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents the template for the TreeView nodes ([more information and example]({% slug nodetemplate_treeview %})).\n * The template helps to customize the content of the nodes. To define the node template, nest an ``\n * tag with the `kendoTreeViewNodeTemplate` directive inside a `` tag.\n *\n *\n * The node data item and its hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - available as implicit context variable\n * - `let-index=\"index\"` (`string`)\n *\n *\n * @example\n * ```ts\n *\n * import { Component } from '@angular/core';\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ index }}: {{ dataItem.text }}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * {\n * text: \"Inbox\",\n * items: [{ text: \"Read Mail\" }]\n * },\n * {\n * text: \"Drafts\"\n * },\n * {\n * text: \"Search Folders\",\n * items: [\n * { text: \"Categorized Mail\" },\n * { text: \"Large Mail\" },\n * { text: \"Unread Mail\"}\n * ]\n * },\n * { text: \"Settings\" }\n * ];\n * }\n *\n * ```\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoTreeViewNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView load more buttons.\n * To define a button template, nest an ``\n * tag with the `kendoTreeViewLoadMoreButtonTemplate` directive inside a `` tag\n * ([see example]({% slug loadmorebutton_treeview %}#toc-button-template)).\n *\n * The hierarchical index of the load more button node is available as a context variable:\n *\n * - `let-index=\"index\"` (`string`)\n */\nclass LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLoadMoreButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreButtonTemplateDirective, selector: \"[kendoTreeViewLoadMoreButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMoreButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n *\n * An injection token used by the data binding directives to interface with\n * the TreeView or the DropDownTree components.\n */\nclass DataBoundComponent {\n}\nDataBoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDataBoundComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * An injection token used by the expand-directive to interface with\n * the TreeView or the DropDownTree components.\n */\nclass ExpandableComponent {\n}\nExpandableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandableComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor() {\n this.changes = new Subject();\n }\n isFirstSelected(index) {\n return this.firstIndex === index;\n }\n setFirstSelected(index, selected) {\n if (this.firstIndex === index && selected === false) {\n this.firstIndex = null;\n }\n else if (!this.firstIndex && selected) {\n this.firstIndex = index;\n }\n }\n select(index, dataItem) {\n this.changes.next({ dataItem, index });\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }] });\n\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nclass TreeViewLookupService {\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex(parent))\n };\n this.map.set(item.index, currentLookup);\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n unregisterItem(index, dataItem) {\n const current = this.item(index);\n if (current && current.item.dataItem === dataItem) {\n this.map.delete(index);\n if (current.parent && current.parent.children) {\n current.parent.children = current.parent.children.filter(item => item.dataItem !== dataItem);\n }\n }\n }\n replaceItem(index, item, parent) {\n if (!item) {\n return;\n }\n this.unregisterItem(index, item.dataItem);\n this.registerItem(item, parent);\n this.addToParent(item, parent);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n hasItem(index) {\n return this.map.has(index);\n }\n item(index) {\n return this.map.get(index) || null;\n }\n addToParent(item, parent) {\n if (parent) {\n const parentItem = this.item(parent.index);\n const index = parseInt(INDEX_REGEX.exec(item.index)[0], 10);\n parentItem.children = parentItem.children || [];\n parentItem.children.splice(index, 0, item);\n }\n }\n mapChildren(children = []) {\n return children.map(c => {\n const { item, parent, children } = this.item(c.index);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n}\nTreeViewLookupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeViewLookupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * Represents the CheckBox component of the Kendo UI TreeView for Angular.\n *\n */\nclass CheckBoxComponent {\n constructor(element, renderer, changeDetector) {\n this.element = element;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies the [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) of the component.\n */\n this.id = `_${guid()}`;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Specifies the size of the component.\n */\n this.size = 'medium';\n /**\n * Fires when the user changes the check state of the component.\n */\n this.checkStateChange = new EventEmitter();\n this.checkState = 'none';\n }\n //XXX: implement ComponentValueAccessor\n //XXX: focus/blur methods\n get classWrapper() { return true; }\n get indeterminate() {\n return this.checkState === 'indeterminate';\n }\n get checked() {\n return this.checkState === 'checked';\n }\n get checkBoxClasses() {\n return `k-checkbox ${this.size ? getSizeClass('checkbox', this.size) : ''} k-rounded-md`;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.element.nativeElement, \"tabindex\");\n }\n ngDoCheck() {\n this.checkState = this.isChecked(this.node, this.index);\n }\n handleChange(e) {\n const state = e.target.checked ? 'checked' : 'none';\n // update the View State so that Angular updates the input if the isChecked value is the same\n this.checkState = state;\n this.changeDetector.detectChanges();\n this.checkStateChange.emit(state);\n }\n}\nCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: { id: \"id\", isChecked: \"isChecked\", node: \"node\", index: \"index\", labelText: \"labelText\", tabindex: \"tabindex\", size: \"size\" }, outputs: { checkStateChange: \"checkStateChange\" }, host: { properties: { \"class.k-checkbox-wrapper\": \"this.classWrapper\" } }, ngImport: i0, template: `\n \n {{labelText}}\n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-checkbox',\n template: `\n \n {{labelText}}\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { classWrapper: [{\n type: HostBinding,\n args: ['class.k-checkbox-wrapper']\n }], id: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], node: [{\n type: Input\n }], index: [{\n type: Input\n }], labelText: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], checkStateChange: [{\n type: Output\n }] } });\n\nconst buildItem = (index, dataItem) => ({ dataItem, index });\nlet id = 0;\nconst TREE_ITEM_ROLE = 'treeitem';\nconst BUTTON_ROLE = 'button';\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemDirective {\n constructor(element, expandService, navigationService, selectionService, lookupService, renderer, ib) {\n this.element = element;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.lookupService = lookupService;\n this.renderer = renderer;\n this.ib = ib;\n this.role = TREE_ITEM_ROLE;\n this.loadOnDemand = true;\n this.isDisabled = false;\n this.isVisible = true;\n this.ariaChecked = 'false';\n this.id = id++;\n this.isInitialized = false;\n this.subscriptions = [];\n this.subscribe();\n }\n set isChecked(checked) {\n if (checked === 'checked') {\n this.ariaChecked = 'true';\n }\n else if (checked === 'indeterminate') {\n this.ariaChecked = 'mixed';\n }\n else {\n this.ariaChecked = 'false';\n }\n }\n get isExpanded() {\n return this._isExpanded || false;\n }\n set isExpanded(isExpanded) {\n this._isExpanded = isExpanded;\n }\n get isSelected() {\n return this._isSelected || false;\n }\n set isSelected(isSelected) {\n this._isSelected = isSelected;\n }\n get isButton() {\n return this.role === BUTTON_ROLE;\n }\n get treeItem() {\n return buildItem(this.index, this.dataItem);\n }\n get parentTreeItem() {\n return this.parentDataItem ? buildItem(this.parentIndex, this.parentDataItem) : null;\n }\n ngOnInit() {\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.registerItem(this.treeItem, this.parentTreeItem);\n }\n this.registerNavigationItem();\n this.isInitialized = true;\n this.setAttribute('role', this.role);\n this.setAriaAttributes();\n this.setDisabledClass();\n this.updateTabIndex();\n }\n ngOnChanges(changes) {\n const { index, isDisabled } = changes;\n if (anyChanged(['index', 'checkable', 'isChecked', 'expandable', 'isExpanded', 'selectable', 'isSelected'], changes)) {\n this.setAriaAttributes();\n }\n if (isDisabled) {\n this.setDisabledClass();\n }\n if (this.loadOnDemand && !this.isButton) {\n this.moveLookupItem(changes);\n }\n this.moveNavigationItem(index);\n if (anyChanged(['isDisabled', 'isVisible'], changes)) {\n this.updateNodeAvailability();\n }\n }\n ngOnDestroy() {\n this.navigationService.unregisterItem(this.id, this.index);\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.unregisterItem(this.index, this.dataItem);\n }\n this.subscriptions = this.subscriptions.reduce((list, callback) => (callback.unsubscribe(), list), []);\n }\n subscribe() {\n this.subscriptions = [\n this.navigationService.moves\n .subscribe((navState) => {\n this.updateTabIndex();\n this.focusItem(navState.shouldScroll);\n }),\n this.navigationService.expands\n .pipe(filter(({ index }) => index === this.index && !this.isDisabled))\n .subscribe(({ expand }) => this.expand(expand))\n ];\n }\n registerNavigationItem() {\n this.navigationService.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n this.activateItem();\n }\n activateItem() {\n if (this.isDisabled) {\n return;\n }\n const navigationService = this.navigationService;\n const selectionService = this.selectionService;\n const index = this.index;\n selectionService.setFirstSelected(index, this.isSelected);\n if (!navigationService.isActive(index) && selectionService.isFirstSelected(index)) {\n navigationService.activateIndex(index);\n }\n }\n expand(shouldExpand) {\n this.expandService[shouldExpand ? 'expand' : 'collapse'](this.index, this.dataItem);\n }\n isFocusable() {\n return !this.isDisabled && this.navigationService.isFocusable(this.index);\n }\n focusItem(scrollIntoView = false) {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus({ preventScroll: !scrollIntoView });\n }\n }\n moveLookupItem(changes = {}) {\n const { dataItem, index, parentDataItem, parentIndex } = changes;\n if ((index && index.firstChange) || //skip first change\n (!dataItem && !index && !parentDataItem && !parentIndex)) {\n return;\n }\n const oldIndex = (index || {}).previousValue || this.index;\n this.lookupService.replaceItem(oldIndex, this.treeItem, this.parentTreeItem);\n }\n moveNavigationItem(indexChange = {}) {\n const { currentValue, firstChange, previousValue } = indexChange;\n if (!firstChange && isPresent(currentValue) && isPresent(previousValue)) {\n this.navigationService.unregisterItem(this.id, previousValue);\n this.navigationService.registerItem(this.id, currentValue, this.isDisabled, this.isButton);\n }\n }\n updateNodeAvailability() {\n const service = this.navigationService;\n if (this.isDisabled || !this.isVisible) {\n service.activateClosest(this.index); // activate before unregister the item\n }\n else {\n service.activateFocusable();\n }\n service.unregisterItem(this.id, this.index);\n service.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n }\n setAriaAttributes() {\n this.setAttribute('aria-level', this.ib.level(this.index).toString());\n // don't render attributes when the component configuration doesn't allow the specified state\n this.setAttribute('aria-expanded', this.expandable ? this.isExpanded.toString() : null);\n this.setAttribute('aria-selected', this.selectable ? this.isSelected.toString() : null);\n this.setAttribute('aria-checked', this.checkable ? this.ariaChecked : null);\n }\n setDisabledClass() {\n this.setClass('k-disabled', this.isDisabled);\n }\n setClass(className, toggle) {\n const action = toggle ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n updateTabIndex() {\n this.setAttribute('tabIndex', this.isFocusable() ? '0' : '-1');\n }\n setAttribute(attr, value) {\n if (!isPresent(value)) {\n this.renderer.removeAttribute(this.element.nativeElement, attr);\n return;\n }\n this.renderer.setAttribute(this.element.nativeElement, attr, value);\n }\n}\nTreeViewItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, deps: [{ token: i0.ElementRef }, { token: ExpandStateService }, { token: NavigationService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.Renderer2 }, { token: IndexBuilderService }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: { dataItem: \"dataItem\", index: \"index\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", role: \"role\", loadOnDemand: \"loadOnDemand\", checkable: \"checkable\", selectable: \"selectable\", expandable: \"expandable\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", isExpanded: \"isExpanded\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItem]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ExpandStateService }, { type: NavigationService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.Renderer2 }, { type: IndexBuilderService }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], role: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], checkable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], expandable: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LoadingIndicatorDirective {\n constructor(expandService, loadingService, cd) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.cd = cd;\n this._loading = false;\n }\n get loading() {\n return this._loading;\n }\n set loading(value) {\n this._loading = value;\n this.cd.markForCheck();\n }\n ngOnInit() {\n const loadingNotifications = this.loadingService\n .changes\n .pipe(filter(index => index === this.index));\n this.subscription = this.expandService\n .changes\n .pipe(filter(({ index }) => index === this.index), tap(({ expand }) => {\n if (!expand && this.loading) {\n this.loading = false;\n }\n }), filter(({ expand }) => expand), switchMap(x => of(x).pipe(delay(100), takeUntil(loadingNotifications))))\n .subscribe(() => this.loading = true);\n this.subscription.add(loadingNotifications.subscribe(() => this.loading = false));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nLoadingIndicatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nLoadingIndicatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: { index: [\"kendoTreeViewLoading\", \"index\"] }, host: { properties: { \"class.k-i-loading\": \"this.loading\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewLoading]' }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { loading: [{\n type: HostBinding,\n args: [\"class.k-i-loading\"]\n }], index: [{\n type: Input,\n args: [\"kendoTreeViewLoading\"]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemContentDirective {\n constructor(element, navigationService, selectionService, renderer) {\n this.element = element;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.renderer = renderer;\n this.initialSelection = false;\n this.isSelected = isSelected;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.navigationService.moves\n .subscribe(this.updateFocusClass.bind(this)));\n this.subscriptions.add(this.navigationService.selects\n .pipe(filter((index) => index === this.index))\n .subscribe((index) => this.selectionService.select(index, this.dataItem)));\n this.subscriptions.add(this.selectionService.changes\n .subscribe(() => {\n this.updateSelectionClass(this.isSelected(this.dataItem, this.index));\n }));\n }\n ngOnChanges(changes) {\n if (changes.initialSelection) {\n this.updateSelectionClass(this.initialSelection);\n }\n if (changes.index) {\n this.updateFocusClass();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n updateFocusClass() {\n this.render(this.navigationService.isActive(this.index), 'k-focus');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n}\nTreeViewItemContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, deps: [{ token: i0.ElementRef }, { token: NavigationService }, { token: SelectionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: { dataItem: \"dataItem\", index: \"index\", initialSelection: \"initialSelection\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItemContent]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NavigationService }, { type: SelectionService }, { type: i0.Renderer2 }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], initialSelection: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\nconst TOP_ITEM = 'k-treeview-top';\nconst MID_ITEM = 'k-treeview-mid';\nconst BOT_ITEM = 'k-treeview-bot';\n/**\n * @hidden\n */\nclass TreeViewGroupComponent {\n constructor(expandService, loadingService, indexBuilder, treeViewLookupService, navigationService, nodeChildrenService, dataChangeNotification, changeDetectorRef) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.indexBuilder = indexBuilder;\n this.treeViewLookupService = treeViewLookupService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.dataChangeNotification = dataChangeNotification;\n this.changeDetectorRef = changeDetectorRef;\n this.kGroupClass = true;\n this.role = 'group';\n this.loadOnDemand = true;\n this.textField = \"\";\n this.size = 'medium';\n this.initialNodesLoaded = false;\n this.loadingMoreNodes = false;\n this._data = [];\n this.singleRecordSubscriptions = new Subscription();\n this.isChecked = () => 'none';\n this.isDisabled = () => false;\n this.isExpanded = () => false;\n this.isVisible = () => true;\n this.isSelected = () => false;\n this.children = () => of([]);\n this.hasChildren = () => false;\n }\n get moreNodesAvailable() {\n if (!isPresent(this.loadMoreService) || this.data.length === 0) {\n return false;\n }\n return this.pageSize < this.totalNodesCount;\n }\n get pageSize() {\n if (!isPresent(this.loadMoreService)) {\n return null;\n }\n return this.loadMoreService.getGroupSize(this.parentDataItem);\n }\n set pageSize(pageSize) {\n this.loadMoreService.setGroupSize(this.parentDataItem, pageSize);\n }\n get data() {\n if (isPresent(this.pageSize)) {\n const normalizedSizeValue = this.pageSize > 0 ? this.pageSize : 0;\n return this._data.slice(0, normalizedSizeValue);\n }\n return this._data;\n }\n set data(data) {\n this._data = data;\n this.registerLoadedNodes(this.data);\n }\n get loadMoreButtonIndex() {\n if (!this.loadMoreService) {\n return null;\n }\n return this.nodeIndex(this.data.length);\n }\n /**\n * Represents the total number of nodes for the current level.\n */\n get totalNodesCount() {\n if (!this.loadMoreService) {\n return this.data.length;\n }\n return this.loadMoreService.getTotalNodesCount(this.parentDataItem, this._data.length);\n }\n get hasTemplate() {\n return isPresent(this.nodeTemplateRef);\n }\n expandNode(index, dataItem, expand) {\n if (expand) {\n this.expandService.expand(index, dataItem);\n }\n else {\n this.expandService.collapse(index, dataItem);\n }\n }\n checkNode(index) {\n this.navigationService.checkIndex(index);\n this.navigationService.activateIndex(index);\n }\n nodeIndex(index) {\n return this.indexBuilder.nodeIndex(index.toString(), this.parentIndex);\n }\n nodeText(dataItem) {\n const textField = isArray(this.textField) ? this.textField[0] : this.textField;\n return getter(textField)(dataItem);\n }\n ngOnDestroy() {\n if (isPresent(this.nodesSubscription)) {\n this.nodesSubscription.unsubscribe();\n }\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.singleRecordSubscriptions.unsubscribe();\n }\n ngOnInit() {\n this.subscribeToNodesChange();\n this.singleRecordSubscriptions.add(this.dataChangeNotification\n .changes\n .subscribe(this.subscribeToNodesChange.bind(this)));\n this.singleRecordSubscriptions.add(this.navigationService.loadMore\n .pipe(filter(index => index === this.loadMoreButtonIndex))\n .subscribe(this.loadMoreNodes.bind(this)));\n }\n ngOnChanges(changes) {\n if (changes.parentIndex && this.loadOnDemand) {\n this.setNodeChildren(this.mapToTreeItem(this.data));\n }\n }\n fetchChildren(node, index) {\n return this.children(node)\n .pipe(catchError(() => {\n this.loadingService.notifyLoaded(index);\n return EMPTY;\n }), tap(() => this.loadingService.notifyLoaded(index)));\n }\n get nextFields() {\n if (isArray(this.textField)) {\n return this.textField.length > 1 ? this.textField.slice(1) : this.textField;\n }\n return [this.textField];\n }\n loadMoreNodes() {\n if (isPresent(this.loadMoreService.loadMoreNodes)) {\n this.fetchMoreNodes();\n }\n else {\n this.loadMoreLocalNodes();\n }\n }\n /**\n * @hidden\n */\n setItemClasses(dataLength, index) {\n if (dataLength === 1) {\n return this.parentIndex ? BOT_ITEM : `${TOP_ITEM} ${BOT_ITEM}`;\n }\n if (index === 0) {\n return TOP_ITEM;\n }\n if (index > 0 && index < dataLength - 1) {\n return MID_ITEM;\n }\n return index === this.totalNodesCount - 1 ? BOT_ITEM : MID_ITEM;\n }\n loadMoreLocalNodes() {\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += this.loadMoreService.getInitialPageSize(this.parentDataItem);\n this.registerLoadedNodes(this.data);\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n fetchMoreNodes() {\n if (this.loadingMoreNodes) {\n return;\n }\n this.loadingMoreNodes = true;\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.loadMoreNodesSubscription = this.loadMoreService\n .loadMoreNodes({\n dataItem: this.parentDataItem,\n skip: this.data.length,\n take: this.loadMoreService.getInitialPageSize(this.parentDataItem)\n })\n .pipe(finalize(() => this.loadingMoreNodes = false))\n .subscribe(items => {\n if (!(Array.isArray(items) && items.length > 0)) {\n return;\n }\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += items.length;\n this.data = this.data.concat(items);\n if (this.navigationService.isActive(initialLoadMoreButtonIndex)) {\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n });\n }\n setNodeChildren(children) {\n this.treeViewLookupService.registerChildren(this.parentIndex, children);\n }\n mapToTreeItem(data) {\n if (!this.parentIndex) {\n return [];\n }\n return data.map((dataItem, idx) => ({ dataItem, index: this.nodeIndex(idx) }));\n }\n emitChildrenLoaded(children) {\n if (!this.parentIndex) {\n return;\n }\n // ignores the registered load-more button\n const contentChildren = children.filter(item => item.dataItem);\n this.nodeChildrenService.childrenLoaded({ dataItem: this.parentDataItem, index: this.parentIndex }, contentChildren);\n }\n subscribeToNodesChange() {\n if (this.nodesSubscription) {\n this.nodesSubscription.unsubscribe();\n }\n this.nodesSubscription = this.nodes(this.parentDataItem, this.parentIndex)\n .subscribe(data => {\n this.data = data;\n this.initialNodesLoaded = true;\n });\n }\n reselectItemAt(index) {\n if (!isPresent(index)) {\n return;\n }\n // make sure the old index is cleared first\n this.navigationService.deactivate();\n this.navigationService.activateIndex(index);\n }\n registerLoadedNodes(nodes = []) {\n const mappedChildren = this.mapToTreeItem(nodes);\n if (this.loadOnDemand) {\n this.setNodeChildren(mappedChildren);\n }\n this.emitChildrenLoaded(mappedChildren);\n }\n}\nTreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: IndexBuilderService }, { token: TreeViewLookupService }, { token: NavigationService }, { token: NodeChildrenService }, { token: DataChangeNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: { checkboxes: \"checkboxes\", expandIcons: \"expandIcons\", disabled: \"disabled\", selectable: \"selectable\", touchActions: \"touchActions\", loadOnDemand: \"loadOnDemand\", trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", nodeTemplateRef: \"nodeTemplateRef\", loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\", loadMoreService: \"loadMoreService\", size: \"size\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isVisible: \"isVisible\", isSelected: \"isSelected\", children: \"children\", hasChildren: \"hasChildren\" }, host: { properties: { \"class.k-treeview-group\": \"this.kGroupClass\", \"attr.role\": \"this.role\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n Load more\n \n \n \n
    \n \n `, isInline: true, components: [{ type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: [\"id\", \"isChecked\", \"node\", \"index\", \"labelText\", \"tabindex\", \"size\"], outputs: [\"checkStateChange\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: [\"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"role\", \"loadOnDemand\", \"checkable\", \"selectable\", \"expandable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"isExpanded\", \"isSelected\"] }, { type: i9.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: [\"kendoTreeViewLoading\"] }, { type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: [\"dataItem\", \"index\", \"initialSelection\", \"isSelected\"] }, { type: i9.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i9.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i9.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }], animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ],\n // eslint-disable-next-line\n selector: '[kendoTreeViewGroup]',\n template: `\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n Load more\n \n \n \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: IndexBuilderService }, { type: TreeViewLookupService }, { type: NavigationService }, { type: NodeChildrenService }, { type: DataChangeNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { kGroupClass: [{\n type: HostBinding,\n args: [\"class.k-treeview-group\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], checkboxes: [{\n type: Input\n }], expandIcons: [{\n type: Input\n }], disabled: [{\n type: Input\n }], selectable: [{\n type: Input\n }], touchActions: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], nodeTemplateRef: [{\n type: Input\n }], loadMoreButtonTemplateRef: [{\n type: Input\n }], loadMoreService: [{\n type: Input\n }], size: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], children: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\nconst providers = [\n ExpandStateService,\n IndexBuilderService,\n TreeViewLookupService,\n LoadingNotificationService,\n NodeChildrenService,\n NavigationService,\n SelectionService,\n DataChangeNotificationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.treeview'\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n }\n];\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n * @example\n * {% meta height:450 %}\n * {% embed_file get-started/app.component.ts preview %}\n * {% embed_file get-started/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass TreeViewComponent {\n constructor(element, changeDetectorRef, expandService, navigationService, nodeChildrenService, selectionService, treeViewLookupService, ngZone, renderer, dataChangeNotification, localization) {\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.selectionService = selectionService;\n this.treeViewLookupService = treeViewLookupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.dataChangeNotification = dataChangeNotification;\n this.localization = localization;\n this.classNames = true;\n this.role = 'tree';\n /**\n * The hint which is displayed when the component is empty.\n */\n this.filterInputPlaceholder = \"\";\n /** @hidden */\n this.fetchNodes = () => this.data;\n /**\n * Fires when the children of the expanded node are loaded.\n */\n this.childrenLoaded = new EventEmitter();\n /**\n * Fires when the user blurs the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user expands a TreeView node.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the user collapses a TreeView node.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires just before the dragging of the node starts ([see example]({% slug draganddrop_treeview %}#toc-setup)). This event is preventable.\n * If you prevent the event default, no drag hint will be created and the subsequent drag-related events will not be fired.\n */\n this.nodeDragStart = new EventEmitter();\n /**\n * Fires when an item is being dragged ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDrag = new EventEmitter();\n /**\n * Emits when the built-in filtering mechanism in the data-binding directives updates the node's visibility.\n * Used for the built-in auto-expand functionalities of the component and available for custom implementations.\n */\n this.filterStateChange = new EventEmitter();\n /**\n * Fires on the target TreeView when a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * This event is preventable. If you prevent the event default (`event.preventDefualt()`) or invalidate its state (`event.setValid(false)`),\n * the `addItem` and `removeItem` events will not be triggered.\n *\n * Both operations cancel the default drop operation, but the indication to the user is different. `event.setValid(false)` indicates that the operation was\n * unsuccessful by animating the drag clue to its original position. `event.preventDefault()` simply removes the clue, as if it has been dropped successfully.\n * As a general rule, use `preventDefault` to manually handle the add and remove operations, and `setValid(false)` to indicate the operation was unsuccessful.\n */\n this.nodeDrop = new EventEmitter();\n /**\n * Fires on the source TreeView after the dragged item has been dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDragEnd = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView where the item is dropped.\n */\n this.addItem = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView from where the item is dragged.\n */\n this.removeItem = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node checkbox\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the user clicks a TreeView node.\n */\n this.nodeClick = new EventEmitter();\n /**\n * Fires when the user double clicks a TreeView node.\n */\n this.nodeDblClick = new EventEmitter();\n /**\n * A function that defines how to track node changes.\n * By default, the TreeView tracks the nodes by data item object reference.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *
    \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n *\n * public trackBy(index: number, item: any): any {\n * return item.text;\n * }\n * }\n * ```\n */\n this.trackBy = trackBy;\n /**\n * A function which determines if a specific node is disabled.\n */\n this.isDisabled = isDisabled;\n /**\n * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isVisible = isVisible;\n /**\n * Determines whether the TreeView keyboard navigable is enabled.\n */\n this.navigable = true;\n /**\n * A function which provides the child nodes for a given parent node\n * ([see example]({% slug databinding_treeview %})).\n */\n this.children = () => of([]);\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the TreeView.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the TreeView manually]({% slug filtering_treeview %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %}) and [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * Sets an initial value of the built-in input element used for filtering.\n */\n this.filter = '';\n this.checkboxes = false;\n this.expandIcons = false;\n this.selectable = false;\n this.touchActions = true;\n this.isActive = false;\n this.data = new BehaviorSubject([]);\n this._animate = true;\n this._size = 'medium';\n this.subscriptions = new Subscription();\n this.domSubscriptions = [];\n validatePackage(packageMetadata);\n }\n /** @hidden */\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Determines whether the content animation is enabled.\n */\n set animate(value) {\n this._animate = value;\n }\n get animate() {\n return !this._animate;\n }\n /**\n * @hidden\n *\n * Defines the template for each node.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set nodeTemplateRef(template) {\n this._nodeTemplateRef = template;\n }\n get nodeTemplateRef() {\n return this._nodeTemplateRef || this.nodeTemplateQuery;\n }\n /**\n * @hidden\n *\n * Defines the template for each load-more button.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set loadMoreButtonTemplateRef(template) {\n this._loadMoreButtonTemplateRef = template;\n }\n get loadMoreButtonTemplateRef() {\n return this._loadMoreButtonTemplateRef || this.loadMoreButtonTemplateQuery;\n }\n /**\n * The nodes which will be displayed by the TreeView\n * ([see example]({% slug databinding_treeview %})).\n */\n set nodes(value) {\n this.data.next(value || []);\n this.dataChangeNotification.notify();\n }\n get nodes() {\n return this.data.value;\n }\n /**\n * A function which determines if a specific node has child nodes\n * ([see example]({% slug databinding_treeview %})).\n */\n get hasChildren() {\n return this._hasChildren || hasChildren;\n }\n set hasChildren(callback) {\n this._hasChildren = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is checked\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n get isChecked() {\n return this._isChecked || isChecked;\n }\n set isChecked(callback) {\n this._isChecked = callback;\n this.checkboxes = Boolean(this._isChecked);\n }\n /**\n * A function which determines if a specific node is expanded.\n */\n get isExpanded() {\n return this._isExpanded || isExpanded;\n }\n set isExpanded(callback) {\n this._isExpanded = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is selected\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n get isSelected() {\n return this._isSelected || isSelected;\n }\n set isSelected(callback) {\n this._isSelected = callback;\n this.selectable = Boolean(this._isSelected);\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : 'medium';\n if (this.size !== 'none') {\n this.renderer.removeClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', newSize));\n this._size = size;\n }\n get size() {\n return this._size;\n }\n ngOnChanges(changes) {\n this.navigationService.navigable = Boolean(this.navigable);\n // TODO: should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'children', 'hasChildren', 'loadOnDemand'], changes, false) && !this.loadOnDemand) {\n this.preloadChildNodes();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domSubscriptions.forEach(subscription => subscription());\n }\n ngOnInit() {\n this.subscriptions.add(this.nodeChildrenService\n .changes\n .subscribe((x) => this.childrenLoaded.emit(x)));\n this.subscriptions.add(this.expandService.changes\n .subscribe(({ index, dataItem, expand }) => expand\n ? this.expand.emit({ index, dataItem })\n : this.collapse.emit({ index, dataItem })));\n this.subscriptions.add(this.navigationService.checks\n .subscribe((x) => this.checkedChange.emit(this.treeViewLookupService.itemLookup(x))));\n this.subscriptions.add(this.selectionService.changes\n .subscribe((x) => {\n if (hasObservers(this.selectionChange)) {\n this.ngZone.run(() => {\n this.selectionChange.emit(x);\n });\n }\n }));\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.attachDomHandlers();\n });\n }\n if (this.size) {\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n }\n /**\n * Blurs the focused TreeView item.\n */\n blur() {\n if (!isDocumentAvailable()) {\n return;\n }\n const target = focusableNode(this.element);\n if (document.activeElement === target) {\n target.blur();\n }\n }\n /**\n * Focuses the first focusable item in the TreeView component if no hierarchical index is provided.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n * }\n * ```\n */\n focus(index) {\n const focusIndex = index || nodeIndex(this.navigationService.focusableItem);\n this.navigationService.activateIndex(focusIndex);\n const target = focusableNode(this.element);\n if (target) {\n target.focus();\n }\n }\n /**\n * Based on the specified index, returns the TreeItemLookup node.\n *\n * @param index - The index of the node.\n * @returns {TreeItemLookup} - The item that was searched (looked up).\n */\n itemLookup(index) {\n return this.treeViewLookupService.itemLookup(index);\n }\n /**\n * Triggers the [`children`]({% slug api_treeview_treeviewcomponent %}#toc-children) function for every expanded node,\n * causing all rendered child nodes to be fetched again.\n */\n rebindChildren() {\n this.dataChangeNotification.notify();\n }\n /**\n * Triggers the `expand` event for the provided node and displays it's loading indicator.\n */\n expandNode(item, index) {\n this.expandService.expand(index, item);\n }\n /**\n * Triggers the `collapse` event for the provided node.\n */\n collapseNode(item, index) {\n this.expandService.collapse(index, item);\n }\n /**\n * Gets the current page size of the checked data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to get its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @returns {number} - The page size of the checked data item children collection.\n */\n getNodePageSize(dataItem) {\n this.verifyLoadMoreService();\n return this.loadMoreService.getGroupSize(dataItem);\n }\n /**\n * Sets the page size of the targeted data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to target its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @param pageSize {number} - The new page size.\n */\n setNodePageSize(dataItem, pageSize) {\n this.verifyLoadMoreService();\n this.loadMoreService.setGroupSize(dataItem, pageSize);\n }\n /**\n * @hidden\n *\n * Clears the current TreeViewLookupService node map and re-registers all nodes anew.\n * Child nodes are acquired through the provided `children` callback.\n */\n preloadChildNodes() {\n this.treeViewLookupService.reset();\n this.registerLookupItems(this.nodes);\n }\n attachDomHandlers() {\n const element = this.element.nativeElement;\n this.clickHandler = this.clickHandler.bind(this);\n this.domSubscriptions.push(this.renderer.listen(element, 'contextmenu', this.clickHandler), this.renderer.listen(element, 'click', this.clickHandler), this.renderer.listen(element, 'dblclick', this.clickHandler), this.renderer.listen(element, 'focusin', this.focusHandler.bind(this)), this.renderer.listen(element, 'focusout', this.blurHandler.bind(this)), this.renderer.listen(element, 'keydown', this.keydownHandler.bind(this)));\n }\n focusHandler(e) {\n let focusItem;\n if (match(e.target, '.k-treeview-item')) {\n focusItem = e.target;\n }\n else if (!isFocusable(e.target)) { // with compliments to IE\n focusItem = closestNode(e.target);\n }\n if (focusItem) {\n this.navigationService.activateIndex(nodeId(e.target));\n if (!this.isActive && hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n this.isActive = true;\n }\n }\n blurHandler(e) {\n if (this.isActive && match(e.target, '.k-treeview-item') &&\n (!e.relatedTarget || !match(e.relatedTarget, '.k-treeview-item') || !hasParent(e.relatedTarget, this.element.nativeElement))) {\n this.navigationService.deactivate();\n this.isActive = false;\n if (hasObservers(this.onBlur)) {\n this.ngZone.run(() => {\n this.onBlur.emit();\n });\n }\n }\n }\n clickHandler(e) {\n const target = e.target;\n if ((e.type === 'contextmenu' && !hasObservers(this.nodeClick)) ||\n (e.type === 'click' && !hasObservers(this.nodeClick) && !hasObservers(this.selectionChange) && !isLoadMoreButton(target)) ||\n (e.type === 'dblclick' && !hasObservers(this.nodeDblClick)) || isFocusable(target) ||\n (!isContent(target) && !isLoadMoreButton(target)) || !hasParent(target, this.element.nativeElement)) {\n return;\n }\n const index = nodeId(closestNode(target));\n // the disabled check is probably not needed due to the k-disabled styles\n if (!index || this.navigationService.isDisabled(index)) {\n return;\n }\n this.ngZone.run(() => {\n // record this value before emitting selectionChange (`this.navigationService.selectIndex`), as the treeview state may be changed on its emission\n const lookup = this.treeViewLookupService.itemLookup(index);\n if (e.type === 'click') {\n const loadMoreButton = this.navigationService.model.findNode(index).loadMoreButton;\n if (loadMoreButton) {\n this.navigationService.notifyLoadMore(index);\n return;\n }\n else {\n this.navigationService.selectIndex(index);\n }\n }\n const emitter = e.type === 'dblclick' ? this.nodeDblClick : this.nodeClick;\n emitter.emit({\n item: lookup.item,\n originalEvent: e,\n type: e.type\n });\n });\n }\n keydownHandler(e) {\n if (this.isActive && this.navigable) {\n this.ngZone.run(() => {\n this.navigationService.move(e);\n });\n }\n }\n verifyLoadMoreService() {\n if (isDevMode() && !isPresent(this.loadMoreService)) {\n throw new Error(`To use the TreeView paging functionality, you need to assign the \\`kendoTreeViewLoadMore\\` directive. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n }\n registerLookupItems(data, parentItem = null) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex(parentItem);\n const treeItems = data.map((node, index) => buildTreeItem(node, index, parentIndex));\n if (isPresent(parentItem)) {\n this.treeViewLookupService.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.treeViewLookupService.registerItem(item, parentItem);\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem)\n .subscribe(children => this.registerLookupItems(children, item));\n }\n });\n }\n}\nTreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ExpandStateService }, { token: NavigationService }, { token: NodeChildrenService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DataChangeNotificationService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewComponent, selector: \"kendo-treeview\", inputs: { filterInputPlaceholder: \"filterInputPlaceholder\", animate: \"animate\", nodeTemplateRef: [\"nodeTemplate\", \"nodeTemplateRef\"], loadMoreButtonTemplateRef: [\"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"], trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", hasChildren: \"hasChildren\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", isVisible: \"isVisible\", navigable: \"navigable\", children: \"children\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", size: \"size\" }, outputs: { childrenLoaded: \"childrenLoaded\", onBlur: \"blur\", onFocus: \"focus\", expand: \"expand\", collapse: \"collapse\", nodeDragStart: \"nodeDragStart\", nodeDrag: \"nodeDrag\", filterStateChange: \"filterStateChange\", nodeDrop: \"nodeDrop\", nodeDragEnd: \"nodeDragEnd\", addItem: \"addItem\", removeItem: \"removeItem\", checkedChange: \"checkedChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", nodeClick: \"nodeClick\", nodeDblClick: \"nodeDblClick\" }, host: { properties: { \"class.k-treeview\": \"this.classNames\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.direction\", \"@.disabled\": \"this.animate\" } }, providers: providers, queries: [{ propertyName: \"nodeTemplateQuery\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"loadMoreButtonTemplateQuery\", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"assetsContainer\", first: true, predicate: [\"assetsContainer\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoTreeView\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
      \n
    \n \n `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: \"kendo-textbox\", inputs: [\"focusableId\", \"title\", \"disabled\", \"readonly\", \"tabindex\", \"value\", \"selectOnFocus\", \"showSuccessIcon\", \"showErrorIcon\", \"clearButton\", \"successIcon\", \"errorIcon\", \"clearButtonIcon\", \"size\", \"rounded\", \"fillMode\", \"tabIndex\", \"placeholder\", \"maxlength\"], outputs: [\"valueChange\", \"inputFocus\", \"inputBlur\", \"focus\", \"blur\"], exportAs: [\"kendoTextBox\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: \"[kendoTextBoxPrefixTemplate]\" }], changeDetection: i0.ChangeDetectionStrategy.Default });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.Default,\n exportAs: 'kendoTreeView',\n providers: providers,\n selector: 'kendo-treeview',\n template: `\n \n \n \n \n \n \n \n
      \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: ExpandStateService }, { type: NavigationService }, { type: NodeChildrenService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DataChangeNotificationService }, { type: i1.LocalizationService }]; }, propDecorators: { classNames: [{\n type: HostBinding,\n args: [\"class.k-treeview\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], direction: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], assetsContainer: [{\n type: ViewChild,\n args: ['assetsContainer', { read: ViewContainerRef, static: true }]\n }], filterInputPlaceholder: [{\n type: Input\n }], animate: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['@.disabled']\n }], childrenLoaded: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], nodeDragStart: [{\n type: Output\n }], nodeDrag: [{\n type: Output\n }], filterStateChange: [{\n type: Output\n }], nodeDrop: [{\n type: Output\n }], nodeDragEnd: [{\n type: Output\n }], addItem: [{\n type: Output\n }], removeItem: [{\n type: Output\n }], checkedChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], nodeClick: [{\n type: Output\n }], nodeDblClick: [{\n type: Output\n }], nodeTemplateQuery: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], nodeTemplateRef: [{\n type: Input,\n args: ['nodeTemplate']\n }], loadMoreButtonTemplateQuery: [{\n type: ContentChild,\n args: [LoadMoreButtonTemplateDirective, { static: false }]\n }], loadMoreButtonTemplateRef: [{\n type: Input,\n args: ['loadMoreButtonTemplate']\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], navigable: [{\n type: Input\n }], children: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nconst indexChecked = (keys, index) => keys.filter(k => k === index).length > 0;\nconst matchKey = index => k => {\n if (index === k) {\n return true;\n }\n if (!k.split) {\n return false;\n }\n return k.split('_').reduce(({ key, result }, part) => {\n key += part;\n if (index === key || result) {\n return { result: true };\n }\n key += \"_\";\n return { key, result: false };\n }, { key: \"\", result: false }).result;\n};\n/**\n * A directive which manages the in-memory checked state of the TreeView node\n * ([see example]({% slug checkboxes_treeview %})).\n */\nclass CheckDirective {\n constructor(treeView, zone) {\n this.treeView = treeView;\n this.zone = zone;\n /**\n * Fires when the `checkedKeys` collection was updated.\n */\n this.checkedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.checkActions = {\n 'multiple': (e) => this.checkMultiple(e),\n 'single': (e) => this.checkSingle(e)\n };\n /**\n * Reflectes the internal `checkedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe((e) => this.check(e)));\n let expandedItems = [];\n this.subscriptions.add(this.treeView.childrenLoaded\n .pipe(filter(() => this.options.checkChildren && this.treeView.loadOnDemand), tap(item => expandedItems.push(item)), switchMap(() => this.zone.onStable.pipe(take(1))))\n .subscribe(() => this.addCheckedItemsChildren(expandedItems)));\n this.treeView.isChecked = this.isItemChecked.bind(this);\n }\n /**\n * @hidden\n */\n set isChecked(value) {\n this.treeView.isChecked = value;\n }\n get options() {\n const defaultOptions = {\n checkChildren: true,\n checkParents: true,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.checkable) || typeof this.checkable === 'string') {\n return defaultOptions;\n }\n const checkSettings = isBoolean(this.checkable)\n ? { enabled: this.checkable }\n : this.checkable;\n return Object.assign(defaultOptions, checkSettings);\n }\n ngOnChanges(changes) {\n if (changes.checkable) {\n this.treeView.checkboxes = this.options.enabled;\n this.toggleCheckOnClick();\n }\n if (isChanged('checkedKeys', changes, false) && changes.checkedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.checkedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n isItemChecked(dataItem, index) {\n if (!this.checkKey) {\n return this.isIndexChecked(index);\n }\n const hasKey = this.state.has(this.itemKey({ dataItem, index }));\n return hasKey ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = Array.from(this.state).filter(matchKey(index));\n if (indexChecked(checkedKeys, index)) {\n return 'checked';\n }\n const { mode, checkParents } = this.options;\n if (mode === 'multiple' && checkParents && checkedKeys.length) {\n return 'indeterminate';\n }\n return 'none';\n }\n itemKey(item) {\n if (!isPresent(this.checkKey)) {\n return item.index;\n }\n if (typeof this.checkKey === \"string\" && isPresent(item.dataItem)) {\n return item.dataItem[this.checkKey];\n }\n if (typeof this.checkKey === \"function\") {\n return this.checkKey(item);\n }\n }\n check(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.checkActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n checkSingle(node) {\n const key = this.itemKey(node.item);\n const hasKey = this.state.has(key);\n this.state.clear();\n if (!hasKey) {\n this.state.add(key);\n }\n this.notify();\n }\n checkMultiple(node) {\n this.checkNode(node);\n if (this.options.checkParents) {\n this.checkParents(node.parent);\n }\n this.notify();\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.options.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.subscribe(args => {\n if (args.type === 'click') {\n const lookup = this.treeView.itemLookup(args.item.index);\n this.check(lookup);\n }\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(node) {\n if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {\n return;\n }\n const currentKey = this.itemKey(node.item);\n if (!isPresent(currentKey)) {\n return;\n }\n const pendingCheck = [currentKey];\n if (this.options.checkChildren) {\n const descendants = fetchLoadedDescendants(node, ({ item }) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index))\n .map(({ item }) => this.itemKey(item));\n pendingCheck.push(...descendants);\n }\n const shouldCheck = !this.state.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n this.state.add(key);\n }\n else {\n this.state.delete(key);\n }\n });\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));\n if (allChildrenSelected) {\n this.state.add(parentKey);\n }\n else {\n this.state.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.checkedKeysChange.emit(this.lastChange);\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.state.size;\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!this.state.has(itemKey)) {\n return;\n }\n lookup.children.forEach(item => {\n // ensure both the parent item and each child node is enabled\n if (!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index)) {\n this.state.add(this.itemKey(item));\n }\n });\n });\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== this.state.size;\n if (hasNewlyCheckedItems) {\n this.zone.run(() => this.notify());\n }\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: TreeViewComponent }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoTreeViewCheckable]\", inputs: { isChecked: \"isChecked\", checkKey: [\"checkBy\", \"checkKey\"], checkedKeys: \"checkedKeys\", checkable: [\"kendoTreeViewCheckable\", \"checkable\"] }, outputs: { checkedKeysChange: \"checkedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewCheckable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.NgZone }]; }, propDecorators: { isChecked: [{\n type: Input\n }], checkKey: [{\n type: Input,\n args: [\"checkBy\"]\n }], checkedKeys: [{\n type: Input\n }], checkable: [{\n type: Input,\n args: ['kendoTreeViewCheckable']\n }], checkedKeysChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nclass DisableDirective {\n constructor(treeView, cdr) {\n this.treeView = treeView;\n this.cdr = cdr;\n /**\n * Defines the collection that will store the disabled keys.\n */\n this.disabledKeys = [];\n this.treeView.isDisabled = (dataItem, index) => (this.disabledKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isDisabled(value) {\n this.treeView.isDisabled = value;\n }\n ngOnChanges(changes = {}) {\n const { disabledKeys } = changes;\n if (disabledKeys && !disabledKeys.firstChange) {\n this.cdr.markForCheck();\n }\n }\n itemKey(e) {\n if (!this.disableKey) {\n return e.index;\n }\n if (typeof this.disableKey === \"string\") {\n return e.dataItem[this.disableKey];\n }\n if (typeof this.disableKey === \"function\") {\n return this.disableKey(e);\n }\n }\n}\nDisableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, deps: [{ token: TreeViewComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nDisableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DisableDirective, selector: \"[kendoTreeViewDisable]\", inputs: { isDisabled: \"isDisabled\", disableKey: [\"kendoTreeViewDisable\", \"disableKey\"], disabledKeys: \"disabledKeys\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewDisable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { isDisabled: [{\n type: Input\n }], disableKey: [{\n type: Input,\n args: [\"kendoTreeViewDisable\"]\n }], disabledKeys: [{\n type: Input\n }] } });\n\nconst DEFAULT_FILTER_EXPAND_SETTINGS = {\n maxAutoExpandResults: -1,\n expandMatches: false,\n expandedOnClear: \"none\"\n};\n/**\n * A directive which manages the expanded state of the TreeView.\n * ([see example]({% slug expandedstate_treeview %})).\n */\nclass ExpandDirective {\n constructor(component) {\n this.component = component;\n /**\n * Whether or not to auto-expand the nodes leading from the root node to each filter result.\n * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.\n * @default false\n */\n this.expandOnFilter = false;\n /**\n * Fires when the `expandedKeys` collection was updated.\n */\n this.expandedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n /**\n * Reflectes the internal `expandedKeys` state.\n */\n this.state = new Set();\n this.originalExpandedKeys = new Set();\n this.isFiltered = false;\n /**\n * Fills array with the correct expand keys according to wrapper metadata.\n */\n this.updateExpandedNodes = (collection, node, autoExpandMatches) => {\n if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.updateExpandedNodes(collection, child, autoExpandMatches);\n });\n }\n };\n /**\n * Fills array with the expand key of every node.\n */\n this.getEveryExpandKey = (collection, node) => {\n if (isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.getEveryExpandKey(collection, child);\n });\n }\n };\n this.subscriptions.add(merge(this.component.expand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.component.collapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleExpand.bind(this)));\n if (this.component.filterStateChange) {\n this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));\n }\n this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({ dataItem, index }));\n }\n /**\n * @hidden\n */\n set isExpanded(value) {\n this.component.isExpanded = value;\n }\n get filterExpandSettings() {\n const settings = isBoolean(this.expandOnFilter) ? { enabled: this.expandOnFilter } : Object.assign(Object.assign({}, this.expandOnFilter), { enabled: true });\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n ngOnChanges(changes) {\n if (isChanged('expandedKeys', changes, false) && changes.expandedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.expandedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n itemKey(e) {\n if (this.expandKey) {\n if (typeof this.expandKey === \"string\") {\n return e.dataItem[this.expandKey];\n }\n if (typeof this.expandKey === \"function\") {\n return this.expandKey(e);\n }\n }\n return e.index;\n }\n toggleExpand({ index, dataItem, expand }) {\n const key = this.itemKey({ index, dataItem });\n const isExpanded = this.state.has(key);\n let notify = false;\n if (isExpanded && !expand) {\n this.state.delete(key);\n notify = true;\n }\n else if (!isExpanded && expand) {\n this.state.add(key);\n notify = true;\n }\n if (notify) {\n this.notify();\n }\n }\n handleAutoExpand({ nodes, matchCount, term }) {\n if (!this.filterExpandSettings.enabled) {\n return;\n }\n const { maxAutoExpandResults, expandMatches: autoExpandMatches, expandedOnClear } = this.filterExpandSettings;\n if (!this.isFiltered) {\n this.originalExpandedKeys = new Set(this.state);\n }\n const exitingFilteredState = this.isFiltered && !term;\n const maxExceeded = maxAutoExpandResults !== -1 && matchCount > maxAutoExpandResults;\n const exitAutoExpandedState = exitingFilteredState || maxExceeded;\n if (exitAutoExpandedState) {\n switch (expandedOnClear) {\n case \"initial\": {\n if (!sameValues(this.state, this.originalExpandedKeys)) {\n this.state = this.originalExpandedKeys;\n this.notify();\n }\n break;\n }\n case \"all\": {\n this.state = new Set(nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []));\n this.notify();\n break;\n }\n case \"unchanged\": {\n break;\n }\n case \"none\":\n default: {\n if (this.state.size !== 0) {\n this.state.clear();\n this.notify();\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = new Set(nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []));\n if (!sameValues(this.state, indicesToExpand)) {\n this.state = indicesToExpand;\n this.notify();\n }\n this.isFiltered = true;\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.expandedKeysChange.emit(this.lastChange);\n }\n}\nExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, deps: [{ token: ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandDirective, selector: \"[kendoTreeViewExpandable]\", inputs: { isExpanded: \"isExpanded\", expandKey: [\"expandBy\", \"expandKey\"], expandOnFilter: \"expandOnFilter\", expandedKeys: \"expandedKeys\" }, outputs: { expandedKeysChange: \"expandedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewExpandable]' }]\n }], ctorParameters: function () { return [{ type: ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input\n }], expandKey: [{\n type: Input,\n args: [\"expandBy\"]\n }], expandOnFilter: [{\n type: Input\n }], expandedKeysChange: [{\n type: Output\n }], expandedKeys: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nclass SelectDirective {\n constructor(treeView) {\n this.treeView = treeView;\n /**\n * Fires when the `selectedKeys` collection was updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.selectActions = {\n 'multiple': (e) => this.selectMultiple(e),\n 'single': (e) => this.selectSingle(e)\n };\n /**\n * Reflectes the internal `selectedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => (this.state.has(this.itemKey({ dataItem, index })));\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n get getAriaMultiselectable() {\n return this.options.mode === 'multiple';\n }\n get options() {\n const defaultOptions = {\n enabled: true,\n mode: 'single'\n };\n if (!isPresent(this.selection) || typeof this.selection === 'string') {\n return defaultOptions;\n }\n const selectionSettings = isBoolean(this.selection) ? { enabled: this.selection } : this.selection;\n return Object.assign(defaultOptions, selectionSettings);\n }\n ngOnChanges(changes) {\n if (isChanged('selectedKeys', changes, false) && changes.selectedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.selectedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n itemKey(e) {\n if (!this.selectKey) {\n return e.index;\n }\n if (typeof this.selectKey === 'string') {\n return e.dataItem[this.selectKey];\n }\n if (typeof this.selectKey === 'function') {\n return this.selectKey(e);\n }\n }\n select(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.selectActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n selectSingle(node) {\n const key = this.itemKey(node);\n if (!this.state.has(key)) {\n this.state.clear();\n this.state.add(key);\n this.notify();\n }\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const isSelected = this.state.has(key);\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.state.delete(key);\n }\n else {\n this.state.add(key);\n }\n this.notify();\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.selectedKeysChange.emit(this.lastChange);\n }\n}\nSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: { isSelected: \"isSelected\", selectKey: [\"selectBy\", \"selectKey\"], selection: [\"kendoTreeViewSelectable\", \"selection\"], selectedKeys: \"selectedKeys\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" }, host: { properties: { \"attr.aria-multiselectable\": \"this.getAriaMultiselectable\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewSelectable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { isSelected: [{\n type: Input\n }], selectKey: [{\n type: Input,\n args: ['selectBy']\n }], selection: [{\n type: Input,\n args: ['kendoTreeViewSelectable']\n }], selectedKeys: [{\n type: Input\n }], selectedKeysChange: [{\n type: Output\n }], getAriaMultiselectable: [{\n type: HostBinding,\n args: ['attr.aria-multiselectable']\n }] } });\n\n/**\n * Describes the attempted drop action during dragging.\n * Passed as `action` value to the [`kendoTreeViewDragClueTemplate`]({% slug api_treeview_dragcluetemplatedirective %}) directive.\n * By default, this value defines the rendered icon in the drag clue.\n */\nvar DropAction;\n(function (DropAction) {\n DropAction[DropAction[\"Add\"] = 0] = \"Add\";\n DropAction[DropAction[\"InsertTop\"] = 1] = \"InsertTop\";\n DropAction[DropAction[\"InsertBottom\"] = 2] = \"InsertBottom\";\n DropAction[DropAction[\"InsertMiddle\"] = 3] = \"InsertMiddle\";\n DropAction[DropAction[\"Invalid\"] = 4] = \"Invalid\";\n})(DropAction || (DropAction = {}));\n\n/**\n * Describes where the dragged item is dropped relative to the drop target item.\n */\nvar DropPosition;\n(function (DropPosition) {\n DropPosition[DropPosition[\"Over\"] = 0] = \"Over\";\n DropPosition[DropPosition[\"Before\"] = 1] = \"Before\";\n DropPosition[DropPosition[\"After\"] = 2] = \"After\";\n})(DropPosition || (DropPosition = {}));\n\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Up\"] = -1] = \"Up\";\n ScrollDirection[ScrollDirection[\"Down\"] = 1] = \"Down\";\n})(ScrollDirection || (ScrollDirection = {}));\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.\n */\nclass TreeItemDropEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer, originalEvent) {\n super();\n /**\n * @hidden\n */\n this.isValid = true;\n Object.assign(this, initializer);\n this.originalEvent = originalEvent;\n }\n /**\n * Specifies if the drop action should be marked as valid.\n * If set to `false`, the [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events will not be fired and the drag clue\n * will be animated back to the source item to indicate the action is marked as invalid.\n */\n setValid(isValid) {\n this.isValid = isValid;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.\n */\nclass TreeItemDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer) {\n super();\n Object.assign(this, initializer);\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag) and\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend) events.\n */\nclass TreeItemDragEvent {\n /** @hidden */\n constructor() { }\n}\n\n/**\n * Checks if the browser supports relative stacking context.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!(isDocumentAvailable() && isPresent(document.body))) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * Stores the result of the passed function's first invokation and returns it instead of invoking it again afterwards.\n */\nfunction memoize(fn) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fn(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n *\n * Gets the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the `fixed` children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n *\n * If no parent container is `transform`-ed the function will return `{ left: 0, top: 0 }`;\n */\nconst getContainerOffset = (element) => {\n if (!(element && hasRelativeStackingContext())) {\n return { left: 0, top: 0 };\n }\n let offsetParent = element.parentElement;\n while (offsetParent) {\n if (window.getComputedStyle(offsetParent).transform !== 'none') {\n break;\n }\n offsetParent = offsetParent.parentElement;\n }\n if (offsetParent) {\n const rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n return { left: 0, top: 0 };\n};\n/**\n * @hidden\n */\nconst getDropAction = (dropPosition, dropTarget) => {\n if (!(isPresent(dropPosition) && isPresent(dropTarget))) {\n return DropAction.Invalid;\n }\n switch (dropPosition) {\n case DropPosition.Over:\n return DropAction.Add;\n case DropPosition.Before:\n return isPresent(closestNode(dropTarget).previousElementSibling) ? DropAction.InsertMiddle : DropAction.InsertTop;\n case DropPosition.After:\n return isPresent(closestNode(dropTarget).nextElementSibling) ? DropAction.InsertMiddle : DropAction.InsertBottom;\n default:\n return DropAction.Invalid;\n }\n};\n/**\n * @hidden\n */\nconst getDropPosition = (draggedItem, target, clientY, targetTreeView, containerOffset) => {\n if (!(isPresent(draggedItem) && isPresent(target) && isPresent(targetTreeView) && isPresent(containerOffset))) {\n return;\n }\n // the .k-treeview-mid element starts just after the checkbox/expand arrow and stretches till the end of the treeview on the right\n const item = closestWithMatch(target, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-treeview-leaf:not(.k-treeview-load-more-button)) holds just the treeview item text\n const content = getContentElement(item);\n const targetChildOfDraggedItem = hasParent(item, closestNode(draggedItem));\n if (!isPresent(content) || (content === draggedItem) || targetChildOfDraggedItem) {\n return;\n }\n const itemViewPortCoords = content.getBoundingClientRect();\n /*\n if the user is hovering a treeview item, split the item height into four parts:\n - dropping into the top quarter should insert the dragged item before the drop target\n - dropping into the bottom quarter should insert the dragged item after the drop target\n - dropping into the second or third quarter should add the item as child node of the drop target\n\n if the user is NOT hovering a treeview item (he's dragging somewhere on the right), split the item height to just two parts:\n - dropping should insert before or after\n */\n const itemDivisionHeight = itemViewPortCoords.height / (isContent(target) ? 4 : 2);\n // clear any possible container offset created by parent elements with `transform` css property set\n const pointerPosition = clientY - containerOffset.top;\n const itemTop = itemViewPortCoords.top - containerOffset.top;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n return DropPosition.Before;\n }\n if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n return DropPosition.After;\n }\n return DropPosition.Over;\n};\n/**\n * @hidden\n */\nconst treeItemFromEventTarget = (treeView, dropTarget) => {\n if (!(isPresent(treeView) && isPresent(dropTarget))) {\n return null;\n }\n const node = closestNode(dropTarget);\n const index = nodeId(node);\n const lookup = treeView.itemLookup(index);\n if (!(isPresent(lookup) && isPresent(lookup.item.dataItem))) {\n return null;\n }\n return lookup;\n};\n/**\n * @hidden\n *\n * Emits `collapse` on the specified TreeView node if the latter is left empty after its last child node was dragged out.\n */\nconst collapseEmptyParent = (parent, parentNodes, treeview) => {\n if (isPresent(parent) && parentNodes.length === 0 && treeview.isExpanded(parent.item.dataItem, parent.item.index)) {\n treeview.collapseNode(parent.item.dataItem, parent.item.index);\n }\n};\n/**\n * @hidden\n *\n * Expands the node if it's dropped into and it's not yet expanded.\n */\nconst expandDropTarget = (dropTarget, treeView) => {\n if (!treeView.isExpanded(dropTarget.item.dataItem, dropTarget.item.index)) {\n treeView.expandNode(dropTarget.item.dataItem, dropTarget.item.index);\n }\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementFromPoint))) {\n return event.target;\n }\n return document.elementFromPoint(event.clientX, event.clientY);\n};\n/**\n * @hidden\n *\n * Checks if the original index is before the new one and corrects the new one by decrementing the index for the level, where the original item stood.\n */\nconst updateMovedItemIndex = (newIndex, originalIndex) => {\n const movedItemNewIndexParts = newIndex.split('_');\n const originalItemIndexParts = originalIndex.split('_');\n // if the original item was moved from a deeper level, there's no need for index correction\n // e.g. 4_0_1 is moved to 5_0 => removing 4_0_1 will not cause 5_0 to be moved\n if (movedItemNewIndexParts.length < originalItemIndexParts.length) {\n return newIndex;\n }\n // check if the parent item paths are the same - index correction is not required when the original item path differs from the path of the moved item - they belong to different hierarchies\n // e.g. 4_1 is moved to 5_1 - the parent item paths are differen (4 compared to 5) => removing 4_1 will not cause 5_1 to be moved\n // e.g 4_1 is moved to 4_3 - the parent paths are the same (both 4) => removing 4_1 will cause 4_3 to be moved\n const originalItemParentPathLength = originalItemIndexParts.length - 1;\n const originalItemParentPath = originalItemIndexParts.slice(0, originalItemParentPathLength).join('_');\n const movedItemParentPath = movedItemNewIndexParts.slice(0, originalItemParentPathLength).join('_');\n // check if the the index of the level where the original item is taken from is greater than the one of the moved item\n // e.g. 4_5 is moved to 4_1 (comapre 5 and 1) => removing 4_5 will not cause 4_1 to be moved\n // e.g. 4_1 is moved to 4_5 (comapre 1 and 5) => removing 4_1 will cause 4_5 to be moved\n const originalItemIndexLevel = originalItemIndexParts.length - 1;\n const originalItemLevelIndex = Number(originalItemIndexParts[originalItemIndexLevel]);\n const movedItemLevelIndex = Number(movedItemNewIndexParts[originalItemIndexLevel]);\n if ((originalItemParentPath === movedItemParentPath) && (movedItemLevelIndex > originalItemLevelIndex)) {\n // if the removed item causes the dropped item to be moved a position up - decrement the index at that level\n movedItemNewIndexParts[originalItemIndexLevel] = String(movedItemLevelIndex - 1);\n return movedItemNewIndexParts.join('_');\n }\n return newIndex;\n};\n/**\n * @hidden\n */\nconst SCROLLBAR_REG_EXP = new RegExp('(auto|scroll)');\n/**\n * @hidden\n *\n * Retrives the first scrollable element starting the search from the provided one, traversing to the top of the DOM tree.\n */\nconst getScrollableContainer = (node) => {\n while (isPresent(node) && node.nodeName !== 'HTML') {\n const hasOverflow = node.scrollHeight > node.clientHeight;\n const hasScrollbar = SCROLLBAR_REG_EXP.test(getComputedStyle(node).overflowY);\n if (hasOverflow && hasScrollbar) {\n return node;\n }\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n *\n * Checks if the top of the scrollable element is reached.\n * Floors the scrollTop value.\n */\nconst isTopReached = (element) => Math.floor(element.scrollTop) <= 0;\n/**\n * @hidden\n *\n * Checks if the bottom of the scrollable element is reached.\n * Ceils the scrollTop value.\n */\nconst isBottomReached = (element) => Math.ceil(element.scrollTop) >= element.scrollHeight - element.clientHeight;\n/**\n * @hidden\n *\n * Scrolls the element in the given direction by the provided step.\n *\n * If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),\n * increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.\n *\n * Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.\n */\nconst scrollElementBy = (element, step, direction) => {\n if (!(isPresent(element) && isDocumentAvailable())) {\n return;\n }\n const initialScrollTop = element.scrollTop;\n let currentStep = step;\n let iterations = 0;\n while (initialScrollTop === element.scrollTop &&\n !(direction === ScrollDirection.Up && isTopReached(element)) &&\n !(direction === ScrollDirection.Down && isBottomReached(element)) &&\n iterations < 20 // as the bulgarian saying goes - to ties our underpants\n ) {\n element.scrollTop += (currentStep * direction);\n currentStep += 1;\n iterations += 1;\n }\n};\n\n/**\n * @hidden\n */\nconst copyPageSize = (treeview, source, target) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const sourceGroupSize = treeview.getNodePageSize(source);\n treeview.setNodePageSize(target, sourceGroupSize);\n};\n/**\n * @hidden\n */\nconst incrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize + 1);\n};\n/**\n * @hidden\n */\nconst decrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize - 1);\n};\n\n/**\n * @hidden\n */\nclass HierarchyEditingService {\n constructor(hierarchyBinding) {\n this.hierarchyBinding = hierarchyBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationChildren = this.childrenFor(getDataItem(destinationItem));\n // add the moved node just before the load more button if load more is enabled\n const targetIndex = isPresent(destinationTree.loadMoreService) ?\n Math.min(destinationTree.loadMoreService.getGroupSize(getDataItem(destinationItem)), destinationChildren.length) : // the page size might be greater than the actual children array length\n destinationChildren.length;\n destinationChildren.splice(targetIndex, 0, clonedSourceDataItem);\n setter(this.hierarchyBinding.childrenField)(getDataItem(destinationItem), destinationChildren);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, targetIndex);\n }\n else {\n const destinationParentNodes = this.getParentNodes(destinationItem, destinationTree);\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = destinationParentNodes.indexOf(getDataItem(destinationItem)) + shiftIndex;\n destinationParentNodes.splice(targetIndex, 0, clonedSourceDataItem);\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n this.movedItemNewIndex = buildTreeIndex(parentIndex, targetIndex);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceParentNodes = this.getParentNodes(sourceItem, sourceTree);\n const sourceItemIndex = sourceParentNodes.indexOf(getDataItem(sourceItem));\n sourceParentNodes.splice(sourceItemIndex, 1);\n // emit collapse for the parent node if its last child node was spliced\n collapseEmptyParent(sourceItem.parent, sourceParentNodes, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n getParentNodes(node, treeView) {\n return isPresent(node.parent) ?\n this.childrenFor(getDataItem(node.parent)) :\n treeView.nodes;\n }\n childrenFor(dataItem) {\n return getter(this.hierarchyBinding.childrenField)(dataItem) || [];\n }\n}\n\n/**\n * @hidden\n */\nconst DEFAULT_FILTER_SETTINGS = {\n operator: 'contains',\n ignoreCase: true,\n mode: \"lenient\"\n};\n\n/**\n * @hidden\n */\nclass FilteringBase {\n constructor(component) {\n this.component = component;\n this.visibleNodes = new Set();\n this._filterSettings = DEFAULT_FILTER_SETTINGS;\n }\n /**\n * The settings which are applied when performing a filter on the component's data.\n */\n set filterSettings(settings) {\n this._filterSettings = Object.assign(Object.assign({}, DEFAULT_FILTER_SETTINGS), settings);\n }\n get filterSettings() {\n return this._filterSettings;\n }\n /**\n * Applies a filter and changes the visibility of the component's nodes accordingly.\n */\n set filter(term) {\n this.handleFilterChange(term);\n }\n /**\n * @hidden\n */\n handleFilterChange(term) {\n if (!this.filterData) {\n return;\n }\n this.resetNodesVisibility(this.filterData);\n if (term) {\n filterTree(this.filterData, term, this.filterSettings, this.component.textField);\n }\n this.updateVisibleNodes(this.filterData);\n if (isPresent(this.component.filterStateChange)) {\n this.component.filterStateChange.emit({\n nodes: this.filterData,\n matchCount: this.visibleNodes.size,\n term,\n filterSettings: this.filterSettings\n });\n }\n }\n updateVisibleNodes(items) {\n items.forEach((wrapper) => {\n if (wrapper.visible) {\n this.visibleNodes.add(wrapper.dataItem);\n }\n if (wrapper.children) {\n this.updateVisibleNodes(wrapper.children);\n }\n });\n }\n resetNodesVisibility(items) {\n this.visibleNodes.clear();\n items.forEach((wrapper) => {\n wrapper.visible = true;\n if (wrapper.children) {\n this.resetNodesVisibility(wrapper.children);\n }\n });\n }\n}\nFilteringBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilteringBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilteringBase, inputs: { filterSettings: \"filterSettings\", filter: \"filter\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { filterSettings: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DragClueComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.hostClasses = true;\n this.posistionStyle = 'fixed';\n }\n get statusIconClass() {\n switch (this.action) {\n case DropAction.Add: return 'k-i-plus';\n case DropAction.InsertTop: return 'k-i-insert-up';\n case DropAction.InsertBottom: return 'k-i-insert-down';\n case DropAction.InsertMiddle: return 'k-i-insert-middle';\n case DropAction.Invalid:\n default: return 'k-i-cancel';\n }\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.cdr.detectChanges();\n }\n}\nDragClueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDragClueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueComponent, selector: \"kendo-treeview-drag-clue\", host: { properties: { \"class.k-header\": \"this.hostClasses\", \"class.k-drag-clue\": \"this.hostClasses\", \"style.position\": \"this.posistionStyle\" } }, ngImport: i0, template: `\n \n \n {{text}}\n \n\n \n
    \n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drag-clue',\n template: `\n \n \n {{text}}\n \n\n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-header']\n }, {\n type: HostBinding,\n args: ['class.k-drag-clue']\n }], posistionStyle: [{\n type: HostBinding,\n args: ['style.position']\n }] } });\n\n/**\n * @hidden\n */\nclass DragAndDropAssetService {\n get componentRef() {\n if (!isPresent(this._componentRef)) {\n throw new Error('The `initalize` method must be called before calling other service methods.');\n }\n return this._componentRef;\n }\n set componentRef(componentRef) {\n this._componentRef = componentRef;\n }\n get element() {\n return this.componentRef.location.nativeElement;\n }\n ngOnDestroy() {\n if (!isPresent(this._componentRef)) {\n return;\n }\n this.element.parentElement.removeChild(this.element);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n move(left, top, offset = 0) {\n this.element.style.left = `${left + offset}px`;\n this.element.style.top = `${top + offset}px`;\n }\n}\nDragAndDropAssetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragAndDropAssetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nclass DragClueService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const clueComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DragClueComponent);\n this.componentRef = container.createComponent(clueComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this.cancelReturnAnimation();\n this.cancelScroll();\n super.ngOnDestroy();\n }\n move(left, top) {\n super.move(left, top, CLUE_OFFSET);\n }\n animateDragClueToElementPosition(target) {\n if (!(isPresent(target) && isPresent(this.element.animate))) {\n this.hide();\n return;\n }\n const targetElementViewPortCoords = target.getBoundingClientRect();\n const clueElementViewPortCoords = this.element.getBoundingClientRect();\n this.returnAnimation = this.element.animate([\n { transform: 'translate(0, 0)' },\n { transform: `translate(${targetElementViewPortCoords.left - clueElementViewPortCoords.left}px, ${targetElementViewPortCoords.top - clueElementViewPortCoords.top}px)` }\n ], RETURN_ANIMATION_DURATION);\n this.returnAnimation.onfinish = () => this.hide();\n }\n cancelReturnAnimation() {\n if (!isPresent(this.returnAnimation)) {\n return;\n }\n this.returnAnimation.cancel();\n this.returnAnimation = null;\n }\n updateDragClueData(action, sourceItem, destinationItem) {\n const dragClue = this.componentRef.instance;\n if (action === dragClue.action && dataItemsEqual(sourceItem, dragClue.sourceItem) && dataItemsEqual(destinationItem, dragClue.destinationItem)) {\n return;\n }\n dragClue.action = action;\n dragClue.sourceItem = sourceItem;\n dragClue.destinationItem = destinationItem;\n dragClue.detectChanges();\n }\n updateText(text) {\n if (text === this.componentRef.instance.text) {\n return;\n }\n this.componentRef.instance.text = text;\n this.componentRef.instance.detectChanges();\n }\n /**\n * Triggers the first scrollable parent to scroll upwards or downwards.\n * Uses setInterval, so should be called outside the angular zone.\n */\n scrollIntoView({ step, interval }) {\n this.cancelScroll();\n const scrollableContainer = getScrollableContainer(this.element);\n if (!isPresent(scrollableContainer)) {\n return;\n }\n const containerRect = scrollableContainer.getBoundingClientRect();\n const clueRect = this.element.getBoundingClientRect();\n // if the beginning of the scrollable container is above the current viewport, fall-back to 0\n const firstVisibleClientTopPart = Math.max(containerRect.top, 0);\n // start scrolling up when the first visible item is dragged over\n const topLimit = firstVisibleClientTopPart + clueRect.height;\n // if the end of the scrollable container is beneath the current viewport, fall-back to its client height\n // add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached\n const bottomLimit = firstVisibleClientTopPart + Math.min(containerRect.bottom, scrollableContainer.clientHeight);\n if (clueRect.top < topLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Up), interval);\n }\n else if (clueRect.bottom > bottomLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Down), interval);\n }\n }\n /**\n * Cancels out the on-going scroll animation, if present.\n */\n cancelScroll() {\n if (isPresent(this.scrollInterval)) {\n clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n}\nDragClueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDragClueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * @hidden\n */\nclass DropHintComponent {\n constructor(changeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n this.hostClass = true;\n this.position = 'fixed';\n this.pointerEvents = 'none';\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.changeDetectorRef.detectChanges();\n }\n}\nDropHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintComponent, selector: \"kendo-treeview-drop-hint\", host: { properties: { \"class.k-drop-hint-container\": \"this.hostClass\", \"style.position\": \"this.position\", \"style.pointer-events\": \"this.pointerEvents\" } }, ngImport: i0, template: `\n \n
    \n
    \n \n\n \n \n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drop-hint',\n template: `\n \n
    \n
    \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-drop-hint-container']\n }], position: [{\n type: HostBinding,\n args: ['style.position']\n }], pointerEvents: [{\n type: HostBinding,\n args: ['style.pointer-events']\n }] } });\n\n/**\n * @hidden\n */\nclass DropHintService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const hintComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DropHintComponent);\n this.componentRef = container.createComponent(hintComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n updateDropHintData(action, sourceItem, destinationItem) {\n const dropHint = this.componentRef.instance;\n if (action === dropHint.action && dataItemsEqual(sourceItem, dropHint.sourceItem) && dataItemsEqual(destinationItem, dropHint.destinationItem)) {\n return;\n }\n dropHint.action = action;\n dropHint.sourceItem = sourceItem;\n dropHint.destinationItem = destinationItem;\n dropHint.detectChanges();\n }\n}\nDropHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDropHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * Represents the template for the TreeView drag clue when an item is dragged. To define the clue template,\n * nest an `` tag with the `kendoTreeViewDragClueTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n *\n * The text, attempted drop action, source item and destination item are available as context variables in the template:\n *\n *\n * - `let-text=\"text\"` (`string`)\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDragClueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDragClueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueTemplateDirective, selector: \"[kendoTreeViewDragClueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragClueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView drop hint when an item is dragged. To define the hint template,\n * nest an `` tag with the `kendoTreeViewDropHintTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n * The attempted drop action, source item and destination item are available as context variables in the template:\n *\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDropHintTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDropHintTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintTemplateDirective, selector: \"[kendoTreeViewDropHintTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDropHintTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst DEFAULT_SCROLL_SETTINGS = {\n enabled: true,\n step: 1,\n interval: 1\n};\n/**\n * A directive which enables the dragging and dropping items inside the current TreeView or between multiple linked TreeView component instances\n * ([see example]({% slug draganddrop_treeview %})).\n *\n * Triggers the [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart),\n * [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag),\n * [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop),\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend),\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * events when the corresponding actions occur on the respective TreeView instance.\n */\nclass DragAndDropDirective {\n constructor(element, zone, treeview, dragClueService, dropHintService) {\n this.element = element;\n this.zone = zone;\n this.treeview = treeview;\n this.dragClueService = dragClueService;\n this.dropHintService = dropHintService;\n /**\n * Specifies whether the `removeItem` event will be fired after an item is dropped when the `ctrl` key is pressed.\n * If enabled, the `removeItem` event will not be fired on the source TreeView\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n *\n * @default false\n */\n this.allowCopy = false;\n /**\n * Specifes the TreeViewComponent instances into which dragged items from the current TreeViewComponent can be dropped\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n */\n this.dropZoneTreeViews = [];\n /**\n * Specifies the distance in pixels from the initial item pointerdown event, before the dragging is initiated.\n * The `nodeDragStart` and all consequent TreeView drag events will not be fired until the actual dragging begins.\n *\n * @default 5\n */\n this.startDragAfter = 5;\n /**\n * Controlls the auto-scrolling behavior during drag-and-drop ([see example]({% slug draganddrop_treeview %}#toc-auto-scrolling)).\n * Enbaled by default. To turn the auto-scrolling off, set this prop to `false`.\n *\n * By default, the scrolling will be performed by 1 pixel at every 1 millisecond, when the dragged item reaches the top or the bottom of the scrollable container.\n * The `step` and `interval` can be overridden by providing a `DragAndDropScrollSettings` object to this prop.\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * @hidden\n */\n this.userSelectStyle = 'none';\n /**\n * Describes the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the fixed children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\n this.containerOffset = { top: 0, left: 0 };\n this.treeview.touchActions = false;\n }\n get scrollSettings() {\n const userProvidedSettings = typeof this.autoScroll === 'boolean' ?\n { enabled: this.autoScroll } :\n this.autoScroll;\n return Object.assign({}, DEFAULT_SCROLL_SETTINGS, userProvidedSettings);\n }\n ngAfterContentInit() {\n this.initalizeDraggable();\n this.dragClueService.initialize(this.treeview.assetsContainer, this.dragClueTemplate && this.dragClueTemplate.templateRef);\n this.dropHintService.initialize(this.treeview.assetsContainer, this.dropHintTemplate && this.dropHintTemplate.templateRef);\n }\n ngOnDestroy() {\n this.draggable.destroy();\n }\n /**\n * @hidden\n */\n handlePress({ originalEvent }) {\n if (!isContent(originalEvent.target)) {\n return;\n }\n // store the drag target on press, show it only when it's actually dragged\n this.draggedItem = closestWithMatch(originalEvent.target, '.k-treeview-leaf');\n // record the current pointer down coords - copared to the `startDragAfter` value to calculate whether to initiate dragging\n this.pendingDragStartEvent = originalEvent;\n }\n /**\n * @hidden\n */\n handleDrag({ originalEvent, clientX, clientY }) {\n if (this.shouldInitiateDragStart({ clientX, clientY })) {\n this.initiateDragStart();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n if (hasObservers(this.treeview.nodeDrag)) {\n this.zone.run(() => this.notifyDrag(originalEvent, dropTarget));\n }\n const targetTreeView = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, targetTreeView, this.containerOffset);\n const dropHintAnchor = closestWithMatch(dropTarget, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n const dropAction = getDropAction(dropPosition, dropTarget);\n const sourceItem = treeItemFromEventTarget(this.treeview, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(targetTreeView, dropTarget);\n this.updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem);\n this.updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem);\n if (this.scrollSettings.enabled) {\n this.dragClueService.scrollIntoView(this.scrollSettings);\n }\n }\n /**\n * @hidden\n */\n handleRelease({ originalEvent, clientY }) {\n if (this.scrollSettings.enabled) {\n this.dragClueService.cancelScroll();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n const sourceTree = this.treeview;\n const destinationTree = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, this.getTargetTreeView(dropTarget), this.containerOffset);\n const sourceItem = treeItemFromEventTarget(sourceTree, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(destinationTree, dropTarget);\n if (isPresent(destinationItem) && isPresent(dropPosition)) {\n this.zone.run(() => this.notifyDrop({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }, originalEvent));\n }\n else {\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n if (hasObservers(this.treeview.nodeDragEnd)) {\n this.zone.run(() => this.notifyDragEnd({ sourceItem, destinationItem, originalEvent }));\n }\n this.dropHintService.hide();\n this.draggedItem = null;\n }\n updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem) {\n if (!isPresent(dropHintAnchor) || dropPosition === DropPosition.Over || !isPresent(dropPosition)) {\n this.dropHintService.hide();\n return;\n }\n const anchorViewPortCoords = dropHintAnchor.getBoundingClientRect();\n const insertBefore = dropPosition === DropPosition.Before;\n const top = insertBefore ? anchorViewPortCoords.top : (anchorViewPortCoords.top + anchorViewPortCoords.height);\n this.dropHintService.updateDropHintData(dropAction, sourceItem, destinationItem);\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dropHintService.move(anchorViewPortCoords.left - this.containerOffset.left, top - this.containerOffset.top);\n this.dropHintService.show();\n }\n updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem) {\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dragClueService.move(clientX - this.containerOffset.left, clientY - this.containerOffset.top);\n this.dragClueService.updateDragClueData(dropAction, sourceItem, destinationItem);\n this.dragClueService.show();\n }\n initalizeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n notifyDragStart(originalEvent, dropTarget) {\n const sourceItem = treeItemFromEventTarget(this.treeview, dropTarget);\n const event = new TreeItemDragStartEvent({ sourceItem, originalEvent });\n this.treeview.nodeDragStart.emit(event);\n return event;\n }\n notifyDrag(originalEvent, dropTarget) {\n const dragEvent = {\n sourceItem: treeItemFromEventTarget(this.treeview, this.draggedItem),\n destinationItem: treeItemFromEventTarget(this.getTargetTreeView(dropTarget), dropTarget),\n originalEvent\n };\n this.treeview.nodeDrag.emit(dragEvent);\n }\n notifyDrop(args, originalEvent) {\n const event = new TreeItemDropEvent(args, originalEvent);\n args.destinationTree.nodeDrop.emit(event);\n // disable the animations on drop and restore them afterwards (if they were initially turned on)\n this.disableAnimationsForNextTick(args.destinationTree);\n if (args.sourceTree !== args.destinationTree) {\n this.disableAnimationsForNextTick(args.sourceTree);\n }\n if (!event.isDefaultPrevented() && event.isValid) {\n this.dragClueService.hide();\n // order matters in a flat data binding scenario (first add, then remove)\n args.destinationTree.addItem.emit(args);\n if (!(originalEvent.ctrlKey && this.allowCopy)) {\n args.sourceTree.removeItem.emit(args);\n }\n }\n else if (event.isDefaultPrevented()) {\n // directly hide the clue if the default is prevented\n this.dragClueService.hide();\n }\n else if (!event.isValid) {\n // animate the clue back to the source item position if marked as invalid\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n }\n notifyDragEnd(dragEndEvent) {\n this.treeview.nodeDragEnd.emit(dragEndEvent);\n }\n getTargetTreeView(dropTarget) {\n const treeViewTagName = this.treeview.element.nativeElement.tagName;\n const targetTreeView = closestWithMatch(dropTarget, treeViewTagName);\n return [this.treeview, ...this.dropZoneTreeViews].find(treeView => isPresent(treeView) && treeView.element.nativeElement === targetTreeView);\n }\n disableAnimationsForNextTick(treeView) {\n // the treeView.animate getter returns `true` when the animations are turned off\n // confusing, but seems on purpose (the `animate` prop sets the value of the @.disabled host-bound attribute)\n if (treeView.animate) {\n return;\n }\n treeView.animate = false;\n this.zone.runOutsideAngular(() => setTimeout(() => treeView.animate = true));\n }\n shouldInitiateDragStart(currentPointerCoords) {\n if (!isPresent(this.pendingDragStartEvent)) {\n return false;\n }\n const distanceFromPointerDown = Math.sqrt(Math.pow((this.pendingDragStartEvent.clientX - currentPointerCoords.clientX), 2) +\n Math.pow((this.pendingDragStartEvent.clientY - currentPointerCoords.clientY), 2));\n return distanceFromPointerDown >= this.startDragAfter;\n }\n initiateDragStart() {\n if (hasObservers(this.treeview.nodeDragStart)) {\n const dragStartEvent = this.zone.run(() => this.notifyDragStart(this.pendingDragStartEvent, getDropTarget(this.pendingDragStartEvent)));\n if (dragStartEvent.isDefaultPrevented()) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n }\n this.dragClueService.cancelReturnAnimation();\n this.dragClueService.updateText(this.draggedItem.innerText);\n this.containerOffset = getContainerOffset(this.draggedItem);\n this.pendingDragStartEvent = null;\n }\n}\nDragAndDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeViewComponent }, { token: DragClueService }, { token: DropHintService }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropDirective, selector: \"[kendoTreeViewDragAndDrop]\", inputs: { allowCopy: \"allowCopy\", dropZoneTreeViews: \"dropZoneTreeViews\", startDragAfter: \"startDragAfter\", autoScroll: \"autoScroll\" }, host: { properties: { \"style.user-select\": \"this.userSelectStyle\", \"style.-ms-user-select\": \"this.userSelectStyle\", \"style.-moz-user-select\": \"this.userSelectStyle\", \"style.-webkit-user-select\": \"this.userSelectStyle\" } }, providers: [\n DragClueService,\n DropHintService\n ], queries: [{ propertyName: \"dragClueTemplate\", first: true, predicate: DragClueTemplateDirective, descendants: true }, { propertyName: \"dropHintTemplate\", first: true, predicate: DropHintTemplateDirective, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDrop]',\n providers: [\n DragClueService,\n DropHintService\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeViewComponent }, { type: DragClueService }, { type: DropHintService }]; }, propDecorators: { allowCopy: [{\n type: Input\n }], dropZoneTreeViews: [{\n type: Input\n }], startDragAfter: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragClueTemplate: [{\n type: ContentChild,\n args: [DragClueTemplateDirective, { static: false }]\n }], dropHintTemplate: [{\n type: ContentChild,\n args: [DropHintTemplateDirective, { static: false }]\n }], userSelectStyle: [{\n type: HostBinding,\n args: ['style.user-select']\n }, {\n type: HostBinding,\n args: ['style.-ms-user-select']\n }, {\n type: HostBinding,\n args: ['style.-moz-user-select']\n }, {\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }] } });\n\nconst indexBuilder$1 = new IndexBuilderService();\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder$1.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of child nodes.\n */\nclass HierarchyBindingDirective extends FilteringBase {\n constructor(component, dragAndDropDirective) {\n super(component);\n this.component = component;\n this.dragAndDropDirective = dragAndDropDirective;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n this.originalData = [];\n const shouldFilter = !isPresent(this.dragAndDropDirective);\n this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n set childrenField(value) {\n if (!value) {\n throw new Error(\"'childrenField' cannot be empty\");\n }\n this._childrenField = value;\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n this.filterData = mapToWrappers(values, this.childrenField) || [];\n this.updateVisibleNodes(this.filterData);\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n get childrenField() {\n return this._childrenField;\n }\n ngOnInit() {\n if (isPresent(this.childrenField)) {\n this.component.children = item => of(getter(this.childrenField)(item));\n this.component.hasChildren = item => {\n const children = getter(this.childrenField)(item);\n return Boolean(children && children.length);\n };\n this.component.editService = new HierarchyEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n ngOnChanges(changes) {\n if (isChanged('childrenField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n}\nHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: DataBoundComponent }, { token: DragAndDropDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HierarchyBindingDirective, selector: \"[kendoTreeViewHierarchyBinding]\", inputs: { childrenField: \"childrenField\", nodes: \"nodes\", isVisible: \"isVisible\", loadOnDemand: \"loadOnDemand\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewHierarchyBinding]' }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }, { type: DragAndDropDirective, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { childrenField: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions must have a unary.\n */\nconst compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n\n/**\n * @hidden\n */\nclass FlatEditingService {\n constructor(flatBinding) {\n this.flatBinding = flatBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationItemId = getter(this.flatBinding.idField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemId);\n const lastChildNodeIndex = this.getLastVisibleChildNodeIndex(destinationTree, this.flatBinding.originalData, getDataItem(destinationItem));\n // insert after the last visible child\n const targetIndex = lastChildNodeIndex + 1;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const focusTarget = this.fetchChildNodes(getDataItem(destinationItem), destinationTree).indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, focusTarget);\n }\n else {\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = this.flatBinding.originalData.indexOf(getDataItem(destinationItem)) + shiftIndex;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n const destinationItemParentId = getter(this.flatBinding.parentIdField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemParentId);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const parentIndex = destinationItem.parent ?\n destinationItem.parent.item.index :\n null;\n const parentContainer = destinationItem.parent ?\n this.fetchChildNodes(getDataItem(destinationItem.parent), destinationTree) :\n destinationTree.nodes;\n const focusTarget = parentContainer.indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(parentIndex, focusTarget);\n }\n if (sourceTree !== destinationTree) {\n this.addChildNodes(clonedSourceDataItem, sourceTree);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceDataItem = getDataItem(sourceItem);\n const sourceItemIndex = this.flatBinding.originalData.indexOf(sourceDataItem);\n this.flatBinding.originalData.splice(sourceItemIndex, 1);\n if (sourceTree !== destinationTree) {\n this.removeChildNodes(sourceDataItem, sourceTree);\n }\n this.rebindData();\n // emit collapse for the parent node if its last child node was spliced\n const parentChildren = sourceItem.parent ? sourceItem.parent.children : [];\n collapseEmptyParent(sourceItem.parent, parentChildren, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n addChildNodes(dataItem, source) {\n const itemChildren = this.fetchAllDescendantNodes(dataItem, source);\n this.flatBinding.originalData.push(...itemChildren);\n }\n removeChildNodes(dataItem, source) {\n const sourceChildren = this.fetchAllDescendantNodes(dataItem, source);\n sourceChildren.forEach(item => {\n const index = this.flatBinding.originalData.indexOf(item);\n this.flatBinding.originalData.splice(index, 1);\n });\n }\n fetchAllDescendantNodes(node, treeview) {\n let nodes = this.fetchChildNodes(node, treeview);\n nodes.forEach(node => nodes = nodes.concat(this.fetchAllDescendantNodes(node, treeview) || []));\n return nodes;\n }\n fetchChildNodes(node, treeview) {\n if (!node) {\n return [];\n }\n let nodes = [];\n treeview\n .children(node)\n .pipe(take(1))\n .subscribe(children => nodes = nodes.concat(children || []));\n return nodes;\n }\n getLastVisibleChildNodeIndex(treeview, data, node) {\n if (!isPresent(treeview.loadMoreService) || !treeview.hasChildren(node)) {\n return data.length;\n }\n const visibleNodesCount = treeview.loadMoreService.getGroupSize(node);\n const visibleChildren = this.fetchChildNodes(node, treeview).slice(0, visibleNodesCount);\n const lastNode = visibleChildren[visibleChildren.length - 1];\n const lastNodeIndex = data.indexOf(lastNode);\n return lastNodeIndex;\n }\n rebindData() {\n this.flatBinding.nodes = this.flatBinding.originalData;\n }\n}\n\nconst findChildren = (prop, nodes, value) => nodes.filter((x) => prop(x) === value);\nconst indexBuilder = new IndexBuilderService();\nconst mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToTree(findChildren(getter(parentIdField), allNodes || [], getter(idField)(node)), allNodes, parentIdField, idField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes.\n */\nclass FlatDataBindingDirective extends FilteringBase {\n constructor(component) {\n super(component);\n this.component = component;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n /**\n * @hidden\n */\n this.originalData = [];\n this.component.isVisible = (node) => this.visibleNodes.has(node);\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n if (!isNullOrEmptyString(this.parentIdField)) {\n const prop = getter(this.parentIdField);\n this.component.nodes = this.originalData.filter(compose(isBlank, prop));\n this.filterData = mapToTree(this.component.nodes, this.originalData, this.parentIdField, this.idField);\n this.updateVisibleNodes(this.filterData);\n }\n else {\n this.component.nodes = this.originalData.slice(0);\n }\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (isPresent(this.parentIdField) && isPresent(this.idField)) {\n const fetchChildren = (node) => findChildren(getter(this.parentIdField), this.originalData || [], getter(this.idField)(node));\n this.component.hasChildren = (node) => fetchChildren(node).length > 0;\n this.component.children = (node) => of(fetchChildren(node));\n this.component.editService = new FlatEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (isChanged('parentIdField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n}\nFlatDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFlatDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatDataBindingDirective, selector: \"[kendoTreeViewFlatDataBinding]\", inputs: { nodes: \"nodes\", parentIdField: \"parentIdField\", idField: \"idField\", loadOnDemand: \"loadOnDemand\", isVisible: \"isVisible\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: \"[kendoTreeViewFlatDataBinding]\" }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }], idField: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], isVisible: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n CheckBoxComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the CheckBox component.\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxComponent], exports: [CheckBoxComponent] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1]\n }]\n }] });\n\n/**\n * A directive which enables the update of the initially provided data array during drag-and-drop.\n *\n * Either use this directive in combination with one of the data binding directives ([`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %})\n * or [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %})) which set their own edit handlers, or provide\n * your own [`editService`]({% slug api_treeview_editservice %}) to this directive. The latter subscribes to and calls the\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * handlers when the corresponding events are triggered by the TreeView component.\n */\nclass DragAndDropEditingDirective {\n constructor(treeview) {\n this.treeview = treeview;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeview.addItem.subscribe(this.handleAdd.bind(this)));\n this.subscriptions.add(this.treeview.removeItem.subscribe(this.handleRemove.bind(this)));\n }\n /**\n * Specifies the handlers called on drag-and-drop [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem)\n * and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events.\n */\n set editService(service) {\n this.treeview.editService = service;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleAdd(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.add(args);\n }\n handleRemove(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.remove(args);\n }\n}\nDragAndDropEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropEditingDirective, selector: \"[kendoTreeViewDragAndDropEditing]\", inputs: { editService: \"editService\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDropEditing]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { editService: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\n/**\n * A directive that enables the display of only a limited amount of nodes per level\n * ([see example]({% slug loadmorebutton_treeview %})).\n */\nclass LoadMoreDirective {\n constructor(treeview) {\n this.treeview = treeview;\n /**\n * Keeps track of the current page size of each node over expand/collapse cycles.\n */\n this.pageSizes = new Map();\n /**\n * Used as an identifier for the root page size as the root collection of nodes is not associated with a data item.\n */\n this.rootLevelId = guid();\n this.treeview.loadMoreService = {\n getInitialPageSize: this.getInitalPageSize.bind(this),\n getGroupSize: this.getGroupSize.bind(this),\n setGroupSize: this.setGroupSize.bind(this),\n getTotalNodesCount: this.getTotalNodesCount.bind(this)\n };\n }\n /**\n * Specifies the callback that will be called when the load more button is clicked.\n * Providing a function is only required when additional nodes are fetched on demand\n * ([see example]({% slug loadmorebutton_treeview %}#toc-remote-data)).\n */\n set loadMoreNodes(loadMoreNodes) {\n if (typeof loadMoreNodes === 'string') {\n return;\n }\n this.treeview.loadMoreService.loadMoreNodes = loadMoreNodes;\n }\n ngOnChanges() {\n this.verifySettings();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.pageSize)) {\n throw new Error(`To use the TreeView \\`kendoTreeViewLoadMore\\` directive, you need to assign a \\`pageSize\\` value. See ${LOAD_MORE_DOC_LINK}.`);\n }\n const loadMoreNodes = this.treeview.loadMoreService.loadMoreNodes;\n if (isPresent(loadMoreNodes) && typeof loadMoreNodes !== 'function') {\n throw new Error(`The passed value to the \\`kendoTreeViewLoadMore\\` directive must be a function that retrieves additional nodes. See ${LOAD_MORE_DOC_LINK}.`);\n }\n if (isPresent(loadMoreNodes) && !isPresent(this.totalField)) {\n throw new Error(`When a function to fetch additional nodes is provided to the \\`kendoTreeViewLoadMore\\` directive, the \\`totalField\\` and \\`totalRootNodes\\` values must also be provided. See ${LOAD_MORE_DOC_LINK}.`);\n }\n }\n getGroupSize(dataItem) {\n const itemKey = dataItem || this.rootLevelId;\n return this.pageSizes.has(itemKey) ? this.pageSizes.get(itemKey) : this.pageSize;\n }\n setGroupSize(dataItem, pageSize) {\n const itemKey = dataItem || this.rootLevelId;\n const normalizedSizeValue = pageSize > 0 ? pageSize : 0;\n this.pageSizes.set(itemKey, normalizedSizeValue);\n }\n getTotalNodesCount(dataItem, loadedNodesCount) {\n if (isPresent(dataItem) && isPresent(this.totalField)) {\n return dataItem[this.totalField];\n }\n else if (!isPresent(dataItem) && isPresent(this.totalRootNodes)) {\n return this.totalRootNodes;\n }\n else {\n return loadedNodesCount;\n }\n }\n getInitalPageSize() {\n return this.pageSize;\n }\n}\nLoadMoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreDirective, selector: \"[kendoTreeViewLoadMore]\", inputs: { loadMoreNodes: [\"kendoTreeViewLoadMore\", \"loadMoreNodes\"], pageSize: \"pageSize\", totalRootNodes: \"totalRootNodes\", totalField: \"totalField\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMore]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { loadMoreNodes: [{\n type: Input,\n args: ['kendoTreeViewLoadMore']\n }], pageSize: [{\n type: Input\n }], totalRootNodes: [{\n type: Input\n }], totalField: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective], imports: [CommonModule,\n CheckBoxModule,\n InputsModule], exports: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[\n CommonModule,\n CheckBoxModule,\n InputsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n imports: [\n CommonModule,\n CheckBoxModule,\n InputsModule\n ],\n entryComponents: [\n DragClueComponent,\n DropHintComponent\n ]\n }]\n }] });\n\nconst EXPORTS = [\n TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the TreeView component.\n */\nclass TreeViewModule {\n}\nTreeViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTreeViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [SharedModule], exports: [TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nTreeViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [EXPORTS],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckDirective, DataBoundComponent, DisableDirective, DragAndDropDirective, DragAndDropEditingDirective, DragClueService, DragClueTemplateDirective, DropAction, DropHintService, DropHintTemplateDirective, DropPosition, ExpandDirective, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, LoadMoreButtonTemplateDirective, LoadMoreDirective, NodeTemplateDirective, SelectDirective, TreeItemDragEvent, TreeItemDragStartEvent, TreeItemDropEvent, TreeViewComponent, TreeViewModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders, HttpRequest, HttpEventType, HttpResponse } from '@angular/common/http';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Input, HostBinding, HostListener, Component, ViewChildren, forwardRef, Inject, ContentChild, ViewChild, Output, isDevMode, NgModule } from '@angular/core';\nimport { guid, Keys, isDocumentAvailable, KendoInput, isChanged } from '@progress/kendo-angular-common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Lists the possible states of a file.\n */\nvar FileState;\n(function (FileState) {\n /**\n * The file upload process has failed.\n */\n FileState[FileState[\"Failed\"] = 0] = \"Failed\";\n /**\n * An initially selected fake file without a set state.\n */\n FileState[FileState[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n FileState[FileState[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is successfully uploaded.\n */\n FileState[FileState[\"Uploaded\"] = 3] = \"Uploaded\";\n /**\n * The file is in the process of uploading.\n */\n FileState[FileState[\"Uploading\"] = 4] = \"Uploading\";\n /**\n * The file upload process has been paused.\n */\n FileState[FileState[\"Paused\"] = 5] = \"Paused\";\n})(FileState || (FileState = {}));\n\n/**\n * @hidden\n */\nclass FileMap {\n constructor() {\n this._files = {};\n }\n add(file) {\n let uid = file.uid;\n if (this.has(uid)) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n this._files[uid].unshift(file);\n }\n else {\n this._files[uid].push(file);\n }\n }\n else {\n this._files[uid] = [file];\n }\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n clear() {\n let allFiles = this._files;\n for (let uid in allFiles) {\n if (allFiles.hasOwnProperty(uid)) {\n for (let file of allFiles[uid]) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n allFiles[uid] = null;\n delete allFiles[uid];\n }\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n setFilesState(files, state) {\n for (let file of files) {\n this.setFilesStateByUid(file.uid, state);\n }\n }\n setFilesStateByUid(uid, state) {\n this.get(uid).forEach((f) => {\n f.state = state;\n });\n }\n get count() {\n return Object.getOwnPropertyNames(this._files).length;\n }\n get files() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n transformed.push(initial[uid]);\n }\n }\n return transformed;\n }\n get filesFlat() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n let current = initial[uid];\n current.forEach((file) => {\n transformed.push(file);\n });\n }\n }\n return transformed;\n }\n get filesToUpload() {\n let files = this._files;\n let notUploaded = [];\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n notUploaded.push(currentFiles);\n }\n }\n }\n return notUploaded;\n }\n get firstFileToUpload() {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n return currentFiles;\n }\n }\n }\n return null;\n }\n getFilesWithState(state) {\n return this.filesFlat.filter(file => file.state === state);\n }\n hasFileWithState(fileStates) {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n for (let file of currentFiles) {\n if (fileStates.indexOf(file.state) >= 0) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\n/**\n * Arguments for the `cancel` event. The `cancel` event fires when\n * the user cancels the process of uploading a file or a batch of files.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n *

    Click the icon during upload to trigger the event

    \n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * cancelEventHandler(e: CancelEvent) {\n * console.log('Canceling file upload', e.files);\n * }\n * }\n * ```\n */\nclass CancelEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `cancel` event.\n * @param files - The list of the files that were going to be uploaded.\n */\n constructor(files) {\n this.files = files;\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `clear` event. The `clear` event fires when\n * the **Clear** button is clicked. At this point, the selected files are about to be cleared.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * clearEventHandler(e: ClearEvent) {\n * console.log('Clearing the file upload');\n * }\n * }\n * ```\n */\nclass ClearEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `clear` event.\n */\n constructor() { super(); }\n}\n\n/**\n * Arguments for the `error` event. The `error` event fires when\n * an `upload` or `remove` operation fails.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * errorEventHandler(e: ErrorEvent) {\n * console.log('An error occurred');\n * }\n * }\n * ```\n */\nclass ErrorEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `error` event.\n *\n * @param files - The list of the files that failed to be uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `pause` event. The `pause` event fires when the user\n * pauses a file that is currently uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * pauseEventHandler(ev: PauseEvent) {\n * console.log('File paused');\n * }\n * }\n * ```\n *\n */\nclass PauseEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `pause` event.\n * @param file - The file that is going to be paused.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `remove` event. The `remove` event fires when an uploaded\n * or selected file is about to be removed. If you cancel the event, the removal is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * removeEventHandler(e: RemoveEvent) {\n * console.log('Removing a file');\n * }\n * }\n * ```\n */\nclass RemoveEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `remove` event.\n * @param files - The list of the files that will be removed.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `resume` event. The `resume` event fires when the user\n * resumes the upload of a file that has been previously paused.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * resumeEventHandler(ev: ResumeEvent) {\n * console.log('File resumed');\n * }\n * }\n * ```\n *\n */\nclass ResumeEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `resume` event.\n * @param file - The file that is going to be resumed.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `select` event. The `select` event fires when the user\n * selects a file or multiple files for upload. If you cancel the event, the selection is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * selectEventHandler(e: SelectEvent) {\n * console.log('File selected');\n * }\n * }\n * ```\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `select` event.\n * @param files - The list of the selected files.\n */\n constructor(files) {\n super();\n this.files = files;\n }\n}\n\n/**\n * Arguments for the `success` event. The `success` event fires when\n * the selected files are successfully uploaded or removed.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * successEventHandler(e: SuccessEvent) {\n * console.log('The ' + e.operation + ' was successful!');\n * }\n * }\n * ```\n */\nclass SuccessEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `success` event.\n * @param files - The list of the files that were uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n super();\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `upload` event. The `upload` event fires when one or more files are about\n * to be uploaded. If you cancel the event, the upload is prevented. You can add headers to the request.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadEventHandler(e: UploadEvent) {\n * e.headers = e.headers.append('X-Foo', 'Bar');\n * }\n * }\n * ```\n */\nclass UploadEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `upload` event.\n * @param files - The list of the files that will be uploaded.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `uploadprogress` event. The `uploadprogress` event\n * fires when the files are in the process of uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadProgressEventHandler(e: UploadProgressEvent) {\n * console.log(e.files[0].name + ' is ' + e.percentComplete + ' uploaded');\n * }\n * }\n * ```\n */\nclass UploadProgressEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `uploadprogress` event.\n * @param files - The list of files that are being uploaded.\n * @param percentComplete - The portion that has been uploaded.\n */\n constructor(files, percentComplete) {\n this.files = files;\n this.percentComplete = percentComplete;\n }\n}\n\n/**\n * @hidden\n */\nconst fileGroupMap = {\n audio: [\n \".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"\n ],\n video: [\n \".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\", \".rm\", \".swf\", \".vob\", \".wmv\"\n ],\n image: [\n \".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\", \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"\n ],\n txt: [\n \".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"\n ],\n presentation: [\n \".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"\n ],\n data: [\n \".xlr\", \".xls\", \".xlsx\"\n ],\n programming: [\n \".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\", \".sys\", \".cfg\",\n \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\", \".php\", \".rss\", \".xhtml\"\n ],\n pdf: [\n \".pdf\"\n ],\n config: [\n \".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"\n ],\n zip: [\n \".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"\n ],\n discImage: [\n \".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"\n ]\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst getTotalFilesSizeMessage = (files) => {\n let totalSize = 0;\n let i;\n if (typeof files[0].size === \"number\") {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += files[i].size;\n }\n }\n }\n else {\n return \"\";\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + \" KB\";\n }\n else {\n return (totalSize / 1024).toFixed(2) + \" MB\";\n }\n};\nconst stripPath = (name) => {\n let slashIndex = name.lastIndexOf(\"\\\\\");\n return (slashIndex !== -1) ? name.substr(slashIndex + 1) : name;\n};\nconst getFileExtension = (fileName) => {\n const rFileExtension = /\\.([^\\.]+)$/;\n const matches = fileName.match(rFileExtension);\n return matches ? matches[0] : \"\";\n};\n/**\n * @hidden\n */\nconst validateInitialFileInfo = (file) => {\n if (file instanceof Object && file.hasOwnProperty(\"name\")) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst validateInitialFileSelectFile = (file) => {\n if (file instanceof File || validateInitialFileInfo(file)) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getInitialFileInfo = (fakeFile) => {\n fakeFile.extension = fakeFile.extension || getFileExtension(fakeFile.name);\n fakeFile.name = fakeFile.name;\n fakeFile.size = fakeFile.size || 0;\n if (!fakeFile.hasOwnProperty(\"state\")) {\n fakeFile.state = FileState.Initial;\n }\n if (!fakeFile.hasOwnProperty(\"uid\")) {\n fakeFile.uid = guid();\n }\n return fakeFile;\n};\n/**\n * @hidden\n */\nconst convertFileToFileInfo = (file) => {\n let fileInfo = getFileInfo(file);\n fileInfo.uid = guid();\n // Used to differentiate initial FileInfo objects and actual Files\n fileInfo.state = FileState.Selected;\n return fileInfo;\n};\nconst getFileInfo = (rawFile) => {\n const fileName = rawFile.name;\n const fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: fileName,\n rawFile: rawFile,\n size: fileSize,\n state: FileState.Selected\n };\n};\n/**\n * @hidden\n */\nconst getAllFileInfo = (rawFiles) => {\n let allFileInfo = new Array();\n let i;\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n return allFileInfo;\n};\n/**\n * @hidden\n */\nconst fileHasValidationErrors = (file) => {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst filesHaveValidationErrors = (files) => {\n for (let file of files) {\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst inputFiles = (input) => {\n if (input.files) {\n return getAllFileInfo(input.files);\n }\n else {\n //Required for testing\n let fileNames = input.value.split(\"|\").map((file, index) => {\n let fileName = file.trim();\n return {\n extension: getFileExtension(fileName),\n name: stripPath(fileName),\n rawFile: null,\n size: (index + 1) * 1000,\n state: FileState.Selected\n };\n });\n return fileNames;\n }\n};\n/**\n * @hidden\n */\nconst assignGuidToFiles = (files, isUnique) => {\n const uid = guid();\n return files.map((file) => {\n file.uid = isUnique ? guid() : uid;\n return file;\n });\n};\n/**\n * @hidden\n */\nconst supportsFormData = () => {\n return typeof (FormData) !== \"undefined\";\n};\n/**\n * @hidden\n */\nconst userAgent = () => {\n return navigator.userAgent;\n};\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSES = 'k-icon k-select k-input k-multiselect-wrap';\n/**\n * @hidden\n */\nconst UPLOAD_CLASSES = 'k-upload-button k-clear-selected k-upload-selected k-upload-action';\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const validTabIndex = tabIndex !== null && !isNaN(tabIndex) && tabIndex > -1;\n let focusable = false;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n else {\n focusable = validTabIndex;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getFileGroupCssClass = (fileExtension) => {\n const initial = 'k-i-file';\n for (let group in fileGroupMap) {\n if (fileGroupMap[group].indexOf(fileExtension) >= 0) {\n return `${initial}-${group}`;\n }\n }\n return initial;\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n\n/**\n * @hidden\n */\nclass ChunkMap {\n constructor() {\n this._files = {};\n }\n add(uid, totalChunks) {\n const initialChunkInfo = {\n index: 0,\n position: 0,\n retries: 0,\n totalChunks: totalChunks\n };\n this._files[uid] = initialChunkInfo;\n return initialChunkInfo;\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n}\n\n/**\n * @hidden\n */\nclass UploadService {\n constructor(http) {\n this.http = http;\n this.cancelEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.completeEvent = new EventEmitter();\n this.errorEvent = new EventEmitter();\n this.pauseEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.resumeEvent = new EventEmitter();\n this.selectEvent = new EventEmitter();\n this.successEvent = new EventEmitter();\n this.uploadEvent = new EventEmitter();\n this.uploadProgressEvent = new EventEmitter();\n /**\n * Required for the `ControlValueAccessor` integration\n */\n this.changeEvent = new EventEmitter();\n /**\n * Default async settings\n */\n this.async = {\n autoUpload: true,\n batch: false,\n chunk: false,\n concurrent: true,\n removeField: \"fileNames\",\n removeHeaders: new HttpHeaders(),\n removeMethod: \"POST\",\n removeUrl: \"\",\n responseType: \"json\",\n saveField: \"files\",\n saveHeaders: new HttpHeaders(),\n saveMethod: \"POST\",\n saveUrl: \"\",\n withCredentials: true\n };\n /**\n * Default chunk settings\n */\n this.chunk = {\n autoRetryAfter: 100,\n size: 1024 * 1024,\n maxAutoRetries: 1,\n resumable: true\n };\n this.component = 'Upload';\n this.chunkMap = new ChunkMap();\n this.fileList = new FileMap();\n }\n get files() {\n return this.fileList;\n }\n setChunkSettings(settings) {\n if (settings !== false) {\n this.async.chunk = true;\n if (typeof settings === \"object\") {\n this.chunk = Object.assign({}, this.chunk, settings);\n }\n }\n }\n onChange() {\n let files = this.fileList.filesFlat.filter((file) => {\n return file.state === FileState.Initial ||\n file.state === FileState.Uploaded;\n });\n this.changeEvent.emit(files.length > 0 ? files : null);\n }\n addFiles(files) {\n let selectEventArgs = new SelectEvent(files);\n this.selectEvent.emit(selectEventArgs);\n if (!selectEventArgs.isDefaultPrevented()) {\n for (let file of files) {\n this.fileList.add(file);\n }\n if (this.async.autoUpload) {\n this.uploadFiles();\n }\n }\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n addInitialFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n let fakeFile = getInitialFileInfo(file);\n this.fileList.add(fakeFile);\n });\n }\n addInitialFileSelectFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n if (file instanceof File) {\n this.fileList.add(convertFileToFileInfo(file));\n }\n else {\n this.fileList.add(getInitialFileInfo(file));\n }\n });\n }\n resumeFile(uid) {\n const fileToResume = this.fileList.get(uid);\n this.resumeEvent.emit(new ResumeEvent(fileToResume[0]));\n this.fileList.setFilesStateByUid(uid, FileState.Uploading);\n this._uploadFiles([fileToResume]);\n }\n pauseFile(uid) {\n let pausedFile = this.fileList.get(uid)[0];\n this.pauseEvent.emit(new PauseEvent(pausedFile));\n this.fileList.setFilesStateByUid(uid, FileState.Paused);\n }\n removeFiles(uid) {\n let removedFiles = this.fileList.get(uid);\n // Clone the Headers so that the default ones are not overridden\n let removeEventArgs = new RemoveEvent(removedFiles, this.cloneRequestHeaders(this.async.removeHeaders));\n this.removeEvent.emit(removeEventArgs);\n if (!removeEventArgs.isDefaultPrevented()) {\n if (this.component === 'Upload' &&\n (removedFiles[0].state === FileState.Uploaded ||\n removedFiles[0].state === FileState.Initial)) {\n this.performRemove(removedFiles, removeEventArgs);\n }\n else {\n this.fileList.remove(uid);\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n }\n }\n cancelFiles(uid) {\n let canceledFiles = this.fileList.get(uid);\n let cancelEventArgs = new CancelEvent(canceledFiles);\n this.cancelEvent.emit(cancelEventArgs);\n for (let file of canceledFiles) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n this.fileList.remove(uid);\n this.checkAllComplete();\n }\n clearFiles() {\n let clearEventArgs = new ClearEvent();\n this.clearEvent.emit(clearEventArgs);\n if (!clearEventArgs.isDefaultPrevented()) {\n let triggerChange = this.fileList.hasFileWithState([\n FileState.Initial,\n FileState.Uploaded\n ]);\n this.fileList.clear();\n if (triggerChange) {\n this.onChange();\n }\n }\n }\n uploadFiles() {\n let filesToUpload = [];\n if (this.async.concurrent) {\n filesToUpload = this.fileList.filesToUpload;\n }\n if (!this.async.concurrent && !this.fileList.hasFileWithState([FileState.Uploading])) {\n filesToUpload = this.fileList.firstFileToUpload ? [this.fileList.firstFileToUpload] : [];\n }\n if (filesToUpload && filesToUpload.length > 0) {\n this._uploadFiles(filesToUpload);\n }\n }\n retryFiles(uid) {\n let filesToRetry = [this.fileList.get(uid)];\n if (filesToRetry) {\n this._uploadFiles(filesToRetry);\n }\n }\n _uploadFiles(allFiles) {\n for (let filesToUpload of allFiles) {\n if (filesToUpload[0].state === FileState.Paused) {\n return;\n }\n // Clone the Headers so that the default ones are not overridden\n let uploadEventArgs = new UploadEvent(filesToUpload, this.cloneRequestHeaders(this.async.saveHeaders));\n this.uploadEvent.emit(uploadEventArgs);\n if (!uploadEventArgs.isDefaultPrevented()) {\n this.fileList.setFilesState(filesToUpload, FileState.Uploading);\n let httpSubcription = this.performUpload(filesToUpload, uploadEventArgs);\n filesToUpload.forEach((file) => {\n file.httpSubscription = httpSubcription;\n });\n }\n else {\n this.fileList.remove(filesToUpload[0].uid);\n }\n }\n }\n performRemove(files, removeEventArgs) {\n const async = this.async;\n let fileNames = files.map((file) => {\n return file.name;\n });\n let formData = this.populateRemoveFormData(fileNames, removeEventArgs.data);\n let options = this.populateRequestOptions(removeEventArgs.headers, false);\n let removeRequest = new HttpRequest(async.removeMethod, async.removeUrl, formData, options);\n this.http.request(removeRequest)\n .subscribe(success => {\n this.onSuccess(success, files, \"remove\");\n }, error => {\n this.onError(error, files, \"remove\");\n });\n }\n performUpload(files, uploadEventArgs) {\n const async = this.async;\n let formData = this.populateUploadFormData(files, uploadEventArgs.data);\n let options = this.populateRequestOptions(uploadEventArgs.headers);\n let uploadRequest = new HttpRequest(async.saveMethod, async.saveUrl, formData, options);\n let httpSubscription = this.http.request(uploadRequest)\n .subscribe(event => {\n if (event.type === HttpEventType.UploadProgress && !this.async.chunk) {\n this.onProgress(event, files);\n }\n else if (event instanceof HttpResponse) {\n this.onSuccess(event, files, \"upload\");\n this.checkAllComplete();\n }\n }, error => {\n this.onError(error, files, \"upload\");\n this.checkAllComplete();\n });\n return httpSubscription;\n }\n onSuccess(successResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n this.onChunkProgress(files);\n if (this.isChunkUploadComplete(files[0].uid)) {\n this.removeChunkInfo(files[0].uid);\n }\n else {\n this.updateChunkInfo(files[0].uid);\n this._uploadFiles([files]);\n return;\n }\n }\n const successArgs = new SuccessEvent(files, operation, successResponse);\n this.successEvent.emit(successArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, successArgs.isDefaultPrevented() ? FileState.Failed : FileState.Uploaded);\n }\n else {\n if (!successArgs.isDefaultPrevented()) {\n this.fileList.remove(files[0].uid);\n }\n }\n if (!successArgs.isDefaultPrevented()) {\n this.onChange();\n }\n }\n onError(errorResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n const maxRetries = this.chunk.maxAutoRetries;\n const chunkInfo = this.chunkMap.get(files[0].uid);\n if (chunkInfo.retries < maxRetries) {\n chunkInfo.retries += 1;\n setTimeout(() => {\n this.retryFiles(files[0].uid);\n }, this.chunk.autoRetryAfter);\n return;\n }\n }\n const errorArgs = new ErrorEvent(files, operation, errorResponse);\n this.errorEvent.emit(errorArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, FileState.Failed);\n }\n }\n onProgress(event, files) {\n const percentComplete = Math.round(100 * event.loaded / event.total);\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n onChunkProgress(files) {\n const chunkInfo = this.chunkMap.get(files[0].uid);\n let percentComplete = 0;\n if (chunkInfo) {\n if (chunkInfo.index === chunkInfo.totalChunks - 1) {\n percentComplete = 100;\n }\n else {\n percentComplete = Math.round(((chunkInfo.index + 1) / chunkInfo.totalChunks) * 100);\n }\n }\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n checkAllComplete() {\n if (!this.fileList.hasFileWithState([\n FileState.Uploading,\n FileState.Paused\n ]) && this.areAllSelectedFilesHandled()) {\n this.completeEvent.emit();\n }\n else if (this.shouldUploadNextFile()) {\n this.uploadFiles();\n }\n }\n shouldUploadNextFile() {\n return !this.async.concurrent &&\n this.fileList.hasFileWithState([FileState.Selected]) &&\n !this.fileList.hasFileWithState([FileState.Uploading]);\n }\n areAllSelectedFilesHandled() {\n const validSelectedFiles = this.fileList.getFilesWithState(FileState.Selected).filter(file => !file.validationErrors);\n return validSelectedFiles.length === 0;\n }\n cloneRequestHeaders(headers) {\n let cloned = {};\n if (headers) {\n headers.keys().forEach((key) => {\n cloned[key] = headers.get(key);\n });\n }\n return new HttpHeaders(cloned);\n }\n populateRequestOptions(headers, reportProgress = true) {\n return {\n headers: headers,\n reportProgress: reportProgress,\n responseType: this.async.responseType,\n withCredentials: this.async.withCredentials\n };\n }\n populateUploadFormData(files, clientData) {\n const saveField = this.async.saveField;\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n if (this.async.chunk) {\n data.append(saveField, this.getNextChunk(files[0]));\n data.append(\"metadata\", this.getChunkMetadata(files[0]));\n }\n else {\n for (let file of files) {\n data.append(saveField, file.rawFile);\n }\n }\n return data;\n }\n populateRemoveFormData(fileNames, clientData) {\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n for (let fileName of fileNames) {\n data.append(this.async.removeField, fileName);\n }\n return data;\n }\n populateClientFormData(data, clientData) {\n for (var key in clientData) {\n if (clientData.hasOwnProperty(key)) {\n data.append(key, clientData[key]);\n }\n }\n }\n /* Chunking Helper Methods Section */\n getNextChunk(file) {\n const info = this.getChunkInfo(file);\n const newPosition = info.position + this.chunk.size;\n return file.rawFile.slice(info.position, newPosition);\n }\n getChunkInfo(file) {\n let chunkInfo = this.chunkMap.get(file.uid);\n if (!chunkInfo) {\n const totalChunks = Math.ceil(file.size / this.chunk.size);\n chunkInfo = this.chunkMap.add(file.uid, totalChunks);\n }\n return chunkInfo;\n }\n updateChunkInfo(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo.index < chunkInfo.totalChunks - 1) {\n chunkInfo.index += 1;\n chunkInfo.position += this.chunk.size;\n chunkInfo.retries = 0;\n }\n }\n removeChunkInfo(uid) {\n this.chunkMap.remove(uid);\n }\n getChunkMetadata(file) {\n const chunkInfo = this.chunkMap.get(file.uid);\n const chunkMetadata = {\n chunkIndex: chunkInfo.index,\n contentType: file.rawFile.type,\n fileName: file.name,\n fileSize: file.size,\n fileUid: file.uid,\n totalChunks: chunkInfo.totalChunks\n };\n return JSON.stringify(chunkMetadata);\n }\n isChunkUploadComplete(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo) {\n return chunkInfo.index + 1 === chunkInfo.totalChunks;\n }\n return false;\n }\n}\nUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.onActionButtonAction = new EventEmitter();\n this.onActionButtonFocus = new EventEmitter();\n this.onFileAction = new EventEmitter();\n this.onFileFocus = new EventEmitter();\n this.onTab = new EventEmitter();\n this.onWrapperFocus = new EventEmitter();\n this.onSelectButtonFocus = new EventEmitter();\n this.actionButtonsVisible = false;\n this.focused = false;\n this._focusedIndex = -1;\n }\n action(event) {\n const key = event.keyCode;\n return this.keyBindings[key];\n }\n process(event) {\n const handler = this.action(event);\n if (handler) {\n handler(event.shiftKey);\n }\n }\n computeKeys(direction) {\n this.keyBindings = {\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Escape]: () => this.handleEscape(),\n [Keys.Delete]: () => this.handleDelete(),\n [Keys.Tab]: (shifted) => this.handleTab(shifted),\n [Keys.ArrowUp]: () => this.handleUp(),\n [Keys.ArrowDown]: () => this.handleDown(),\n [this.invertKeys(direction, Keys.ArrowLeft, Keys.ArrowRight)]: () => this.handleLeft(),\n [this.invertKeys(direction, Keys.ArrowRight, Keys.ArrowLeft)]: () => this.handleRight()\n };\n }\n invertKeys(direction, original, inverted) {\n return direction === 'rtl' ? inverted : original;\n }\n focusSelectButton() {\n this.focused = true;\n this._focusedIndex = -1;\n this.onSelectButtonFocus.emit();\n }\n handleEnter() {\n if (this.lastIndex >= 0) {\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Enter);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.onActionButtonAction.emit(this.focusedIndex < this.lastIndex ? \"clear\" : \"upload\");\n }\n }\n }\n handleDelete() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Delete);\n }\n }\n handleEscape() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Escape);\n }\n }\n handleLeft() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex) {\n this.focusedIndex -= 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n handleRight() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex - 1) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"upload\");\n }\n }\n handleTab(shifted) {\n if (this.focusedIndex >= 0 && shifted) {\n this.focusedIndex = -1;\n return;\n }\n this.onTab.emit();\n }\n handleDown() {\n if (this.lastIndex >= 0 && this.focusedIndex < this.lastIndex) {\n if (this.focusedIndex < this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex === this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n }\n handleUp() {\n if (this.lastIndex >= 0 && this.focusedIndex > -1) {\n this.focusedIndex -= 1;\n if (this.focusedIndex === -1) {\n this.onSelectButtonFocus.emit();\n return;\n }\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.focusedIndex = this.lastFileIndex;\n this.onFileFocus.emit(this.focusedIndex);\n }\n }\n }\n get focusedIndex() {\n return this._focusedIndex;\n }\n set focusedIndex(index) {\n if (!this.focused) {\n this.onWrapperFocus.emit();\n }\n this._focusedIndex = index;\n this.focused = true;\n if (this._focusedIndex >= 0 && this._focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(index);\n }\n }\n get lastFileIndex() {\n return this.actionButtonsVisible ? this.lastIndex - 2 : this.lastIndex;\n }\n get lastIndex() {\n const fileCount = this.uploadService.files.count;\n return this.actionButtonsVisible ? fileCount + 1 : fileCount - 1;\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: UploadService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: UploadService }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-upload',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652971767,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Used to customize the rendering of the files in the list ([see example]({% slug templates_upload %}#toc-file-template)).\n */\nclass FileTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFileTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileTemplateDirective, selector: \"[kendoUploadFileTemplate], [kendoFileSelectFileTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileTemplate], [kendoFileSelectFileTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nlet components = {};\n/**\n * @hidden\n */\nclass DropZoneService {\n addComponent(component, zoneId) {\n if (this.has(zoneId)) {\n components[zoneId].push(component);\n }\n else {\n components[zoneId] = [component];\n }\n }\n getComponents(zoneId) {\n return components[zoneId];\n }\n has(id) {\n return id in components;\n }\n}\nDropZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Used to customize the rendering of the file info section in the list. All other elements of the default template, such as file icon, action buttons, upload progress etc. will be preserved in place. ([see example]({% slug templates_upload %}#toc-file-info-template)).\n */\nclass FileInfoTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFileInfoTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileInfoTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileInfoTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileInfoTemplateDirective, selector: \"[kendoUploadFileInfoTemplate], [kendoFileSelectFileInfoTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileInfoTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileInfoTemplate], [kendoFileSelectFileInfoTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass FileListItemDirective {\n constructor(el, navigationService, uploadService) {\n this.navigationService = navigationService;\n this.uploadService = uploadService;\n this.fileClass = true;\n this.focused = false;\n this.element = el;\n }\n focus() {\n this.element.nativeElement.focus();\n }\n get uidAttribute() {\n return this.files[0].uid;\n }\n get tabIndex() {\n return \"-1\";\n }\n get kFileError() {\n return this.files[0].state === FileState.Failed;\n }\n get kFileInvalid() {\n return filesHaveValidationErrors(this.files);\n }\n get kFileProgress() {\n return this.files[0].state === FileState.Uploading ||\n this.files[0].state === FileState.Paused;\n }\n get kFileSuccess() {\n if (this.uploadService.component === 'Upload') {\n return this.files[0].state === FileState.Uploaded ||\n this.files[0].state === FileState.Initial;\n }\n return false;\n }\n get kStateFocused() {\n return this.focused;\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n onClick(event) {\n if (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES)) {\n this.navigationService.focusedIndex = this.index;\n }\n }\n}\nFileListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemDirective, deps: [{ token: i0.ElementRef }, { token: NavigationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Directive });\nFileListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemDirective, selector: \"[kendoUploadFileListItem]\", inputs: { files: \"files\", index: \"index\" }, host: { listeners: { \"focus\": \"onFocus()\", \"blur\": \"onBlur()\", \"click\": \"onClick($event)\" }, properties: { \"class.k-file\": \"this.fileClass\", \"attr.data-uid\": \"this.uidAttribute\", \"attr.tabIndex\": \"this.tabIndex\", \"class.k-file-error\": \"this.kFileError\", \"class.k-file-invalid\": \"this.kFileInvalid\", \"class.k-file-progress\": \"this.kFileProgress\", \"class.k-file-success\": \"this.kFileSuccess\", \"class.k-state-focused\": \"this.kStateFocused\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileListItem]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NavigationService }, { type: UploadService }]; }, propDecorators: { files: [{\n type: Input\n }], index: [{\n type: Input\n }], fileClass: [{\n type: HostBinding,\n args: ['class.k-file']\n }], uidAttribute: [{\n type: HostBinding,\n args: ['attr.data-uid']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], kFileError: [{\n type: HostBinding,\n args: ['class.k-file-error']\n }], kFileInvalid: [{\n type: HostBinding,\n args: ['class.k-file-invalid']\n }], kFileProgress: [{\n type: HostBinding,\n args: ['class.k-file-progress']\n }], kFileSuccess: [{\n type: HostBinding,\n args: ['class.k-file-success']\n }], kStateFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], onFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], onBlur: [{\n type: HostListener,\n args: [\"blur\"]\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass FileListItemBase {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.progressComplete = 0;\n }\n subscribeUploadProgress(uploadProgressHandler) {\n this.uploadProgressSubscription = this.uploadService.uploadProgressEvent.subscribe(uploadProgressHandler);\n }\n fileHasValidationErrors(file) {\n return fileHasValidationErrors(file);\n }\n filesHaveValidationErrors(files) {\n return filesHaveValidationErrors(files);\n }\n ngOnDestroy() {\n this.uploadProgressSubscription.unsubscribe();\n }\n getFileValidationMessage(file) {\n let validationMessage;\n if (file.validationErrors && file.validationErrors.length > 0) {\n validationMessage = this.localization.get(file.validationErrors[0]);\n }\n return validationMessage;\n }\n getTotalFilesSizeMessage(files) {\n return getTotalFilesSizeMessage(files);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFileListItemBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemBase, deps: [{ token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListItemBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemBase, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemBase, decorators: [{\n type: Component,\n args: [{ template: '' }]\n }], ctorParameters: function () { return [{ type: UploadService }]; } });\n\n/**\n * @hidden\n */\nclass FileListItemActionButtonComponent {\n constructor(uploadService, localization, navigation) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.actionFocused = false;\n this.retryFocused = false;\n this.pauseResumeFocused = false;\n }\n onFocus(type) {\n if (type === 'action') {\n this.actionFocused = true;\n }\n if (type === 'retry') {\n this.retryFocused = true;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = true;\n }\n }\n onBlur(type) {\n if (type === 'retry') {\n this.retryFocused = false;\n }\n if (type === 'action') {\n this.actionFocused = false;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = false;\n }\n }\n onRetryClick() {\n if (this.disabled) {\n return;\n }\n this.uploadService.retryFiles(this.file.uid);\n }\n onRemoveCancelClick(event) {\n if (this.disabled) {\n return;\n }\n event.stopImmediatePropagation();\n const uid = this.file.uid;\n if (this.file.state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else {\n this.uploadService.removeFiles(uid);\n }\n this.navigation.focusSelectButton();\n }\n onPauseResumeClick() {\n if (this.disabled) {\n return;\n }\n const uid = this.file.uid;\n if (this.file.state === FileState.Paused) {\n this.uploadService.resumeFile(uid);\n }\n else {\n this.uploadService.pauseFile(uid);\n }\n }\n get actionButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('cancel');\n }\n return this.localization.get('remove');\n }\n get retryButtonTitle() {\n return this.localization.get('retry');\n }\n get pauseResumeButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('pause');\n }\n return this.localization.get('resume');\n }\n get isUploading() {\n return this.file.state === FileState.Uploading;\n }\n get isFailed() {\n return this.file.state === FileState.Failed;\n }\n get isPaused() {\n return this.file.state === FileState.Paused;\n }\n get isResumable() {\n const service = this.uploadService;\n const isResumable = service.async.chunk && service.chunk.resumable;\n const isUploading = (this.file.state === FileState.Paused) || (this.file.state === FileState.Uploading);\n return isResumable && isUploading;\n }\n get isActionButtonVisible() {\n if ((this.file.state === FileState.Uploaded || this.file.state === FileState.Initial) &&\n !this.uploadService.async.removeUrl && this.uploadService.component === 'Upload') {\n return false;\n }\n return true;\n }\n}\nFileListItemActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemActionButtonComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFileListItemActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: { file: \"file\", disabled: \"disabled\", progress: \"progress\" }, ngImport: i0, template: `\n \n {{progress}}%\n\n \n\n \n\n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemActionButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-file-list-item-action-button',\n template: `\n \n {{progress}}%\n\n \n\n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { file: [{\n type: Input\n }], disabled: [{\n type: Input\n }], progress: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FileListSingleItemComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.file.uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get fileStatusText() {\n const errors = this.file.validationErrors;\n if (this.file.state === FileState.Uploaded) {\n return `${this.textFor('fileStatusUploaded')}`;\n }\n if (this.file.state === FileState.Failed) {\n return `${this.textFor('fileStatusFailed')}`;\n }\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([this.file]);\n }\n return this.getFileValidationMessage(this.file);\n }\n get showProgress() {\n const showProgress = this.file.state === FileState.Uploading || this.file.state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n get fileGroupClass() {\n return getFileGroupCssClass(this.file.extension ? this.file.extension : '');\n }\n get isUploadSuccessful() {\n return this.file.state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.file.state === FileState.Failed;\n }\n get isNotYetUploaded() {\n return !this.isUploadFailed && !this.isUploadSuccessful;\n }\n}\nFileListSingleItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListSingleItemComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListSingleItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListSingleItemComponent, selector: \"kendo-upload-file-list-single-item\", inputs: { disabled: \"disabled\", file: \"file\", fileInfoTemplate: \"fileInfoTemplate\" }, usesInheritance: true, ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n \n {{ file.name }}\n {{fileStatusText}}\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: [\"file\", \"disabled\", \"progress\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }], animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListSingleItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-single-item',\n template: `\n
    \n \n
    \n \n \n \n \n \n {{ file.name }}\n {{fileStatusText}}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], file: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FileListMultipleItemsComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.files[0].uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get showProgress() {\n const showProgress = this.files[0].state === FileState.Uploading || this.files[0].state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n ngOnInit() {\n this.filesHaveErrors = super.filesHaveValidationErrors(this.files);\n }\n fileStatusText(file) {\n const errors = file.validationErrors;\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([file]);\n }\n return this.getFileValidationMessage(file);\n }\n get batchStatusText() {\n const state = this.files[0].state;\n const fileCount = this.files.length;\n if (state === FileState.Uploaded) {\n return `${fileCount} ${this.textFor('filesBatchStatusUploaded')}`;\n }\n if (state === FileState.Failed) {\n return `${fileCount} ${this.textFor('filesBatchStatusFailed')}`;\n }\n return `${fileCount} ${this.textFor('filesBatchStatus')}`;\n }\n get isUploadSuccessful() {\n return this.files[0].state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.files[0].state === FileState.Failed;\n }\n}\nFileListMultipleItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListMultipleItemsComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListMultipleItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListMultipleItemsComponent, selector: \"kendo-upload-file-list-multiple-items\", inputs: { disabled: \"disabled\", files: \"files\", fileInfoTemplate: \"fileInfoTemplate\" }, usesInheritance: true, ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n \n \n \n {{file.name}}\n \n {{fileStatusText(file)}}\n \n {{batchStatusText}}\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: [\"file\", \"disabled\", \"progress\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }], animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListMultipleItemsComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-multiple-items',\n template: `\n
    \n \n
    \n \n \n \n \n \n \n \n {{file.name}}\n \n {{fileStatusText(file)}}\n \n {{batchStatusText}}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], files: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nclass FileListComponent {\n constructor(uploadService, navigation) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.onItemFocus();\n this.onItemAction();\n }\n onItemFocus() {\n this.focusSubscription = this.navigation.onFileFocus.subscribe((index) => {\n this.fileListItems.toArray()[index].focus();\n });\n }\n onItemAction() {\n this.actionSubscription = this.navigation.onFileAction.subscribe((key) => {\n this.itemActionHandler(key);\n });\n }\n itemActionHandler(key) {\n let index = this.navigation.focusedIndex;\n let item = this.fileListItems.toArray()[index];\n let uid = item.uidAttribute;\n let files = this.uploadService.files.get(uid);\n if (key === Keys.Escape && files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n this.navigation.focusSelectButton();\n return;\n }\n if (key === Keys.Enter && files[0].state === FileState.Failed) {\n this.uploadService.retryFiles(uid);\n return;\n }\n if (key === Keys.Delete) {\n if (files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else if (this.hasDelete(item)) {\n this.uploadService.removeFiles(uid);\n }\n this.navigation.focusSelectButton();\n }\n }\n hasDelete(item) {\n return item.element.nativeElement.getElementsByClassName('k-delete').length > 0;\n }\n ngOnDestroy() {\n this.focusSubscription.unsubscribe();\n this.actionSubscription.unsubscribe();\n }\n}\nFileListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListComponent, deps: [{ token: UploadService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFileListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: { disabled: \"disabled\", fileList: \"fileList\", fileTemplate: \"fileTemplate\", fileInfoTemplate: \"fileInfoTemplate\" }, viewQueries: [{ propertyName: \"fileListItems\", predicate: FileListItemDirective, descendants: true }], ngImport: i0, template: `\n \n
  • \n \n \n \n \n \n
  • \n
    \n `, isInline: true, components: [{ type: FileListSingleItemComponent, selector: \"kendo-upload-file-list-single-item\", inputs: [\"disabled\", \"file\", \"fileInfoTemplate\"] }, { type: FileListMultipleItemsComponent, selector: \"kendo-upload-file-list-multiple-items\", inputs: [\"disabled\", \"files\", \"fileInfoTemplate\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FileListItemDirective, selector: \"[kendoUploadFileListItem]\", inputs: [\"files\", \"index\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendo-upload-file-list]',\n template: `\n \n
  • \n \n \n \n \n \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: NavigationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], fileList: [{\n type: Input\n }], fileTemplate: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }], fileListItems: [{\n type: ViewChildren,\n args: [FileListItemDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { cancel: \"cancel\", clearSelectedFiles: \"clearSelectedFiles\", dropFilesHere: \"dropFilesHere\", externalDropFilesHere: \"externalDropFilesHere\", filesBatchStatus: \"filesBatchStatus\", filesBatchStatusFailed: \"filesBatchStatusFailed\", filesBatchStatusUploaded: \"filesBatchStatusUploaded\", fileStatusFailed: \"fileStatusFailed\", fileStatusUploaded: \"fileStatusUploaded\", headerStatusPaused: \"headerStatusPaused\", headerStatusUploaded: \"headerStatusUploaded\", headerStatusUploading: \"headerStatusUploading\", invalidFileExtension: \"invalidFileExtension\", invalidMaxFileSize: \"invalidMaxFileSize\", invalidMinFileSize: \"invalidMinFileSize\", pause: \"pause\", remove: \"remove\", resume: \"resume\", retry: \"retry\", select: \"select\", uploadSelectedFiles: \"uploadSelectedFiles\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { cancel: [{\n type: Input\n }], clearSelectedFiles: [{\n type: Input\n }], dropFilesHere: [{\n type: Input\n }], externalDropFilesHere: [{\n type: Input\n }], filesBatchStatus: [{\n type: Input\n }], filesBatchStatusFailed: [{\n type: Input\n }], filesBatchStatusUploaded: [{\n type: Input\n }], fileStatusFailed: [{\n type: Input\n }], fileStatusUploaded: [{\n type: Input\n }], headerStatusPaused: [{\n type: Input\n }], headerStatusUploaded: [{\n type: Input\n }], headerStatusUploading: [{\n type: Input\n }], invalidFileExtension: [{\n type: Input\n }], invalidMaxFileSize: [{\n type: Input\n }], invalidMinFileSize: [{\n type: Input\n }], pause: [{\n type: Input\n }], remove: [{\n type: Input\n }], resume: [{\n type: Input\n }], retry: [{\n type: Input\n }], select: [{\n type: Input\n }], uploadSelectedFiles: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst INVALIDMAXFILESIZE = \"invalidMaxFileSize\";\n/**\n * @hidden\n */\nconst INVALIDMINFILESIZE = \"invalidMinFileSize\";\n/**\n * @hidden\n */\nconst INVALIDFILEEXTENSION = \"invalidFileExtension\";\nconst validateFileExtension = (file, allowedExtensions) => {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf(file.extension.toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\nconst validateFileSize = (file, minFileSize, maxFileSize) => {\n if (minFileSize !== 0 && file.size < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && file.size > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\nconst parseAllowedExtensions = (extensions) => {\n const allowedExtensions = extensions.map((ext) => {\n var parsedExt = (ext.substring(0, 1) === \".\") ? ext : (\".\" + ext);\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\n/**\n * @hidden\n */\nconst validateFiles = (files, restrictionInfo) => {\n const allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions);\n const maxFileSize = restrictionInfo.maxFileSize;\n const minFileSize = restrictionInfo.minFileSize;\n let i;\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\n\n/**\n * @hidden\n */\nclass DropZoneBase {\n constructor(element, renderer, cssClass) {\n this.element = element;\n this.renderer = renderer;\n this.hideIntervalElement = null;\n this.hoverClass = cssClass;\n }\n /**\n * @hidden\n */\n onElementDragEnterListener() {\n this.addClass(this.hoverClass);\n this.lastDragElement = new Date();\n if (!this.hideIntervalElement) {\n this.hideIntervalElement = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragElement) < 100) {\n return;\n }\n this.removeClass(this.hoverClass);\n clearInterval(this.hideIntervalElement);\n this.hideIntervalElement = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOverListener() {\n this.lastDragElement = new Date();\n return false;\n }\n calculateTimeDiff(prevEvent) {\n return new Date().getTime() - prevEvent.getTime();\n }\n addClass(className) {\n this.renderer.addClass(this.element.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.element.nativeElement, className);\n }\n}\nDropZoneBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneBase, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: 'hoverClass' }], target: i0.ɵɵFactoryTarget.Directive });\nDropZoneBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropZoneBase, host: { listeners: { \"dragenter\": \"onElementDragEnterListener()\", \"dragover\": \"onElementDragOverListener()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: ['hoverClass']\n }] }]; }, propDecorators: { onElementDragEnterListener: [{\n type: HostListener,\n args: ['dragenter']\n }], onElementDragOverListener: [{\n type: HostListener,\n args: ['dragover']\n }] } });\n\n/**\n * @hidden\n */\nclass DropZoneInternalDirective extends DropZoneBase {\n constructor(element, renderer, ngZone, uploadService) {\n super(element, renderer, 'k-dropzone-hover');\n this.ngZone = ngZone;\n this.uploadService = uploadService;\n this.initialClassName = true;\n this.hideIntervalDocument = null;\n this.activeClass = 'k-dropzone-active';\n this.ngZone.runOutsideAngular(() => {\n this.unsubscribeDocumentDragEnter = this.renderer.listen('document', 'dragenter', () => this.onDocumentDragEnter());\n this.unsubscribeDocumentDragOver = this.renderer.listen('document', 'dragover', () => this.onDocumentDragOver());\n });\n }\n ngOnDestroy() {\n this.ngZone.runOutsideAngular(() => {\n if (this.unsubscribeDocumentDragEnter) {\n this.unsubscribeDocumentDragEnter();\n }\n if (this.unsubscribeDocumentDragOver) {\n this.unsubscribeDocumentDragOver();\n }\n });\n }\n onDocumentDragEnter() {\n this.addClass(this.activeClass);\n this.lastDragDocument = new Date();\n if (!this.hideIntervalDocument) {\n this.hideIntervalDocument = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragDocument) < 100) {\n return;\n }\n this.removeClass(this.activeClass);\n clearInterval(this.hideIntervalDocument);\n this.hideIntervalDocument = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onDocumentDragOver() {\n this.lastDragDocument = new Date();\n return false;\n }\n onDropListener(event) {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !this.disabled) {\n let files = getAllFileInfo(droppedFiles);\n files = assignGuidToFiles(files, !this.uploadService.async.batch);\n if (!this.multiple) {\n files.splice(1, files.length - 1);\n this.uploadService.clearFiles();\n }\n validateFiles(files, this.restrictions);\n this.uploadService.addFiles(files);\n }\n return false;\n }\n}\nDropZoneInternalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneInternalDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Directive });\nDropZoneInternalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: { disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" }, host: { listeners: { \"drop\": \"onDropListener($event)\" }, properties: { \"class.k-dropzone\": \"this.initialClassName\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneInternalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], initialClassName: [{\n type: HostBinding,\n args: ['class.k-dropzone']\n }], onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass FileSelectDirective {\n constructor(uploadService, navigation, el) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.type = \"file\";\n this.autocomplete = \"off\";\n this.tabIndex = -1;\n this.element = el;\n }\n get nameAttribute() {\n return this.uploadService.async.saveField;\n }\n get multipleAttribute() {\n return this.multiple ? \"multiple\" : null;\n }\n get dirAttribute() {\n return this.dir;\n }\n get disabledAttribute() {\n return this.disabled ? \"true\" : null;\n }\n onInputChange(event) {\n const ua = navigator.userAgent;\n const webkit = /(webkit)[ \\/]([\\w.]+)/i;\n const ie = /(windows)[ \\/]([\\w.]+)/i;\n let selectedFiles = inputFiles(event.target);\n selectedFiles = assignGuidToFiles(selectedFiles, !this.uploadService.async.batch);\n validateFiles(selectedFiles, this.restrictions);\n if (!this.multiple) {\n this.uploadService.clearFiles();\n }\n this.uploadService.addFiles(selectedFiles);\n /*\n Chrome, IE, Edge and Safari do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n const native = this.element.nativeElement;\n if (ua.match(webkit) || ua.match(ie)) {\n native.type = \"\";\n native.type = \"file\";\n }\n setTimeout(() => {\n this.navigation.focusedIndex = -1;\n });\n }\n}\nFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectDirective, deps: [{ token: UploadService }, { token: NavigationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: { dir: \"dir\", disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" }, host: { listeners: { \"change\": \"onInputChange($event)\" }, properties: { \"attr.type\": \"this.type\", \"attr.autocomplete\": \"this.autocomplete\", \"attr.tabindex\": \"this.tabIndex\", \"attr.name\": \"this.nameAttribute\", \"attr.multiple\": \"this.multipleAttribute\", \"attr.dir\": \"this.dirAttribute\", \"attr.disabled\": \"this.disabledAttribute\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFileSelect]'\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: NavigationService }, { type: i0.ElementRef }]; }, propDecorators: { dir: [{\n type: Input\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], type: [{\n type: HostBinding,\n args: [\"attr.type\"]\n }], autocomplete: [{\n type: HostBinding,\n args: [\"attr.autocomplete\"]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], nameAttribute: [{\n type: HostBinding,\n args: [\"attr.name\"]\n }], multipleAttribute: [{\n type: HostBinding,\n args: [\"attr.multiple\"]\n }], dirAttribute: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], disabledAttribute: [{\n type: HostBinding,\n args: [\"attr.disabled\"]\n }], onInputChange: [{\n type: HostListener,\n args: [\"change\", [\"$event\"]]\n }] } });\n\n/**\n * @hidden\n */\nconst FILESELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileSelectComponent)\n};\nclass FileSelectComponent {\n constructor(uploadService, localization, navigation, dropZoneService, ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Disables the FileSelect.\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FileSelect.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when a file is about to be removed. If prevented, the file will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `select` or `remove` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.wrapper = wrapper.nativeElement;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n this.setDefaultSettings();\n }\n /**\n * Sets the `name` attribute of the `input` element of the FileSelect.\n */\n set name(name) {\n this.uploadService.async.saveField = name;\n }\n get name() {\n return this.uploadService.async.saveField;\n }\n /**\n * Sets the restrictions for selected files.\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileSelectFile(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFileSelectFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Removes specific file from the file list.\n */\n removeFileByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Visually clears all files from the UI.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the FileSelect\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n */\n get selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabindex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-focus');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-focus');\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this.ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.changeEvent.subscribe((files) => {\n let model = [];\n if (files !== null) {\n files.forEach((file) => {\n if (file.state === FileState.Initial) {\n model.push(file);\n }\n if (file.state === FileState.Selected && file.rawFile && !file.validationErrors) {\n model.push(file.rawFile);\n }\n });\n }\n if (model.length === 0) {\n model = null;\n }\n this.onChangeCallback(model);\n this.valueChange.emit(model);\n });\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n }\n setDefaultSettings() {\n this.uploadService.async.autoUpload = false;\n this.uploadService.component = 'FileSelect';\n }\n}\nFileSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFileSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileSelectComponent, selector: \"kendo-fileselect\", inputs: { accept: \"accept\", disabled: \"disabled\", multiple: \"multiple\", name: \"name\", showFileList: \"showFileList\", tabindex: \"tabindex\", restrictions: \"restrictions\", zoneId: \"zoneId\", focusableId: \"focusableId\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", select: \"select\", remove: \"remove\", valueChange: \"valueChange\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-widget\": \"this.hostDefaultClasses\", \"class.k-upload\": \"this.hostDefaultClasses\", \"class.k-disabled\": \"this.hostDisabledClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent)\n }\n ], queries: [{ propertyName: \"fileTemplate\", first: true, predicate: FileTemplateDirective, descendants: true }, { propertyName: \"fileInfoTemplate\", first: true, predicate: FileInfoTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"fileSelect\", first: true, predicate: [\"fileSelect\"], descendants: true, static: true }, { propertyName: \"fileSelectButton\", first: true, predicate: [\"fileSelectButton\"], descendants: true, static: true }], exportAs: [\"kendoFileSelect\"], ngImport: i0, template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n `, isInline: true, components: [{ type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: [\"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: [\"disabled\", \"multiple\", \"restrictions\"] }, { type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: [\"dir\", \"disabled\", \"multiple\", \"restrictions\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoFileSelect',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent)\n }\n ],\n selector: 'kendo-fileselect',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { accept: [{\n type: Input\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], name: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], zoneId: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], select: [{\n type: Output\n }], remove: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * Custom component messages override default component messages ([more information and example]({% slug globalization_upload %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-upload-messages, kendo-fileselect-messages, kendo-uploaddropzone-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-upload-messages, kendo-fileselect-messages, kendo-uploaddropzone-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass UploadStatusTotalComponent {\n constructor(localization) {\n this.localization = localization;\n }\n ngDoCheck() {\n this.isPaused = this.fileList.hasFileWithState([FileState.Paused]);\n this.isFailed = this.fileList.hasFileWithState([FileState.Failed]);\n this.isUploading = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.isPaused && !this.isUploading) {\n this.statusText = this.localization.get('headerStatusPaused');\n }\n else {\n this.statusText = this.isUploading ? this.localization.get('headerStatusUploading')\n : this.localization.get('headerStatusUploaded');\n }\n }\n}\nUploadStatusTotalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadStatusTotalComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadStatusTotalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadStatusTotalComponent, selector: \"kendo-upload-status-total\", inputs: { fileList: \"fileList\" }, ngImport: i0, template: `\n \n \n {{statusText}}\n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadStatusTotalComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-status-total',\n template: `\n \n \n {{statusText}}\n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { fileList: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass UploadActionButtonsComponent {\n constructor(uploadService, localization, navigation) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.hostDefaultClass = true;\n this.onAction();\n this.onFocus();\n }\n get actionButtonsEndClassName() {\n return this.actionsLayout === 'end';\n }\n get actionButtonsStretchedClassName() {\n return this.actionsLayout === 'stretched';\n }\n get actionButtonsStartClassName() {\n return this.actionsLayout === 'start';\n }\n get actionButtonsCenterClassName() {\n return this.actionsLayout === 'center';\n }\n onAction() {\n this.actionSubscription = this.navigation.onActionButtonAction.subscribe((button) => {\n if (button === \"clear\") {\n this.clearFiles();\n }\n else {\n this.performUpload();\n }\n });\n }\n onFocus() {\n this.focusSubscription = this.navigation.onActionButtonFocus.subscribe((button) => {\n this.focusButton(button);\n });\n }\n focusButton(button) {\n const el = (button === \"clear\") ? this.clearButton : this.uploadButton;\n el.nativeElement.focus();\n }\n ngOnDestroy() {\n this.actionSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n onUploadButtonClick(event) {\n event.stopImmediatePropagation();\n this.performUpload();\n }\n performUpload() {\n if (!this.disabled) {\n this.uploadService.uploadFiles();\n this.navigation.focusSelectButton();\n }\n }\n onClearButtonClick(event) {\n event.stopImmediatePropagation();\n this.clearFiles();\n }\n clearFiles() {\n if (!this.disabled) {\n this.uploadService.clearFiles();\n this.navigation.focusSelectButton();\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nUploadActionButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadActionButtonsComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadActionButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadActionButtonsComponent, selector: \"kendo-upload-action-buttons\", inputs: { disabled: \"disabled\", actionsLayout: \"actionsLayout\" }, host: { properties: { \"class.k-actions\": \"this.hostDefaultClass\", \"class.k-actions-end\": \"this.actionButtonsEndClassName\", \"class.k-actions-stretched\": \"this.actionButtonsStretchedClassName\", \"class.k-actions-start\": \"this.actionButtonsStartClassName\", \"class.k-actions-center\": \"this.actionButtonsCenterClassName\" } }, viewQueries: [{ propertyName: \"clearButton\", first: true, predicate: [\"clearButton\"], descendants: true, static: true }, { propertyName: \"uploadButton\", first: true, predicate: [\"uploadButton\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadActionButtonsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-action-buttons',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], clearButton: [{\n type: ViewChild,\n args: ['clearButton', { static: true }]\n }], uploadButton: [{\n type: ViewChild,\n args: ['uploadButton', { static: true }]\n }], hostDefaultClass: [{\n type: HostBinding,\n args: ['class.k-actions']\n }], actionButtonsEndClassName: [{\n type: HostBinding,\n args: ['class.k-actions-end']\n }], actionButtonsStretchedClassName: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }], actionButtonsStartClassName: [{\n type: HostBinding,\n args: ['class.k-actions-start']\n }], actionButtonsCenterClassName: [{\n type: HostBinding,\n args: ['class.k-actions-center']\n }] } });\n\n/**\n * @hidden\n */\nconst UPLOAD_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadComponent)\n};\n/**\n * Represents the [Kendo UI Upload component for Angular]({% slug overview_upload %}).\n */\nclass UploadComponent {\n constructor(uploadService, localization, navigation, dropZoneService, _ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this._ngZone = _ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Enables the chunk functionality of the Upload.\n *\n * The default value is `false`.\n */\n this.chunkable = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Disables the Upload ([see example]({% slug disabledstate_upload %})).\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.actionsLayout = 'end';\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the upload is canceled while in progress.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the file list is about to be cleared. If prevented, the files will not be cleared.\n */\n this.clear = new EventEmitter();\n /**\n * Fires when all active uploads are completed either successfully or with errors.\n */\n this.complete = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation has failed.\n */\n this.error = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the upload of a file has been paused.\n */\n this.pause = new EventEmitter();\n /**\n * Fires when an uploaded file is about to be removed. If prevented, the files will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the upload of a file has been resumed.\n */\n this.resume = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation is successfully completed.\n */\n this.success = new EventEmitter();\n /**\n * Fires when one or more files are about to be uploaded. If prevented, the files will neither be uploaded, nor added to the file list.\n */\n this.upload = new EventEmitter();\n /**\n * Fires when one or more files are being uploaded.\n */\n this.uploadProgress = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `upload`, `remove` or `clear` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.wrapper = wrapper.nativeElement;\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n }\n /**\n * By default, the selected files are immediately uploaded\n * ([see example]({% slug fileprocessing_upload %}#toc-automatic-upload-of-files)).\n * To change this behavior, set `autoUpload` to `false`.\n */\n set autoUpload(autoUpload) {\n this.uploadService.async.autoUpload = autoUpload;\n }\n get autoUpload() {\n return this.uploadService.async.autoUpload;\n }\n /**\n * When enabled, all files in the selection are uploaded in one request\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-batches-of-files)).\n * Any files that are selected one after the other are uploaded in separate requests.\n */\n set batch(batch) {\n this.uploadService.async.batch = batch;\n }\n get batch() {\n return this.uploadService.async.batch;\n }\n /**\n * Configures whether credentials (cookies, headers) will be sent for cross-site requests\n * ([see example]({% slug credentials_upload %}#toc-attaching-credentials-to-requests)).\n * The default values is `true`. Setting `withCredentials` has no effect on same-site requests.\n * To add credentials to the request, use the `saveHeaders` or `removeHeaders` property,\n * or the [`upload`]({% slug api_upload_uploadevent %}) event.\n */\n set withCredentials(withCredentials) {\n this.uploadService.async.withCredentials = withCredentials;\n }\n get withCredentials() {\n return this.uploadService.async.withCredentials;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key which contains the files submitted to `saveUrl`.\n * The default value is `files`.\n */\n set saveField(saveField) {\n this.uploadService.async.saveField = saveField;\n }\n get saveField() {\n return this.uploadService.async.saveField;\n }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each upload request.\n */\n set saveHeaders(saveHeaders) {\n this.uploadService.async.saveHeaders = saveHeaders;\n }\n get saveHeaders() {\n return this.uploadService.async.saveHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the upload request.\n * The default value is `POST`.\n */\n set saveMethod(saveMethod) {\n this.uploadService.async.saveMethod = saveMethod;\n }\n get saveMethod() {\n return this.uploadService.async.saveMethod;\n }\n /**\n * Sets the URL of the endpoint for the upload request.\n * The request [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key is named after the `saveField` property.\n * It contains the list of files to be uploaded.\n */\n set saveUrl(saveUrl) {\n this.uploadService.async.saveUrl = saveUrl;\n }\n get saveUrl() {\n return this.uploadService.async.saveUrl;\n }\n /**\n * Sets the expected [`response type`](https://angular.io/api/common/http/HttpRequest#responseType) of the server.\n * It is used to parse the response appropriately.\n * The default value is `json`.\n */\n set responseType(responseType) {\n this.uploadService.async.responseType = responseType;\n }\n get responseType() {\n return this.uploadService.async.responseType;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key\n * which contains the list of file names that are submitted to `removeUrl`.\n * The default value is `fileNames`.\n */\n set removeField(removeField) { this.uploadService.async.removeField = removeField; }\n get removeField() { return this.uploadService.async.removeField; }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each `remove` request.\n */\n set removeHeaders(removeHeaders) {\n this.uploadService.async.removeHeaders = removeHeaders;\n }\n get removeHeaders() {\n return this.uploadService.async.removeHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the `remove` request.\n * The default value is `POST`.\n */\n set removeMethod(removeMethod) {\n this.uploadService.async.removeMethod = removeMethod;\n }\n get removeMethod() {\n return this.uploadService.async.removeMethod;\n }\n /**\n * Sets the URL of the endpoint for the `remove` request.\n * The [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) request key is named after the `removeField` property.\n * It contains the list of file names which will be removed.\n */\n set removeUrl(removeUrl) {\n this.uploadService.async.removeUrl = removeUrl;\n }\n get removeUrl() {\n return this.uploadService.async.removeUrl;\n }\n /**\n * Specifies if the selected files are uploaded simultaneously or one by one.\n *\n * The default value is `true`.\n */\n set concurrent(concurrent) {\n this.uploadService.async.concurrent = concurrent;\n }\n get concurrent() {\n return this.uploadService.async.concurrent;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the restrictions for selected files ([see example]({% slug api_upload_filerestrictions %})).\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.verifySettings();\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.uploadService.setChunkSettings(this.chunkable);\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"chunkable\", changes)) {\n const newChunkable = changes.chunkable.currentValue;\n if (typeof newChunkable === 'boolean') {\n this.uploadService.async.chunk = newChunkable;\n }\n if (typeof newChunkable === \"object\" && newChunkable !== null) {\n this.uploadService.async.chunk = true;\n this.uploadService.chunk = Object.assign({}, this.uploadService.chunk, newChunkable);\n }\n }\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileInfo(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-focus');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-focus');\n }\n /**\n * @hidden\n */\n get showActionButtons() {\n let areVisible = false;\n if (!this.autoUpload) {\n const hasFilesToUpload = this.fileList.filesToUpload.length > 0;\n const uploadingFiles = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.concurrent && hasFilesToUpload) {\n areVisible = true;\n }\n if (!this.concurrent && hasFilesToUpload && !uploadingFiles) {\n areVisible = true;\n }\n }\n this.navigation.actionButtonsVisible = areVisible;\n return areVisible;\n }\n /**\n * @hidden\n */\n get showTotalStatus() {\n const states = [\n FileState.Uploaded,\n FileState.Uploading,\n FileState.Failed,\n FileState.Paused\n ];\n if (this.fileList.hasFileWithState(states)) {\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n /**\n * @hidden\n * @deprecated\n */\n focusComponent() {\n this.focus();\n }\n /**\n * Blurs the Upload if it was previously focused.\n */\n blur() {\n if (this.navigation.focused) {\n this.navigation.focused = false;\n document.activeElement.blur();\n this.onBlur.emit();\n }\n }\n /**\n * @hidden\n * @deprecated\n */\n blurComponent() {\n this.blur();\n }\n /**\n * Pauses the upload process of a file that is currently uploading.\n * The `pauseFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be paused.\n */\n pauseFileByUid(uid) {\n this.uploadService.pauseFile(uid);\n }\n /**\n * Resumes the upload process for a file that has been previously paused.\n * The `resumeFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be resumed.\n */\n resumeFileByUid(uid) {\n this.uploadService.resumeFile(uid);\n }\n /**\n * Triggers the removal of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be removed.\n */\n removeFilesByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Triggers another upload attempt of an unsuccessfully uploaded file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files to be retried.\n */\n retryUploadByUid(uid) {\n this.uploadService.retryFiles(uid);\n }\n /**\n * Cancels the upload of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be canceled.\n */\n cancelUploadByUid(uid) {\n this.uploadService.cancelFiles(uid);\n }\n /**\n * Uploads the currently selected files which pass the set restrictions.\n */\n uploadFiles() {\n if (this.fileList.filesToUpload.length) {\n this.uploadService.uploadFiles();\n }\n }\n /**\n * Visually clears all files from the UI without issuing requests to the remove handler.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the Upload\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.batch && this.chunkable !== false) {\n throw new Error('The file chunking functionality requires the batch setting to be disabled.');\n }\n }\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this._ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.cancelEvent.subscribe((args) => {\n this.cancel.emit(args);\n });\n this.subs.add(this.uploadService.changeEvent.subscribe((files) => {\n this.onChangeCallback(files);\n this.valueChange.emit(files);\n }));\n this.subs.add(this.uploadService.clearEvent.subscribe((args) => {\n this.clear.emit(args);\n }));\n this.subs.add(this.uploadService.completeEvent.subscribe(() => {\n this.complete.emit();\n }));\n this.subs.add(this.uploadService.errorEvent.subscribe((args) => {\n this.error.emit(args);\n }));\n this.subs.add(this.uploadService.pauseEvent.subscribe((args) => {\n this.pause.emit(args);\n }));\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.resumeEvent.subscribe((args) => {\n this.resume.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n this.subs.add(this.uploadService.successEvent.subscribe((args) => {\n this.success.emit(args);\n }));\n this.subs.add(this.uploadService.uploadEvent.subscribe((args) => {\n this.upload.emit(args);\n }));\n this.subs.add(this.uploadService.uploadProgressEvent.subscribe((args) => {\n this.uploadProgress.emit(args);\n }));\n }\n}\nUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadComponent, selector: \"kendo-upload\", inputs: { autoUpload: \"autoUpload\", batch: \"batch\", withCredentials: \"withCredentials\", saveField: \"saveField\", saveHeaders: \"saveHeaders\", saveMethod: \"saveMethod\", saveUrl: \"saveUrl\", responseType: \"responseType\", removeField: \"removeField\", removeHeaders: \"removeHeaders\", removeMethod: \"removeMethod\", removeUrl: \"removeUrl\", chunkable: \"chunkable\", concurrent: \"concurrent\", multiple: \"multiple\", disabled: \"disabled\", showFileList: \"showFileList\", tabindex: \"tabindex\", zoneId: \"zoneId\", tabIndex: \"tabIndex\", accept: \"accept\", restrictions: \"restrictions\", focusableId: \"focusableId\", actionsLayout: \"actionsLayout\" }, outputs: { onBlur: \"blur\", cancel: \"cancel\", clear: \"clear\", complete: \"complete\", error: \"error\", onFocus: \"focus\", pause: \"pause\", remove: \"remove\", resume: \"resume\", select: \"select\", success: \"success\", upload: \"upload\", uploadProgress: \"uploadProgress\", valueChange: \"valueChange\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-widget\": \"this.hostDefaultClasses\", \"class.k-upload\": \"this.hostDefaultClasses\", \"class.k-disabled\": \"this.hostDisabledClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent)\n }\n ], queries: [{ propertyName: \"fileTemplate\", first: true, predicate: FileTemplateDirective, descendants: true }, { propertyName: \"fileInfoTemplate\", first: true, predicate: FileInfoTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"fileSelect\", first: true, predicate: [\"fileSelect\"], descendants: true, static: true }, { propertyName: \"fileSelectButton\", first: true, predicate: [\"fileSelectButton\"], descendants: true, static: true }], exportAs: [\"kendoUpload\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n \n \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n class=\"k-upload-files k-reset\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n \n \n `, isInline: true, components: [{ type: UploadStatusTotalComponent, selector: \"kendo-upload-status-total\", inputs: [\"fileList\"] }, { type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: [\"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"] }, { type: UploadActionButtonsComponent, selector: \"kendo-upload-action-buttons\", inputs: [\"disabled\", \"actionsLayout\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: [\"disabled\", \"multiple\", \"restrictions\"] }, { type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: [\"dir\", \"disabled\", \"multiple\", \"restrictions\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoUpload',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent)\n }\n ],\n selector: 'kendo-upload',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n \n \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n class=\"k-upload-files k-reset\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { autoUpload: [{\n type: Input\n }], batch: [{\n type: Input\n }], withCredentials: [{\n type: Input\n }], saveField: [{\n type: Input\n }], saveHeaders: [{\n type: Input\n }], saveMethod: [{\n type: Input\n }], saveUrl: [{\n type: Input\n }], responseType: [{\n type: Input\n }], removeField: [{\n type: Input\n }], removeHeaders: [{\n type: Input\n }], removeMethod: [{\n type: Input\n }], removeUrl: [{\n type: Input\n }], chunkable: [{\n type: Input\n }], concurrent: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], zoneId: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], accept: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], clear: [{\n type: Output\n }], complete: [{\n type: Output\n }], error: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], pause: [{\n type: Output\n }], remove: [{\n type: Output\n }], resume: [{\n type: Output\n }], select: [{\n type: Output\n }], success: [{\n type: Output\n }], upload: [{\n type: Output\n }], uploadProgress: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\nclass UploadDropZoneDirective {\n constructor(dropZoneService) {\n this.dropZoneService = dropZoneService;\n }\n /**\n * @hidden\n */\n onElementDragEnter() {\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOver() {\n return false;\n }\n /**\n * @hidden\n */\n onDropListener(event) {\n const components = this.componentInstance;\n if (!isPresent(components)) {\n return;\n }\n components.forEach((component) => {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !component.disabled) {\n let files = getAllFileInfo(droppedFiles);\n if (component instanceof UploadComponent) {\n files = assignGuidToFiles(files, !component.batch);\n }\n else {\n files = assignGuidToFiles(files, true);\n }\n if (!component.multiple) {\n files.splice(1, files.length - 1);\n component.clearFiles();\n }\n validateFiles(files, component.restrictions);\n component.addFiles(files);\n }\n });\n return false;\n }\n /**\n * @hidden\n */\n get componentInstance() {\n return this.dropZoneService.getComponents(this.zoneId);\n }\n}\nUploadDropZoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneDirective, deps: [{ token: DropZoneService }], target: i0.ɵɵFactoryTarget.Directive });\nUploadDropZoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadDropZoneDirective, selector: \"[kendoUploadDropZone], [kendoFileSelectDropZone]\", inputs: { zoneId: [\"kendoUploadDropZone\", \"zoneId\"] }, host: { listeners: { \"dragenter\": \"onElementDragEnter()\", \"dragover\": \"onElementDragOver()\", \"drop\": \"onDropListener($event)\" } }, providers: [\n DropZoneService\n ], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n DropZoneService\n ],\n selector: '[kendoUploadDropZone], [kendoFileSelectDropZone]'\n }]\n }], ctorParameters: function () { return [{ type: DropZoneService }]; }, propDecorators: { zoneId: [{\n type: Input,\n args: ['kendoUploadDropZone']\n }], onElementDragEnter: [{\n type: HostListener,\n args: ['dragenter']\n }], onElementDragOver: [{\n type: HostListener,\n args: ['dragover']\n }], onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\n\n/**\n * Represents the [Kendo UI UploadDropZone component for Angular]({% slug overview_upload %}).\n */\nclass UploadDropZoneComponent extends DropZoneBase {\n constructor(element, renderer, localization) {\n super(element, renderer, 'k-external-dropzone-hover');\n this.localization = localization;\n this.hostClass = true;\n this.localizationChangeSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get dirAttribute() {\n return this.direction;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n return 'k-icon k-i-upload';\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n}\nUploadDropZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadDropZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadDropZoneComponent, selector: \"kendo-uploaddropzone\", inputs: { zoneId: \"zoneId\", icon: \"icon\", iconClass: \"iconClass\" }, host: { properties: { \"class.k-external-dropzone\": \"this.hostClass\", \"attr.dir\": \"this.dirAttribute\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ], exportAs: [\"kendoUploadDropZone\"], usesInheritance: true, ngImport: i0, template: `\n \n \n
    \n \n {{ textFor('externalDropFilesHere') }}\n \n \n \n
    \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: UploadDropZoneDirective, selector: \"[kendoUploadDropZone], [kendoFileSelectDropZone]\", inputs: [\"kendoUploadDropZone\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoUploadDropZone',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ],\n selector: 'kendo-uploaddropzone',\n template: `\n \n \n
    \n \n {{ textFor('externalDropFilesHere') }}\n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-external-dropzone']\n }], dirAttribute: [{\n type: HostBinding,\n args: ['attr.dir']\n }], zoneId: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst SHARED_DECLARATIONS = [\n DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nconst PUBLIC_DIRECTIVES = [\n FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent, DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective], imports: [CommonModule], exports: [FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent, DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective, CommonModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS\n ],\n exports: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS,\n CommonModule\n ],\n imports: [CommonModule]\n }]\n }] });\n\nconst FILESELECT_DECLARATIONS = [\n FileSelectComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the FileSelect component.\n */\nclass FileSelectModule {\n}\nFileSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, declarations: [FileSelectComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, FileSelectComponent] });\nFileSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FILESELECT_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n FILESELECT_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }] });\n\nconst UPLOAD_DECLARATIONS = [\n UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the Upload component.\n */\nclass UploadModule {\n}\nUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, declarations: [UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent] });\nUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [UPLOAD_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n UPLOAD_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Uploads components.\n *\n * @example\n *\n * ```ts-no-run\n * import { UploadsModule } from '@progress/kendo-angular-upload';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, UploadsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass UploadsModule {\n}\nUploadsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nUploadsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, exports: [FileSelectModule,\n UploadModule] });\nUploadsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, imports: [FileSelectModule,\n UploadModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n FileSelectModule,\n UploadModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CancelEvent, ClearEvent, CustomMessagesComponent, ErrorEvent, FileInfoTemplateDirective, FileListComponent, FileListItemActionButtonComponent, FileListItemBase, FileListMultipleItemsComponent, FileListSingleItemComponent, FileMap, FileSelectComponent, FileSelectDirective, FileSelectModule, FileState, FileTemplateDirective, NavigationService, PauseEvent, RemoveEvent, ResumeEvent, SelectEvent, SuccessEvent, TemplateContextDirective, UploadActionButtonsComponent, UploadComponent, UploadDropZoneComponent, UploadDropZoneDirective, UploadEvent, UploadModule, UploadProgressEvent, UploadService, UploadStatusTotalComponent, UploadsModule };\n\n","export { default as Barcode } from './barcode/barcode';\nexport { default as barcodeValidator } from './barcode/barcode-validator';\n","import { Encodings } from './encodings/main';\n\nconst validate = (encoding, size, prefix) => (value) => {\n try {\n encoding.encode(\n prefix + value,\n size.width,\n size.height\n );\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n};\n\n// A default size for encodings, so the validator can check only the value if no size is provided.\nconst fallbackSize = { width: 500, height: 100 };\n\nfunction barcodeValidator(type, size = fallbackSize) {\n if (!type) {\n throw new Error(`Please specify barcode type to validate.`);\n }\n\n let resolvedType = type.toLowerCase();\n let prefix = '';\n if (resolvedType === 'upca') {\n resolvedType = 'ean13';\n prefix = '0';\n } else if (resolvedType === 'upce') {\n resolvedType = 'ean8';\n prefix = '0';\n }\n\n if (!Encodings[resolvedType]) {\n throw new Error(`Encoding '${type}' is not supported.`);\n }\n\n const encoding = new Encodings[resolvedType]();\n return validate(encoding, size, prefix);\n}\n\nexport default barcodeValidator;\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nconst DEFAULT_BARCODE_WIDTH = 300;\nconst DEFAULT_BARCODE_HEIGHT = 100;\n\nclass Barcode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-barcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n setOptions(options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n _render() {\n const options = this.options;\n const value = options.value;\n const textOptions = options.text;\n const textMargin = getSpacing(textOptions.margin);\n const size = this._getSize();\n const border = options.border || {};\n const encoding = this.encoding;\n const contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n let barHeight = contentBox.height();\n let encodedValue;\n let textToDisplay;\n let textHeight;\n const visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n }\n\n exportVisual() {\n return this._render();\n }\n\n _getSize() {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n }\n\n value(value) {\n if (!defined(value)) {\n return this.options.value;\n }\n\n this.options.value = String(value);\n this.redraw();\n }\n\n _getBands(pattern, baseUnit) {\n const contentBox = this.contentBox;\n let offsetX = contentBox.x1;\n let stepX;\n let patternItem;\n const group = new draw.Group();\n\n for (let i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n const rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n const path = draw.Path.fromRect(rect, {\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n }\n\n _getBackground(size) {\n const options = this.options;\n const border = options.border || {};\n const box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n const path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n }\n\n _getText(value) {\n const textOptions = this.options.text;\n const text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n }\n\n _setOptions(options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error(`Encoding '${this.type}' is not supported.`);\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n }\n}\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nconst extend = Object.assign;\n\nexport class Code11 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addCheckSum() {\n const value = this.value;\n let length = value.length;\n const cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n let kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n }\n\n getWeightedSum(value, length, total) {\n let weightedSum = 0;\n\n for (let i = 0; i < value.length; i++) {\n weightedSum += this.weightedValue(this.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n }\n\n weightedValue(value, length, index, total) {\n const weight = (length - index) % total || total;\n return weight * value;\n }\n\n getValue(character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n }\n\n addCharacter(character) {\n const value = this.getValue(character);\n const pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n }\n}\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst alphanumericRegex = /^[a-z0-9]+$/i;\nconst extend = Object.assign;\n\nexport class State128 extends Class {\n constructor(encoding) {\n super();\n this.encoding = encoding;\n this.initProperties();\n }\n\n initProperties() { }\n\n addStart() { }\n\n is() { }\n\n isCode() {\n return false;\n }\n\n move() { }\n\n pushState() { }\n}\n\nexport class State128AB extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n move(encodingState) {\n let idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n }\n\n pushState(encodingState) {\n let states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n let numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this.encoding.addPattern(this.getValue(code));\n encodingState.index++;\n }\n }\n\n _initMoves(states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n }\n\n _moveFNC(encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n }\n\n _shiftState(encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n }\n\n _moveState() {\n this.encoding.addPattern(this.MOVE);\n return true;\n }\n}\n\nconst states128 = {};\n\nstates128.A = class State128A extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n }\n\n isCode(code) {\n return 0 <= code && code < 96;\n }\n\n getValue(code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n }\n};\n\nstates128.B = class State128B extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n }\n\n isCode(code) {\n return 32 <= code && code < 128;\n }\n\n getValue(code) {\n return code - 32;\n }\n};\n\nstates128.C = class State128C extends State128 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n }\n\n move() {\n this.encoding.addPattern(this.MOVE);\n }\n\n pushState(encodingState) {\n let code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n }\n\n getValue(code) {\n return code;\n }\n};\n\nstates128.FNC4 = class State128FNC4 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this._initSubStates(states);\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n }\n\n addStart(encodingState) {\n let code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n isCode(code) {\n return 128 <= code && code < 256;\n }\n\n pushState(encodingState) {\n let subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n let code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n }\n\n _pushStart(subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n }\n\n _initSubState(encodingState) {\n const subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n }\n\n _initSubStates(states) {\n this.subStates = [];\n\n for (let i = 0; i < states.length; i++) {\n if (inArray(states[i], this.dependentStates)) {\n this.subStates.push(states[i]);\n }\n }\n }\n\n _getSubState(code) {\n for (let i = 0; i < this.subStates.length; i++) {\n if (this.encoding[this.subStates[i]].isCode(code)) {\n return this.subStates[i];\n }\n }\n }\n\n _getAll(value, index) {\n let code;\n let result = \"\";\n let i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n }\n};\n\nstates128.FNC1 = class States128FNC1 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n }\n\n\n addStart() {\n this.encoding[this.startState].addStart();\n }\n\n is() {\n return inArray(this.key, this.states);\n }\n\n pushState(encodingState) {\n let encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n const trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this.startAI ? 2 : 0;\n current = separatorLength > 0 ? this.getBySeparator(value, index) : this.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this.validate(current, subState.value);\n encoding.pushData(subState, this.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this.startState) {\n encoding[this.startState].move(subState);\n subState.state = this.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n }\n\n validate(current, value) {\n let code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n }\n\n getByLength(value, index) {\n let id;\n let applicationIdentifier;\n\n for (let i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n }\n\n unsupportedAIError(id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n }\n\n getBySeparator(value, index) {\n let start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n }\n\n getApplicationIdentifier(id) {\n let applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (let i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n let ranges = multiKey[i].ranges;\n\n for (let j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n }\n};\n\nexport class Code128Base extends Encoding {\n constructor(options) {\n super(options);\n this._initStates();\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n }\n\n _initStates() {\n for (let i = 0; i < this.states.length; i++) {\n this[this.states[i]] = new states128[this.states[i]](this, this.states);\n }\n }\n\n initValue(value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n }\n\n addData() {\n let encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n }\n\n pushData(encodingState, states) {\n const trueCondition = true;\n\n while (trueCondition) {\n this[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this.getNextState(encodingState, states);\n this[encodingState.state].move(encodingState);\n } else {\n let temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n }\n\n addStart(encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n }\n\n addCheckSum() {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n }\n\n addStop() {\n this.addPattern(this.STOP);\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addPattern(code) {\n const pattern = this.characterMap[code].toString();\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n }\n\n getNextState(encodingState, states) {\n for (let i = 0; i < states.length; i++) {\n if (this[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n }\n}\n\nexport class Code128a extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n }\n}\n\nexport class Code128b extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n }\n}\n\nexport class Code128c extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n }\n}\n\nexport class Code128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n }\n}\n\nexport class CodeGS1128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n }\n}\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport const Code39ExtendedBase = {\n addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended(code) {\n let patterns;\n\n for (let i = 0; i < this.extendedMappings.length; i++) {\n patterns = this.extendedMappings[i].call(this, code);\n\n if (patterns) {\n for (let patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n const pattern = patterns[patternIndex];\n this.addBase(pattern);\n }\n\n this.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n let result;\n let dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (let i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this.characterMap[this.shiftCharacters[3]]);\n result.push(this.characterMap[this.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport class Code39Extended extends Code39 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n }\n}\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Code39Base extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n }\n\n addData() {\n const value = this.value;\n\n this.addStart();\n\n for (let idx = 0; idx < value.length; idx++) {\n this.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n }\n\n addCharacter(character) {\n const characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n }\n\n addBase() { }\n}\n\nexport class Code39 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n }\n\n initValue(value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n }\n\n prepareValues() {\n const minBaseUnit = this.minBaseUnitLength;\n const minRatio = this.minRatio;\n const minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n let baseUnit;\n let ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code39 encoding: the current height is ${this.height}px and the minimum height is ${minHeight}px.`);\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n let minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error(`Insufficient width for Code39 encoding: the current width is ${this.width}px and the minimum width for value \"${this.value}\" is ${minWidth}px.`);\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n }\n\n getBaseUnit(ratio) {\n return this.width / this.getBaseWidth(ratio);\n }\n\n getBaseWidth(ratio) {\n const characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n }\n\n addStart() {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n }\n\n addBase(character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n }\n\n addStop() {\n this.addPattern(this.characterMap.START.pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.patternString += this.patternMappings[pattern.charAt(i)];\n }\n }\n\n addCharacterGap() {\n this.patternString += this.gapWidth + this.splitCharacter;\n }\n}\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport class Code93Extended extends Code93 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n const checkValues = this._getCheckValues();\n let value;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this.shiftValuesAsciiCodes[value]) {\n this.addExtended(this.shiftValuesAsciiCodes[value]);\n } else {\n const characterByValue = this._findCharacterByValue(value);\n this.addPattern(this.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n }\n}\n","import { Code39Base } from './code39';\n\nconst extend = Object.assign;\n\nexport class Code93 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n }\n\n initValue(value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n }\n\n prepareValues() {\n let minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code93 encoding: the current height is ${this.height}px, the minimum required height is ${minHeight}px.`);\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n const minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error(`Insufficient width for Code93 encoding: the current width is ${this.width}px and the minimum required width for value \"${this.value}\" is ${minWidth}px.`);\n }\n }\n\n setBaseUnit() {\n const checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n }\n\n addStart() {\n let pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n }\n\n addStop() {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n }\n\n addBase(charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n }\n\n pushCheckSum() {\n const checkValues = this._getCheckValues();\n let charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n charData = this.characterMap[this._findCharacterByValue(checkValues[i])];\n this.addPattern(charData.pattern);\n }\n }\n\n _getCheckValues() {\n const values = this.values;\n const length = values.length;\n let wightedSum = 0;\n let cValue;\n let kValue;\n let idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx, this.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx + 1, this.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n }\n\n _findCharacterByValue(value) {\n for (let character in this.characterMap) {\n if (this.characterMap[character].value === value) {\n return character;\n }\n }\n }\n\n weightedValue(value, index, total) {\n return (index % total || total) * value;\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n }\n }\n}\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Ean13 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n }\n\n initValue(value, width, height) {\n const valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n }\n\n addData() {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n }\n\n addSide(leftPart, key) {\n for (let i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this.keyTable[key].charAt(i), 10)) {\n this.addPieces(Array.prototype.slice.call(this.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this.addPieces(this.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n }\n\n addPieces(arrToAdd, limitedHeight) {\n for (let i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this.pattern.push({\n y1: 0,\n y2: this.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this.pattern.push(arrToAdd[i]);\n }\n }\n }\n\n calculateChecksum() {\n let odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (let i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n let checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n }\n}\n","import { Ean13 } from './ean13';\n\nconst extend = Object.assign;\n\nexport class Ean8 extends Ean13 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 8\"\n });\n }\n\n initValue(value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n }\n}\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nconst DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport class Encoding extends Class {\n constructor(options) {\n super();\n this.setOptions(options);\n this.initProperties();\n }\n\n initProperties() { }\n\n setOptions(options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n }\n\n encode(value, width, height) {\n const convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n }\n\n initValue() { }\n\n addQuietZone() {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n }\n\n addData() { }\n\n invalidCharacterError(character) {\n throw new Error(`Character \"${character}\" is not valid for symbology ${this.name}.`);\n }\n}\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport const Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c,\n [\"gs1-128\"]: CodeGS1128,\n\n msimod10: MsiMod10,\n msimod11: MsiMod11,\n msimod1010: MsiMod1010,\n msimod1110: MsiMod1110,\n\n postnet: Postnet,\n\n ean8: Ean8,\n ean13: Ean13\n};\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class MsiBase extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n }\n\n setBaseUnit() {\n const startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n }\n\n addCheckSum() {\n const checkSumFunction = this.checkSums[this.checkSumType];\n const checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n this.checkSumLength++;\n this.addPattern(this.characterMap[checkValues[i]]);\n }\n }\n}\n\nexport class MsiMod10 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n }\n}\n\nexport class MsiMod11 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n }\n}\n\nexport class MsiMod1010 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n }\n}\n\nexport class MsiMod1110 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n }\n}\n\nconst checkSums = {\n Modulo10(value) {\n let checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11(value) {\n let weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (let i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10(value) {\n let checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10(value) {\n let checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst extend = Object.assign;\n\nexport class Postnet extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n }\n\n initValue(value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n }\n\n addCheckSum() {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n }\n\n setBaseUnit() {\n const startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n }\n\n validate(value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n }\n\n addPattern(pattern) {\n let y1;\n\n for (let i = 0; i < pattern.length; i++) {\n y1 = this.height - this.baseHeight * pattern.charAt(i);\n this.pattern.push({ width: 1, y1: y1, y2: this.height });\n this.pattern.push(1);\n }\n }\n}\n","export function surfaceSize(element, surfaceType) {\n const display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n const size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","export * from './chart/api-elements';\n\nexport { default as Aggregates } from './chart/aggregates/aggregates';\nexport { default as AreaChart } from './chart/area-chart/area-chart';\nexport { default as AreaSegment } from './chart/area-chart/area-segment';\nexport { default as AxisGroupRangeTracker } from './chart/axis-group-range-tracker';\nexport { default as Bar } from './chart/bar-chart/bar';\nexport { default as BarChart } from './chart/bar-chart/bar-chart';\nexport { default as BarLabel } from './chart/bar-chart/bar-label';\nexport { default as BoxPlotChart } from './chart/box-plot-chart/box-plot-chart';\nexport { default as BoxPlot } from './chart/box-plot-chart/box-plot';\nexport { default as BubbleChart } from './chart/bubble-chart/bubble-chart';\nexport { default as Bullet } from './chart/bullet-chart/bullet';\nexport { default as BulletChart } from './chart/bullet-chart/bullet-chart';\nexport { default as CandlestickChart } from './chart/candlestick-chart/candlestick-chart';\nexport { default as Candlestick } from './chart/candlestick-chart/candlestick';\nexport { default as CategoricalChart } from './chart/categorical-chart';\nexport { default as CategoricalErrorBar } from './chart/error-bars/categorical-error-bar';\nexport { default as CategoricalPlotArea } from './chart/plotarea/categorical-plotarea';\nexport { default as Chart } from './chart/chart';\nexport { default as ChartContainer } from './chart/chart-container';\nexport { default as ClipAnimation } from './chart/animations/clip-animation';\nexport { default as ClusterLayout } from './chart/layout/cluster-layout';\nexport { default as Crosshair } from './chart/crosshair/crosshair';\nexport { default as CrosshairTooltip } from './chart/crosshair/crosshair-tooltip';\nexport { default as DefaultAggregates } from './chart/aggregates/default-aggregates';\nexport { default as DonutChart } from './chart/donut-chart/donut-chart';\nexport { default as DonutPlotArea } from './chart/plotarea/donut-plotarea';\nexport { default as DonutSegment } from './chart/donut-chart/donut-segment';\nexport { default as ErrorBarBase } from './chart/error-bars/error-bar-base';\nexport { default as ErrorRangeCalculator } from './chart/error-bars/error-range-calculator';\nexport { default as Highlight } from './chart/highlight';\nexport { default as SharedTooltip } from './chart/tooltip/shared-tooltip';\nexport { default as Legend } from './chart/legend/legend';\nexport { default as LegendItem } from './chart/legend/legend-item';\nexport { default as LegendLayout } from './chart/legend/legend-layout';\nexport { default as LineChart } from './chart/line-chart/line-chart';\nexport { default as LinePoint } from './chart/line-chart/line-point';\nexport { default as LineSegment } from './chart/line-chart/line-segment';\nexport { default as Pane } from './chart/pane';\nexport { default as PieAnimation } from './chart/animations/pie-animation';\nexport { default as PieChart } from './chart/pie-chart/pie-chart';\nexport { default as PieChartMixin } from './chart/mixins/pie-chart-mixin';\nexport { default as PiePlotArea } from './chart/plotarea/pie-plotarea';\nexport { default as PieSegment } from './chart/pie-chart/pie-segment';\nexport { default as PlotAreaBase } from './chart/plotarea/plotarea-base';\nexport { default as PlotAreaEventsMixin } from './chart/mixins/plotarea-events-mixin';\nexport { default as PlotAreaFactory } from './chart/plotarea/plotarea-factory';\nexport { default as PointEventsMixin } from './chart/mixins/point-events-mixin';\nexport { default as RangeBar } from './chart/range-bar-chart/range-bar';\nexport { default as RangeBarChart } from './chart/range-bar-chart/range-bar-chart';\nexport { default as RangeAreaPoint } from './chart/range-area-chart/range-area-point';\nexport { default as RangeAreaChart } from './chart/range-area-chart/range-area-chart';\nexport { default as ScatterChart } from './chart/scatter-charts/scatter-chart';\nexport { default as ScatterErrorBar } from './chart/error-bars/scatter-error-bar';\nexport { default as ScatterLineChart } from './chart/scatter-charts/scatter-line-chart';\nexport { default as Selection } from './chart/selection';\nexport { default as SeriesAggregator } from './chart/aggregates/series-aggregator';\nexport { default as SeriesBinder } from './chart/series-binder';\nexport { default as SplineSegment } from './chart/line-chart/spline-segment';\nexport { default as SplineAreaSegment } from './chart/area-chart/spline-area-segment';\nexport { default as StackWrap } from './chart/layout/stack-wrap';\nexport { default as Tooltip } from './chart/tooltip/tooltip';\nexport { default as OHLCChart } from './chart/ohlc-chart/ohlc-chart';\nexport { default as OHLCPoint } from './chart/ohlc-chart/ohlc-point';\nexport { default as WaterfallChart } from './chart/waterfall-chart/waterfall-chart';\nexport { default as WaterfallSegment } from './chart/waterfall-chart/waterfall-segment';\nexport { default as XYPlotArea } from './chart/plotarea/xy-plotarea';\nexport { default as MousewheelZoom } from './chart/pan-and-zoom/mousewheel-zoom';\nexport { default as ZoomSelection } from './chart/pan-and-zoom/zoom-selection';\nexport { default as Pannable } from './chart/pan-and-zoom/pannable';\n\nexport * from './chart/utils';","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nconst Aggregates = {\n min: function(values) {\n const length = values.length;\n let min = MAX_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n const length = values.length;\n let max = MIN_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n const length = values.length;\n let sum = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n let result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n const count = countNumbers(values);\n let result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n const length = values.length;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { Class } from '../../common';\n\nclass DefaultAggregates extends Class {\n constructor() {\n super();\n\n this._defaults = {};\n }\n\n register(seriesTypes, aggregates) {\n for (let i = 0; i < seriesTypes.length; i++) {\n this._defaults[seriesTypes[i]] = aggregates;\n }\n }\n\n query(seriesType) {\n return this._defaults[seriesType];\n }\n}\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nclass SeriesAggregator extends Class {\n constructor(series, binder, defaultAggregates) {\n super();\n\n const canonicalFields = binder.canonicalFields(series);\n const valueFields = binder.valueFields(series);\n const sourceFields = binder.sourceFields(series, canonicalFields);\n const seriesFields = this._seriesFields = [];\n const defaults = defaultAggregates.query(series.type);\n const rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (let i = 0; i < canonicalFields.length; i++) {\n const field = canonicalFields[i];\n let fieldAggregate;\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n aggregatePoints(srcPoints, group) {\n const { _series: series, _seriesFields: seriesFields } = this;\n const data = this._bindPoints(srcPoints || []);\n const firstDataItem = data.dataItems[0];\n let result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n const fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (let i = 0; i < seriesFields.length; i++) {\n const field = seriesFields[i];\n const srcValues = this._bindField(data.values, field.canonicalName);\n const value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n }\n\n _bindPoints(points) {\n const { _binder: binder, _series: series } = this;\n const values = [];\n const dataItems = [];\n\n for (let i = 0; i < points.length; i++) {\n const pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n }\n\n _bindField(data, field) {\n const values = [];\n const count = data.length;\n\n for (let i = 0; i < count; i++) {\n const item = data[i];\n const valueFields = item.valueFields;\n let value;\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n}\n\nfunction setValue(fieldName, target, value) {\n let parentObj = target;\n let field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n const parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import './animations/bar-chart-animation';\nimport './animations/bubble-animation';\nimport './animations/fade-in-animation';\nimport './animations/clip-animation';\nimport './animations/pie-animation';","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass BarChartAnimation extends draw.Animation {\n\n setup() {\n const { element, options } = this;\n const bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n const axis = options.vertical ? Y : X;\n\n const fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n }\n\n step(pos) {\n const scaleX = interpolateValue(this.fromScale.x, 1, pos);\n const scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n }\n\n abort() {\n super.abort();\n this.element.transform(null);\n }\n}\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass BubbleAnimation extends draw.Animation {\n setup() {\n const center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n }\n}\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass ClipAnimation extends draw.Animation {\n setup() {\n this._setEnd(this.options.box.x1);\n }\n\n step(pos) {\n const box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n }\n\n _setEnd(x) {\n const element = this.element;\n const segments = element.segments;\n const topRight = segments[1].anchor();\n const bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n}\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass FadeInAnimation extends draw.Animation {\n setup() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n }\n\n step(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n}\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PieAnimation extends draw.Animation {\n setup() {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n }\n}\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","export { default as ChartAxis } from './api-elements/chart-axis';\nexport { default as ChartPane } from './api-elements/chart-pane';\nexport { default as ChartPlotArea } from './api-elements/chart-plotarea';\nexport { default as findAxisByName } from './api-elements/find-axis-by-name';","import { Class } from '../../common';\n\nclass ChartAxis extends Class {\n constructor(axis) {\n super();\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n value(point) {\n const axis = this._axis;\n const value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n }\n\n slot(from, to, limit = true) {\n return this._axis.slot(from, to, limit);\n }\n\n range() {\n return this._axis.range();\n }\n\n valueRange() {\n return this._axis.valueRange();\n }\n}\n\nexport default ChartAxis;","import findAxisByName from './find-axis-by-name';\n\nclass ChartPane {\n constructor(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n }\n\n findAxisByName(name) {\n return findAxisByName(name, this._pane.axes);\n }\n}\n\nexport default ChartPane;","import { Class } from '../../common';\n\nclass ChartPlotArea extends Class {\n constructor(plotArea) {\n super();\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n}\n\nexport default ChartPlotArea;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (let idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nclass AreaChart extends LineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n\n let stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n const missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n let pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n\n const stackPoints = this._stackPoints;\n if (stackPoints) {\n for (let idx = 0; idx < stackPoints.length; idx++) {\n const stackPoint = stackPoints[idx];\n const pointSlot = this.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n }\n\n _gapStackPoints(linePoints, seriesIx, style) {\n const seriesPoints = this.seriesPoints;\n let startIdx = linePoints[0].categoryIx;\n let length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n const endIdx = startIdx + length;\n const pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n const stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (let categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n const pointIx = categoryIx + pointOffset;\n let currentSeriesIx = seriesIx;\n let point;\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n const gapStackPoint = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n }\n\n _previousSegmentPoint(categoryIx, pointIx, segmentIx, seriesIdx) {\n const seriesPoints = this.seriesPoints;\n let index = seriesIdx;\n let point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n }\n\n _createGapStackPoint(categoryIx) {\n const options = this.pointOptions({}, 0);\n const point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default AreaChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nclass AreaSegment extends LineSegment {\n constructor(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n super(linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n createVisual() {\n const series = this.series;\n const defaults = series._defaults;\n const lineOptions = series.line || {};\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n }\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.points());\n }\n\n stackSegments() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n }\n\n segmentsFromPoints(points) {\n return points.map((point) => new geom.Segment(point));\n }\n\n createStroke(style) {\n const stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n }\n\n hasStackSegment() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n }\n\n createFill(style) {\n const strokeSegments = this.strokeSegments();\n const fillSegments = strokeSegments.slice(0);\n const hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n const stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n const fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n }\n\n fillToAxes(fillPath) {\n const chart = this.parent;\n const invertAxes = chart.options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.series);\n const crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n const endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n const segments = this.strokeSegments();\n const firstPoint = segments[0].anchor();\n const lastPoint = last(segments).anchor();\n let end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n}\n\nexport default AreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nclass SplineAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n const curveProcessor = new CurveProcessor(this.options.closed);\n const linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n }\n\n createStackSegments() {\n const strokeSegments = this.strokeSegments();\n const stackSegments = [];\n for (let idx = strokeSegments.length - 1; idx >= 0; idx--) {\n const segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n}\n\nexport default SplineAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nclass StepAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n}\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nclass AxisGroupRangeTracker extends Class {\n constructor() {\n super();\n\n this.axisRanges = {};\n }\n\n update(chartAxisRanges) {\n const axisRanges = this.axisRanges;\n\n for (let axisName in chartAxisRanges) {\n const chartRange = chartAxisRanges[axisName];\n let range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n }\n\n reset(axisName) {\n this.axisRanges[axisName] = undefined;\n }\n\n query(axisName) {\n return this.axisRanges[axisName];\n }\n}\n\nexport default AxisGroupRangeTracker;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass BarChart extends CategoricalChart {\n\n render() {\n super.render();\n this.updateStackRange();\n }\n\n pointType() {\n return Bar;\n }\n\n clusterType() {\n return ClusterLayout;\n }\n\n stackType() {\n return StackWrap;\n }\n\n stackLimits(axisName, stackName) {\n const limits = super.stackLimits(axisName, stackName);\n\n return limits;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const isStacked = options.isStacked;\n const value = this.pointValue(data);\n let pointOptions = this.pointOptions(series, seriesIx);\n\n const labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n let color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const pointType = this.pointType();\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n const clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n const stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n }\n\n getStackWrap(series, cluster) {\n const stack = series.stack;\n const stackGroup = stack ? stack.group || stack : stack;\n const wraps = cluster.children;\n let stackWrap;\n\n if (typeof stackGroup === STRING) {\n for (let i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n const stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n }\n\n categorySlot(categoryAxis, categoryIx, valueAxis) {\n const options = this.options;\n const categorySlot = categoryAxis.getSlot(categoryIx);\n const startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n const zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n const stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n createAnimation() {\n this._setAnimationOptions();\n super.createAnimation();\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n }\n\n _setChildrenAnimation() {\n const points = this.points;\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n }\n\n _setAnimationOptions() {\n const options = this.options;\n const animation = options.animation || {};\n let origin;\n\n if (options.isStacked) {\n const valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n}\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nclass BarLabel extends ChartElement {\n constructor(content, options, pointData) {\n super(options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n createVisual() {\n this.textBox.options.noclip = this.options.noclip;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { vertical, aboveAxis } = options;\n const text = this.children[0];\n const textOptions = text.options;\n const box = text.box;\n const padding = text.options.padding;\n let labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n }\n\n alignToClipBox(clipBox) {\n const vertical = this.options.vertical;\n const field = vertical ? Y : X;\n const start = field + \"1\";\n const end = field + \"2\";\n const text = this.children[0];\n const parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n const targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n}\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nconst BAR_ALIGN_MIN_WIDTH = 6;\n\nclass Bar extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(targetBox);\n }\n }\n }\n\n createVisual() {\n const { box, options } = this;\n const customVisual = options.visual;\n\n if (this.visible !== false) {\n super.createVisual();\n\n if (customVisual) {\n const visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: () => {\n const group = new draw.Group();\n this.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n }\n\n createRect(visual) {\n const options = this.options;\n const border = options.border;\n const strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n const rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n const path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n const width = this.box.width();\n const height = this.box.height();\n\n const size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n const overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n }\n\n createHighlight(style) {\n const highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n getBorderColor() {\n const color = this.color;\n const border = this.options.border;\n const brightness = border._brightness || BORDER_BRIGHTNESS;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n }\n\n tooltipAnchor() {\n const { options, box, aboveAxis } = this;\n const clipBox = this.owner.pane.clipBox() || box;\n let horizontalAlign = LEFT;\n let verticalAlign = TOP;\n let x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n const x1 = Math.max(box.x1, clipBox.x1);\n const x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n}\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default Bar;","const BAR_GAP = 1.5;\nconst BAR_SPACING = 0.4;\nconst BLACK = '#000';\nconst SANS = 'Arial, Helvetica, sans-serif';\nconst SANS11 = \"11px \" + SANS;\nconst SANS12 = '12px ' + SANS;\nconst SANS16 = '16px ' + SANS;\nconst TRANSPARENT = 'transparent';\nconst WHITE = '#fff';\n\nconst notes = () => ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n});\n\nconst axisDefaults = () => ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n});\n\nconst areaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst rangeAreaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst barSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst boxPlotSeries = () => ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n});\n\nconst bubbleSeries = () => ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n});\n\nconst bulletSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n});\n\nconst candlestickSeries = () => ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n});\n\nconst columnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst donutSeries = () => ({\n margin: 1\n});\n\nconst lineSeries = () => ({\n width: 2\n});\n\nconst ohlcSeries = () => ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n});\n\nconst radarAreaSeries = () => ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n});\n\nconst radarLineSeries = () => ({\n markers: {\n visible: false\n },\n width: 2\n});\n\nconst rangeBarSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst rangeColumnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst scatterLineSeries = () => ({\n width: 1\n});\n\nconst waterfallSeries = () => ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n});\n\nconst pieSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst funnelSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst heatmapSeries = () => ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n});\n\nconst seriesDefaults = (options) => ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n});\n\nconst title = () => ({\n font: SANS16\n});\n\nconst legend = () => ({\n labels: {\n font: SANS12\n }\n});\n\nexport const baseTheme = (options = {}) => ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n legend: legend()\n});\n\n","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nclass BoxPlotChart extends CandlestickChart {\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n }\n\n splitValue(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n let parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n }\n\n filterOutliers(items) {\n const length = (items || []).length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default BoxPlotChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nclass BoxPlot extends Candlestick {\n constructor(value, options) {\n super(value, options);\n\n this.createNote();\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n let whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n const medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n const meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n }\n\n reflowBoxSlot(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n }\n\n renderOutliers(options) {\n const value = this.value;\n const outliers = value.outliers || [];\n const outerFence = Math.abs(value.q3 - value.q1) * 3;\n const elements = [];\n let markers = options.markers || {};\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n let markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this.color)) {\n markersBorder.color = this.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n const shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n }\n\n reflowOutliers(outliers) {\n const valueAxis = this.owner.seriesValueAxis(this.options);\n const center = this.box.center();\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i].value;\n const markerBox = valueAxis.getSlot(outlierValue);\n\n if (this.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this.box = this.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n }\n\n mainVisual(options) {\n const group = super.mainVisual(options);\n const outliers = this.renderOutliers(options);\n\n for (let i = 0; i < outliers.length; i++) {\n const element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n }\n\n getBorderColor() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return super.getBorderColor();\n }\n}\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {6:d}
    Lower:{0:C}
    Q1:{1:C}
    Median:{2:C}
    Mean:{5:C}
    Q3:{3:C}
    Upper:{4:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nclass VerticalBoxPlot extends BoxPlot {\n reflowBoxSlot(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n}\n\nexport default VerticalBoxPlot;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass BubbleChart extends ScatterChart {\n _initFields() {\n this._maxSize = MIN_VALUE;\n super._initFields();\n }\n\n addValue(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n super.addValue(value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n }\n\n reflow(box) {\n this.updateBubblesSize(box);\n super.reflow(box);\n }\n\n pointType() {\n return Bubble;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n const pointsCount = series.data.length;\n const delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n const animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n let color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n let pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n const point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n updateBubblesSize(box) {\n const { options: { series } } = this;\n const boxSize = Math.min(box.width(), box.height());\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesPoints = this.seriesPoints[seriesIx];\n const minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n const maxSize = currentSeries.maxSize || boxSize * 0.2;\n const minR = minSize / 2;\n const maxR = maxSize / 2;\n const minArea = Math.PI * minR * minR;\n const maxArea = Math.PI * maxR * maxR;\n const areaRange = maxArea - minArea;\n const areaRatio = areaRange / this._maxSize;\n\n for (let pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n const point = seriesPoints[pointIx];\n if (point) {\n const area = Math.abs(point.value.size) * areaRatio;\n const radius = Math.sqrt((minArea + area) / Math.PI);\n const baseZIndex = valueOrDefault(point.options.zIndex, 0);\n const zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n }\n\n createAnimation() {}\n createVisual() {}\n}\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nclass Bubble extends LinePoint {\n constructor(value, options) {\n super(value, options);\n\n this.category = value.category;\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const border = highlight.border;\n const markers = this.options.markers;\n const center = this.box.center();\n const radius = (markers.size + markers.border.width + border.width) / 2;\n const highlightGroup = new draw.Group();\n const shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n const overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n}\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nclass BulletChart extends CategoricalChart {\n constructor(plotArea, options) {\n\n wrapData(options);\n\n super(plotArea, options);\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n plotRange(point) {\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const value = data.valueFields;\n\n let bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n let color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(\n bulletOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n const bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n }\n\n updateRange(value, fields) {\n const { current, target } = value;\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n }\n\n pointValue(data) {\n return data.valueFields.current;\n }\n\n aboveAxis(point) {\n const value = point.value.current;\n\n return value > 0;\n }\n\n createAnimation() {\n const points = this.points;\n\n this._setAnimationOptions();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n}\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n const series = options.series;\n\n for (let i = 0; i < series.length; i++) {\n const seriesItem = series[i];\n const data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { ChartElement, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Bullet extends ChartElement {\n constructor(value, options) {\n super(options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n const options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createNote();\n }\n }\n\n reflow(box) {\n this.render();\n\n const { options, target, owner: chart } = this;\n const invertAxes = options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.options);\n const categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n const targetValueSlot = valueAxis.getSlot(this.value.target);\n const targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n const targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n const targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n const body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n }\n\n createAnimation() {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n }\n\n createHighlight(style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n }\n\n highlightVisual() {\n return this.bodyVisual;\n }\n\n highlightVisualArgs() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n}\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n tooltip: {\n format: \"Current: {0}
    Target: {1}\"\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass Target extends ShapeElement { }\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nclass CandlestickChart extends CategoricalChart {\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n return Candlestick;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const pointType = this.pointType();\n const value = data.valueFields;\n let pointOptions = deepExtend({}, series);\n let color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n }\n\n splitValue(value) {\n return [ value.low, value.open, value.close, value.high ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const parts = this.splitValue(value);\n let axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n }\n\n animationPoints() {\n return this.points;\n }\n}\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Candlestick extends ChartElement {\n constructor(value, options) {\n super(options);\n this.value = value;\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const ocSlot = valueAxis.getSlot(value.open, value.close);\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n const mid = lhSlot.center().x;\n const points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n }\n\n reflowNote() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n }\n\n createVisual() {\n super.createVisual();\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n }\n\n mainVisual(options) {\n const group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n }\n\n createBody(container, options) {\n const body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n }\n\n drawLines(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n const lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n }\n\n getBorderColor() {\n const border = this.options.border;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n }\n\n createOverlay() {\n const overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const normalColor = this.color;\n\n this.color = highlight.color || this.color;\n const overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n }\n\n highlightVisual() {\n return this._mainVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n const clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n}\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {4:d}
    Open:{0:C}
    High:{1:C}
    Low:{2:C}
    Close:{3:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport SeriesBinder from './series-binder';\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport evalOptions from './utils/eval-options';\nimport categoriesCount from './utils/categories-count';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nclass CategoricalChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n }\n\n plotValue(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n const otherValues = [];\n let categorySum = 0;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n if (other) {\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n }\n\n plotRange(point, startValue = 0) {\n const categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n let plotValue = this.plotValue(point);\n const positive = plotValue >= 0;\n let prevValue = startValue;\n let isStackedBar = false;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n const otherValue = this.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n }\n\n stackLimits(axisName, stackName) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let i = 0; i < this.categoryPoints.length; i++) {\n const categoryPoints = this.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (let pIx = 0; pIx < categoryPoints.length; pIx++) {\n const point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n const to = this.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n }\n\n updateStackRange() {\n const { isStacked, series: chartSeries } = this.options;\n const limitsCache = {};\n\n if (isStacked) {\n for (let i = 0; i < chartSeries.length; i++) {\n const series = chartSeries[i];\n const axisName = series.axis;\n const key = axisName + series.stack;\n\n let limits = limitsCache[key];\n if (!limits) {\n limits = this.stackLimits(axisName, series.stack);\n\n const errorTotals = this.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this.valueAxisRanges[axisName] = limits;\n }\n }\n }\n }\n\n addErrorBar(point, data, categoryIx) {\n const { value, series, seriesIx } = point;\n const errorBars = point.options.errorBars;\n const lowValue = data.fields[ERROR_LOW_FIELD];\n const highValue = data.fields[ERROR_HIGH_FIELD];\n let errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n }\n\n addPointErrorBar(point, categoryIx) {\n const isVertical = !this.options.invertAxes;\n const options = point.options.errorBars;\n let { series, low, high } = point;\n\n if (this.options.isStacked) {\n const stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n const fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n const errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n }\n\n stackedErrorRange(point, categoryIx) {\n const plotValue = this.plotRange(point, 0)[1] - point.value;\n const low = point.low + plotValue;\n const high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n }\n\n addValue(data, fields) {\n const { categoryIx, series, seriesIx } = fields;\n\n let categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n let seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n const point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n }\n\n evalPointOptions(options, value, category, categoryIx, series, seriesIx) {\n const state = { defaults: series._defaults, excluded: [ \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n }\n\n updateRange(data, fields) {\n const axisName = fields.series.axis;\n const value = data.value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n }\n\n seriesValueAxis(series) {\n const plotArea = this.plotArea;\n const axisName = series.axis;\n const axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n }\n\n reflow(targetBox) {\n const categorySlots = this.categorySlots = [];\n const chartPoints = this.points;\n const categoryAxis = this.categoryAxis;\n let pointIx = 0;\n\n this.traverseDataPoints((data, fields) => {\n const { categoryIx, series: currentSeries } = fields;\n\n const valueAxis = this.seriesValueAxis(currentSeries);\n const point = chartPoints[pointIx++];\n\n let categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n const plotRange = this.plotRange(point, valueAxis.startValue());\n const valueSlot = this.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n const pointSlot = this.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this.options.isStacked100) {\n point.percentage = this.plotValue(point);\n }\n\n this.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n }\n\n valueSlot(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n }\n\n limitPoints() {\n const categoryPoints = this.categoryPoints;\n const points = categoryPoints[0].concat(last(categoryPoints));\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this.limitPoint(points[idx]);\n }\n }\n }\n\n limitPoint(point) {\n const limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n }\n\n aboveAxis(point, valueAxis) {\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n const value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n }\n\n categoryAxisCrossingValue(valueAxis) {\n const categoryAxis = this.categoryAxis;\n const options = valueAxis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n }\n\n reflowPoint(point, pointSlot) {\n point.reflow(pointSlot);\n }\n\n reflowCategories() { }\n\n pointSlot(categorySlot, valueSlot) {\n const options = this.options;\n const invertAxes = options.invertAxes;\n const slotX = invertAxes ? valueSlot : categorySlot;\n const slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const count = categoriesCount(series);\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentCategory = this.categoryAxis.categoryAt(categoryIx);\n const pointData = this._bindPoint(currentSeries, seriesIx, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx\n });\n }\n }\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMaxPoint\", seriesIx, callback);\n }\n }\n\n _outOfRangeCallback(series, field, seriesIx, callback) {\n const outOfRangePoint = series[field];\n if (outOfRangePoint) {\n const categoryIx = outOfRangePoint.categoryIx;\n const pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n }\n\n _bindPoint(series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n let bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n let data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n }\n\n formatPointValue(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n }\n\n pointValue(data) {\n return data.valueFields.value;\n }\n}\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nclass ChartContainer extends ChartElement {\n constructor(options, pane) {\n super(options);\n this.pane = pane;\n }\n\n shouldClip() {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n }\n\n _clipBox() {\n return this.pane.chartsBox();\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n const clipBox = this.clipBox = this._clipBox();\n const clipRect = clipBox.toRect();\n const clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n unclipLabels() {\n const { children: charts, clipBox } = this;\n\n for (let i = 0; i < charts.length; i++) {\n const points = charts[i].points || {};\n const length = points.length;\n\n for (let j = 0; j < length; j++) {\n const point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n const { label, note } = point;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n }\n\n destroy() {\n super.destroy();\n\n delete this.parent;\n }\n}\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n HashMap, valueOrDefault } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nconst AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nconst MOUSEMOVE = \"mousemove\";\nconst CONTEXTMENU = \"contextmenu\";\nconst MOUSELEAVE = \"mouseleave\";\nconst MOUSEMOVE_DELAY = 20;\n\nclass Chart extends Class {\n constructor(element, userOptions, themeOptions, context = {}) {\n super();\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n const options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, () => {\n this.fontLoaded = true;\n if (!this._destroyed) {\n this.trigger('init');\n this._redraw();\n this._attachEvents();\n }\n });\n }\n\n _initElement(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n }\n\n _setElementClass(element) {\n addClass(element, \"k-chart\");\n }\n\n _initTheme(options, themeOptions) {\n const seriesCopies = [];\n const series = options.series || [];\n\n for (let i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n }\n\n getSize() {\n const chartArea = this.options.chartArea || {};\n const width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n const height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this._size;\n const hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, s => !s.visible)) {\n this._destroySelections();\n this._setupSelection();\n }\n }\n\n _resize() {\n this._noTransitionsRedraw();\n }\n\n redraw(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n }\n\n getAxis(name) {\n return findAxisByName(name, this._plotArea.axes);\n }\n\n findAxisByName(name) {\n return this.getAxis(name);\n }\n\n findPaneByName(name) {\n const panes = this._plotArea.panes;\n\n for (let idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n }\n\n findPaneByIndex(idx) {\n const panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n }\n\n plotArea() {\n return new ChartPlotArea(this._plotArea);\n }\n\n toggleHighlight(show, filter) {\n const plotArea = this._plotArea;\n const firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n let points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n let seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (firstSeries.type === PIE || firstSeries.type === FUNNEL) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n }\n\n togglePointsHighlight(show, points) {\n const highlight = this._highlight;\n for (let idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n }\n\n showTooltip(filter) {\n const shared = this._sharedTooltip();\n const { _tooltip: tooltip, _plotArea: plotArea } = this;\n let point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n const points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n }\n\n hideTooltip() {\n this._tooltip.hide();\n }\n\n _initSurface() {\n const surface = this.surface;\n const wrap = this._surfaceWrap();\n\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceWrap() {\n return this.element;\n }\n\n _redraw() {\n const model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n }\n\n exportVisual(exportOptions) {\n let visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n const currentOptions = this.options;\n const options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n const model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n }\n\n _sharedTooltip() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n }\n\n _createPannable() {\n const options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n }\n\n _createZoomSelection() {\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n }\n\n _createMousewheelZoom() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n }\n\n _toggleDragZoomEvents() {\n const pannable = this.options.pannable;\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n const mousewheel = (zoomable || {}).mousewheel;\n const allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n const allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n const element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n }\n\n _toggleDomEvents(drag, zoom) {\n const domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n }\n\n _createTooltip() {\n const { options: { tooltip: tooltipOptions } } = this;\n let tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n applyDefaults(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n }\n\n applySeriesColors() {\n const options = this.options;\n const series = options.series;\n const colors = options.seriesColors || [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const seriesColor = colors[i % colors.length];\n const defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n }\n\n _getModel() {\n const options = this.options;\n const plotArea = this._createPlotArea();\n const model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n Title.buildTitle(options.title, model);\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n }\n\n _modelOptions() {\n const options = this.options;\n const size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n }\n\n _createPlotArea(skipSeries) {\n const options = this.options;\n\n const plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n }\n\n _setupSelection() {\n const { _plotArea: { axes } } = this;\n const selections = this._selections = [];\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n const range = axis.range();\n\n const selection = new Selection(this, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n }\n\n _selectStart(e) {\n return this.trigger(SELECT_START, e);\n }\n\n _select(e) {\n return this.trigger(SELECT, e);\n }\n\n _selectEnd(e) {\n return this.trigger(SELECT_END, e);\n }\n\n _initHandlers() {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n }\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n _attachEvents() {\n const element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, { [ MOUSEMOVE ]: this._mousemove });\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n }\n\n _mouseleave(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotArea.hovered) {\n this.trigger(PLOT_AREA_LEAVE);\n this._plotArea.hovered = false;\n }\n }\n\n _cancelDomEvents() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n }\n\n _gesturestart(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n }\n\n _gestureend(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n }\n\n _gesturechange(e) {\n const mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n const previousGestureDistance = this._gestureDistance;\n let scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n const args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n const coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n const ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n }\n\n _mouseout(e) {\n if (e.element) {\n const element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n }\n\n _start(e) {\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n }\n\n _move(e) {\n let { _navState: state, _pannable: pannable } = this;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n const ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n const ranges = {};\n const axes = state.axes;\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n const axis = currentAxis.options.vertical ? e.y : e.x;\n const delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges;\n this.trigger(DRAG, {\n axisRanges: ranges,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n }\n\n _end(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n const pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n const ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n }\n\n _stopChartHandlers(e) {\n const selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (let idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n }\n\n _mousewheelZoomRate() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n }\n\n _mousewheel(e) {\n const delta = mousewheelDelta(e);\n const mousewheelZoom = this._mousewheelZoom;\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n const args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(() => {\n this.trigger(ZOOM_END, args);\n this._zooming = false;\n if (this.surface) {\n this.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n let state = this._navState;\n if (!state) {\n const prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n const totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n const axes = this._navState.axes;\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n }\n\n _startNavigation(e, coords, chartEvent) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPointPane(coords);\n const axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n const ranges = axisRanges(axes);\n\n const prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n }\n\n _endNavigation(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n }\n\n _getChartElement(e, match) {\n const element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n }\n\n _drawingChartElement(element, e, match) {\n let current = element;\n let chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n }\n\n _eventCoordinates(e) {\n const coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n }\n\n _elementPadding() {\n if (!this._padding) {\n const { paddingLeft, paddingTop } = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n }\n\n _toDocumentCoordinates(point) {\n const padding = this._elementPadding();\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n }\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n _toModelCoordinates(clientX, clientY) {\n const element = this.element;\n const offset = elementOffset(element);\n const padding = this._elementPadding();\n const inverseTransform = elementScale(element).invert();\n const point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n }\n\n _tap(e) {\n const drawingElement = this.surface.eventTarget(e);\n const element = this._drawingChartElement(drawingElement, e);\n const sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(() => {\n this.handlingTap = false;\n }, 0);\n }\n\n _click(e) {\n const element = this._getChartElement(e);\n this._propagateClick(element, e);\n }\n\n _propagateClick(element, e) {\n let current = element;\n while (current) {\n if (current.click) {\n current.click(this, e);\n }\n\n current = current.parent;\n }\n }\n\n _startHover(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n let point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n const activePoint = this._activePoint;\n const multipleSeries = this._plotArea.series.length > 1;\n const hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n } else if (!point && hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n\n return point;\n }\n\n _displayTooltip(point) {\n const tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n }\n\n _displayInactiveOpacity(activePoint, multipleSeries, highlightPoints) {\n const chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n let inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n }\n\n _getInactivePoints(activePoint, chartInstance) {\n let allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(point => point !== activePoint);\n }\n\n _getAllPointsOfType(container, type) {\n let points = [];\n\n for (let i = 0; i < container.children.length; i++) {\n const element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n }\n\n _updateHoveredPoint(point, e) {\n const hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n }\n\n _updateSeriesOpacity(point, resetOpacity) {\n const plotArea = this._plotArea;\n const length = plotArea.series.length;\n\n for (let i = 0; i < length; i++) {\n const currSeries = plotArea.series[i];\n const defaultOpacity = this._getDefaultOpacityForSeries(currSeries);\n const inactiveOpacity = this._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n }\n\n _applySeriesOpacity(elements, activeSeries, reset, series) {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const currSeries = element.series || series;\n const shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n const opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n }\n\n _chartInstanceFromPoint(point) {\n let chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n }\n\n _hasInactiveOpacity() {\n let hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n let hasInactiveOpacity = this.options.series.filter(s => s.highlight.inactiveOpacity !== undefined ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n }\n\n _getInactiveOpacityForSeries(series) {\n let defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n let seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _getDefaultOpacityForSeries(series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _mouseover(e) {\n const point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n }\n\n _mouseMoveTracking(e) {\n const { options, _tooltip: tooltip, _highlight: highlight, _activePoint: point } = this;\n const coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n const seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n const tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n }\n }\n\n _mousemove(e) {\n const coords = this._eventCoordinates(e);\n const plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n const overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n plotArea.hovered = true;\n this._plotArea.hover(this, e);\n } else if (plotArea.hovered && !overPlotArea) {\n this.trigger(PLOT_AREA_LEAVE);\n plotArea.hovered = false;\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n }\n\n _trackCrosshairs(coords) {\n const crosshairs = this._plotArea.crosshairs;\n\n for (let i = 0; i < crosshairs.length; i++) {\n const current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n }\n\n _trackSharedTooltip(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n const { options: { tooltip: tooltipOptions }, _plotArea: plotArea, _plotArea: { categoryAxis }, _tooltip: tooltip, _highlight: highlight } = this;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n const index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n const points = plotArea.pointsByCategoryIndex(index);\n const pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n const hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n }\n\n hideElements(options) {\n const plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n }\n\n _unsetActivePoint(options) {\n const { _tooltip: tooltip, _highlight: highlight } = this;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n }\n\n _deferRedraw() {\n this._redraw();\n }\n\n _clearRedrawTimeout() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n }\n\n bindCategories() {\n const options = this.options;\n const definitions = [].concat(options.categoryAxis);\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n }\n\n bindCategoryAxisFromSeries(axis, axisIx) {\n const series = this.options.series;\n const seriesLength = series.length;\n const uniqueCategories = new HashMap();//perf improvement in case type category with dates\n let items = [];\n let bindable = false;\n let dateAxis;\n\n for (let seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n const s = series[seriesIx];\n const onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n const data = s.data;\n const dataLength = data.length;\n const bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n const getFn = dateAxis ? getDateField : getField;\n\n for (let dataIx = 0; dataIx < dataLength; dataIx++) {\n const dataRow = data[dataIx];\n const category = getFn(s.categoryField, dataRow, this.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dateComparer(a[0], b[0]);\n });\n }\n\n const result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n }\n\n _isBindable(series) {\n const valueFields = SeriesBinder.current.valueFields(series);\n let result = true;\n\n for (let i = 0; i < valueFields.length; i++) {\n let field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n }\n\n _noTransitionsRedraw() {\n const options = this.options;\n let transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n }\n\n _legendItemHover(seriesIndex, pointIndex) {\n const { _plotArea: plotArea, _highlight: highlight } = this;\n const currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n let items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n const multipleSeries = plotArea.series.length > 1;\n const point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n }\n\n _shouldAttachMouseMove() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n }\n\n updateMouseMoveHandler() {\n unbindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n }\n }\n\n applyOptions(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n }\n\n setOptions(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n }\n\n setDirection(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n }\n\n setIntlService(intl) {\n this.chartService.intl = intl;\n }\n\n noTransitionsRedraw() {\n this._noTransitionsRedraw();\n }\n\n destroy() {\n this._destroyed = true;\n\n unbindEvents(this.element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSEMOVE ]: this._mousemove,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n }\n\n _destroySurface() {\n const surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n }\n\n _destroySelections() {\n const selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n }\n\n _destroyView() {\n const model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n}\n\nfunction resolveAxisAliases(options) {\n const aliases = AXIS_NAMES;\n\n for (let idx = 0; idx < aliases.length; idx++) {\n const alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n const themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n let axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n const axisColor = (axisOptions || {}).color || axisDefaults.color;\n const result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (let idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n const series = options.series;\n const seriesLength = series.length;\n const seriesDefaults = options.seriesDefaults;\n const commonDefaults = deepExtend({}, options.seriesDefaults);\n const themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n const commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (let i = 0; i < seriesLength; i++) {\n const seriesType = series[i].type || options.seriesDefaults.type;\n\n const baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nfunction sortDates(dates, comparer = dateComparer) {\n for (let i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n}\n\nfunction uniqueDates(srcDates, comparer = dateComparer) {\n const dates = sortDates(srcDates, comparer);\n const length = dates.length;\n const result = length > 0 ? [ dates[0] ] : [];\n\n for (let i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n}\n\nfunction transpose(rows) {\n const rowCount = rows.length;\n const result = [];\n\n for (let rowIx = 0; rowIx < rowCount; rowIx++) {\n const row = rows[rowIx];\n const colCount = row.length;\n\n for (let colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n}\n\nconst DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (let field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n const fieldValue = options[field];\n const originalValue = originalOptions[field];\n if (defined(originalValue)) {\n const nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (let idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nconst INITIAL_ANIMATION_DURATION = 600;\nconst FADEIN = \"fadeIn\";\n\nconst GLASS = \"glass\";\nconst BORDER_BRIGHTNESS = 0.8;\nconst TOOLTIP_OFFSET = 5;\nconst START_SCALE = browser.msie ? 0.001 : 0;\nconst ERROR_LOW_FIELD = \"errorLow\";\nconst ERROR_HIGH_FIELD = \"errorHigh\";\nconst X_ERROR_LOW_FIELD = \"xErrorLow\";\nconst X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nconst Y_ERROR_LOW_FIELD = \"yErrorLow\";\nconst Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nconst LINE_MARKER_SIZE = 8;\nconst ZERO = \"zero\";\nconst INTERPOLATE = \"interpolate\";\nconst GAP = \"gap\";\nconst ABOVE = \"above\";\nconst BELOW = \"below\";\n\nconst SMOOTH = \"smooth\";\nconst STEP = \"step\";\n\nconst AREA = \"area\";\nconst BAR = \"bar\";\nconst BOX_PLOT = \"boxPlot\";\nconst BUBBLE = \"bubble\";\nconst BULLET = \"bullet\";\nconst CANDLESTICK = \"candlestick\";\nconst COLUMN = \"column\";\nconst DONUT = \"donut\";\nconst FUNNEL = \"funnel\";\nconst HEATMAP = \"heatmap\";\nconst HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nconst LINE = \"line\";\nconst OHLC = \"ohlc\";\nconst PIE = \"pie\";\nconst POLAR_AREA = \"polarArea\";\nconst POLAR_LINE = \"polarLine\";\nconst POLAR_SCATTER = \"polarScatter\";\nconst RADAR_AREA = \"radarArea\";\nconst RADAR_COLUMN = \"radarColumn\";\nconst RADAR_LINE = \"radarLine\";\nconst RANGE_AREA = \"rangeArea\";\nconst RANGE_BAR = \"rangeBar\";\nconst RANGE_COLUMN = \"rangeColumn\";\nconst SCATTER = \"scatter\";\nconst SCATTER_LINE = \"scatterLine\";\nconst VERTICAL_AREA = \"verticalArea\";\nconst VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nconst VERTICAL_BULLET = \"verticalBullet\";\nconst VERTICAL_LINE = \"verticalLine\";\nconst VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nconst WATERFALL = \"waterfall\";\nconst EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nconst LEGEND_ITEM_CLICK = \"legendItemClick\";\nconst LEGEND_ITEM_HOVER = \"legendItemHover\";\nconst LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nconst SERIES_CLICK = \"seriesClick\";\nconst SERIES_HOVER = \"seriesHover\";\nconst SERIES_OVER = \"seriesOver\";\nconst SERIES_LEAVE = \"seriesLeave\";\nconst PLOT_AREA_CLICK = \"plotAreaClick\";\nconst PLOT_AREA_HOVER = \"plotAreaHover\";\nconst PLOT_AREA_LEAVE = \"plotAreaLeave\";\nconst DRAG = \"drag\";\nconst DRAG_END = \"dragEnd\";\nconst DRAG_START = \"dragStart\";\nconst ZOOM_START = \"zoomStart\";\nconst ZOOM = \"zoom\";\nconst ZOOM_END = \"zoomEnd\";\nconst SELECT_START = \"selectStart\";\nconst SELECT = \"select\";\nconst SELECT_END = \"selectEnd\";\nconst RENDER = \"render\";\nconst SHOW_TOOLTIP = \"showTooltip\";\nconst HIDE_TOOLTIP = \"hideTooltip\";\nconst PANE_RENDER = \"paneRender\";\n\nconst LOGARITHMIC = \"log\";\nconst CATEGORY = \"category\";\n\nconst INSIDE_END = \"insideEnd\";\nconst INSIDE_BASE = \"insideBase\";\nconst OUTSIDE_END = \"outsideEnd\";\n\nconst MOUSEWHEEL = \"DOMMouseScroll mousewheel\";\nconst MOUSEWHEEL_DELAY = 150;\nconst MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE, GLASS,\n BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP\n};\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass CrosshairTooltip extends BaseTooltip {\n constructor(chartService, crosshair, options) {\n super(chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n initAxisName() {\n const axis = this.crosshair.axis;\n const plotArea = axis.plotArea;\n let name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n }\n\n showAt(point) {\n const { crosshair: { axis }, options } = this;\n let value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n let formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n }\n\n hide() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n }\n\n getAnchor() {\n const { crosshair, options: { position, padding } } = this;\n const vertical = !crosshair.axis.options.vertical;\n const lineBox = crosshair.line.bbox();\n let horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n}\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass Crosshair extends ChartElement {\n constructor(chartService, axis, options) {\n super(options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n const tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n showAt(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n }\n\n hide() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n }\n\n moveLine() {\n const { axis, point } = this;\n const vertical = axis.options.vertical;\n const box = this.getBox();\n const dim = vertical ? Y : X;\n const lineStart = new geom.Point(box.x1, box.y1);\n let lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n const slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n }\n\n getBox() {\n const axis = this.axis;\n const axes = axis.pane.axes;\n const length = axes.length;\n const vertical = axis.options.vertical;\n const box = axis.lineBox().clone();\n const dim = vertical ? X : Y;\n let axisLineBox;\n\n for (let i = 0; i < length; i++) {\n const currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n }\n\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n super.destroy();\n }\n}\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst DONUT_SECTOR_ANIM_DELAY = 50;\n\nclass DonutChart extends PieChart {\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (!value || fields.visible === false) {\n return;\n }\n\n const segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const series = options.series;\n const seriesCount = series.length;\n\n let padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n let totalSize = halfMinWidth - padding;\n let seriesWithoutSize = 0;\n let holeSize;\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n const currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n let innerRadius = holeSize;\n let margin = 0;\n let size, radius;\n\n this.seriesConfigs = [];\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n size = valueOrDefault(currentSeries.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries.margin || 0;\n innerRadius = radius;\n }\n\n super.reflow(targetBox);\n }\n\n animationDelay(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n}\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass DonutSegment extends PieSegment {\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n const lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n super.reflowLabel();\n }\n }\n }\n\n createSegment(sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n }\n}\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import ErrorBarBase from './error-bar-base';\n\nclass CategoricalErrorBar extends ErrorBarBase {\n getAxis() {\n const axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n}\n\nexport default CategoricalErrorBar;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nconst DEFAULT_ERROR_BAR_WIDTH = 4;\n\nclass ErrorBarBase extends ChartElement {\n constructor(low, high, isVertical, chart, series, options) {\n super(options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n reflow(targetBox) {\n const endCaps = this.options.endCaps;\n const isVertical = this.isVertical;\n const axis = this.getAxis();\n const valueBox = axis.getSlot(this.low, this.high);\n const centerBox = targetBox.center();\n const capsWidth = this.getCapsWidth(targetBox, isVertical);\n const capValue = isVertical ? centerBox.x : centerBox.y;\n const capStart = capValue - capsWidth;\n const capEnd = capValue + capsWidth;\n let linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n }\n\n getCapsWidth(box, isVertical) {\n const boxSize = isVertical ? box.width() : box.height();\n const capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n }\n\n createVisual() {\n const options = this.options;\n const visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: () => {\n this.createDefaultVisual();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n }\n\n createDefaultVisual() {\n const { options, linePoints } = this;\n const lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n super.createVisual();\n\n for (let idx = 0; idx < linePoints.length; idx += 2) {\n const line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this.visual.append(line);\n }\n }\n}\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nconst STD_ERR = \"stderr\";\nconst STD_DEV = \"stddev\";\nconst percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nconst standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nclass ErrorRangeCalculator extends Class {\n constructor(errorValue, series, field) {\n super();\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n initGlobalRanges(errorValue, series, field) {\n const data = series.data;\n const deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n const average = this.getAverage(data);\n const deviation = this.getStandardDeviation(data, average, false);\n const multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n const errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n const standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n }\n\n createValueGetter(series, field) {\n const data = series.data;\n const binder = SeriesBinder.current;\n const valueFields = binder.valueFields(series);\n const item = defined(data[0]) ? data[0] : {};\n let valueGetter;\n\n if (isArray(item)) {\n const index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n const srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n }\n\n getErrorRange(pointValue, errorValue) {\n let low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n const percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n }\n\n getStandardError(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n }\n\n getStandardDeviation(data, average, isSample) {\n const length = data.length;\n const total = isSample ? average.count - 1 : average.count;\n let squareDifferenceSum = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n }\n\n getAverage(data) {\n const length = data.length;\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n}\n\nexport default ErrorRangeCalculator;","import ErrorBarBase from './error-bar-base';\n\nclass ScatterErrorBar extends ErrorBarBase {\n getAxis() {\n const axes = this.chart.seriesAxes(this.series);\n const axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n}\n\nexport default ScatterErrorBar;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nclass FunnelChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format,point.value);\n }\n\n render() {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const series = options.series[0];\n const data = series.data;\n\n if (!data) {\n return;\n }\n\n const { total, points } = bindSegments(series);\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n let fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n const value = pointData.valueFields.value;\n const segment = this.createSegment(value, fields);\n const label = this.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n }\n\n createSegment(value, fields) {\n const seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n const segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n }\n\n createLabel(value, fields) {\n const { series, dataItem } = fields;\n const labels = deepExtend({}, this.options.labels, series.labels);\n let text = value;\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n const textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n }\n\n labelPadding() {\n const labels = this.labels;\n const padding = { left: 0, right: 0 };\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n const align = label.options.align;\n if (align !== CENTER) {\n const width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n }\n\n dynamicSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const firstSegment = segments[0];\n let maxSegment = firstSegment;\n\n for (let idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n let lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n let previousOffset = (width - lastUpperSide) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const percentage = segments[idx].percentage;\n const nextSegment = segments[idx + 1];\n const nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n const points = segments[idx].points = [];\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n let offset;\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n }\n\n constantSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const decreasingWidth = options.neckRatio <= 1;\n const neckRatio = decreasingWidth ? options.neckRatio * width : width;\n let previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n const topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n const finalNarrow = (topMostWidth - neckRatio) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const points = segments[idx].points = [];\n const percentage = segments[idx].percentage;\n const offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n }\n\n reflow(chartBox) {\n const points = this.points;\n const count = points.length;\n\n if (!count) {\n return;\n }\n\n const options = this.options;\n const box = chartBox.clone().unpad(this.labelPadding());\n const totalHeight = box.height() - options.segmentSpacing * (count - 1);\n const width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (let idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n}\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass FunnelSegment extends ChartElement {\n constructor(value, options, segmentOptions) {\n super(options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n reflow(chartBox) {\n const points = this.points;\n const label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n }\n\n createVisual() {\n const options = this.options;\n let visual;\n\n super.createVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: () => this.createPath()\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n }\n\n createPath() {\n const options = this.options;\n const border = options.border;\n const path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n }\n\n createHighlight(style) {\n return draw.Path.fromPoints(this.points, style);\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n }\n\n formatValue(format) {\n const point = this;\n return point.owner.formatPointValue(point, format);\n }\n}\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nconst colorScale = (color, minLightnessOffset = 0.05) => {\n const baseColor = parseColor(color);\n const offset = 1 - minLightnessOffset;\n\n return (value) => {\n const hsl = baseColor.toHSL();\n const range = 100 - hsl.l;\n const point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport CategoricalChart from '../categorical-chart';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nclass HeatmapChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n }\n\n render() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n setRange() {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n if (defined(valueFields.value) && valueFields.value !== null) {\n this.valueRange.min = Math.min(this.valueRange.min, valueFields.value);\n this.valueRange.max = Math.max(this.valueRange.max, valueFields.value);\n }\n }\n }\n }\n\n addValue(value, fields) {\n let point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return HeatmapPoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n const scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n const point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const { xAxis, yAxis } = this.seriesAxes(fields.series);\n const indexX = xAxis.categoryIndex(value.x);\n const indexY = yAxis.categoryIndex(value.y);\n const slotX = xAxis.getSlot(indexX, indexX, limit);\n const slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n const xRange = xAxis.currentRangeIndices();\n const yRange = yAxis.currentRangeIndices();\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n const xIndex = xAxis.totalIndex(value.x);\n const yIndex = yAxis.totalIndex(value.y);\n const xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n const yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\ndeepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default HeatmapChart;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass HeatmapPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n let labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n }\n\n markerBox() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const rect = this.box.toRect();\n const type = valueOrDefault(markers.type, 'rect');\n const isRoundRect = type === ROUNDED_RECT;\n let borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n const halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n const center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n }\n\n markerBorder() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n }\n\n createMarker() {\n const options = this.options;\n const markerOptions = options.markers;\n const marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n }\n\n createHighlight(style) {\n const options = this.options;\n const markerOptions = this.options.highlight.markers || this.options.markers;\n\n const highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n const visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n tooltipAnchor() {\n const left = this.box.center().x;\n const top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n /* noop, clip labels */\n }\n\n pointData() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n}\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default HeatmapPoint;\n","import { Class } from '../common';\n\nclass Highlight extends Class {\n constructor() {\n super();\n\n this._points = [];\n }\n\n destroy() {\n this._points = [];\n }\n\n show(points, opacity) {\n const arrayPoints = [].concat(points);\n this.hide();\n\n for (let i = 0; i < arrayPoints.length; i++) {\n const point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this.togglePointHighlight(point, true, opacity);\n this._points.push(point);\n }\n }\n }\n\n togglePointHighlight(point, show, opacity) {\n const toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n const eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n }\n\n hide() {\n const points = this._points;\n while (points.length) {\n this.togglePointHighlight(points.pop(), false);\n }\n }\n\n isHighlighted(element) {\n const points = this._points;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nclass ClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(box) {\n const { vertical, gap, spacing } = this.options;\n const children = this.children;\n const count = children.length;\n const axis = vertical ? Y : X;\n const slots = count + gap + (spacing * (count - 1));\n const slotSize = (vertical ? box.height() : box.width()) / slots;\n let position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, (child, idx) => {\n const childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n}\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nclass RadarClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(sector) {\n const { options, children } = this;\n const { gap, spacing } = options;\n const count = children.length;\n const slots = count + gap + (spacing * (count - 1));\n const slotAngle = sector.angle / slots;\n let angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, (child) => {\n const slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n}\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nclass RadarStackLayout extends ChartElement {\n reflow(sector) {\n const { options: { reverse }, children } = this;\n const childrenCount = children.length;\n const first = reverse ? childrenCount - 1 : 0;\n const step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (let i = first; i >= 0 && i < childrenCount; i += step) {\n const childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n}\n\nexport default RadarStackLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass StackWrap extends ChartElement {\n reflow(targetBox) {\n const positionAxis = this.options.vertical ? X : Y;\n const children = this.children;\n const childrenCount = children.length;\n let box = this.box = new Box();\n\n for (let i = 0; i < childrenCount; i++) {\n const currentChild = children[i];\n\n if (currentChild.visible !== false) {\n const childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n}\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nclass LegendItem extends BoxElement {\n constructor(options) {\n super(options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n }\n\n createContainer() {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n }\n\n createMarker() {\n this.container.append(new ShapeElement(this.markerOptions()));\n }\n\n markerOptions() {\n const options = this.options;\n const markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n }\n\n createLabel() {\n const options = this.options;\n const labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n }\n\n renderComplete() {\n super.renderComplete();\n\n const cursor = this.options.cursor || {};\n const eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n }\n\n out(widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n this.renderComplete();\n\n const defaultVisual = this.visual;\n\n delete this.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n}\n\nexport default LegendItem;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nclass LegendLayout extends ChartElement {\n\n constructor(options, chartService) {\n super(options);\n\n this.chartService = chartService;\n }\n\n render() {\n const { children, options } = this;\n const vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (let idx = 0; idx < children.length; idx++) {\n let legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n }\n\n reflow(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n const bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n }\n\n renderVisual() {\n this.addVisual();\n }\n\n createVisual() {}\n}\n\nexport default LegendLayout;","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nconst HORIZONTAL = \"horizontal\";\nconst POINTER = \"pointer\";\nconst CUSTOM = \"custom\";\n\nclass Legend extends ChartElement {\n constructor(options, chartService = {}) {\n super(options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n createContainers() {\n const options = this.options;\n const { position, align: userAlign } = options;\n let align = position;\n let vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n }\n\n createItems() {\n const chartService = this.getService();\n const options = this.options;\n const vertical = this.isVertical();\n const innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n let items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n const count = items.length;\n\n for (let i = 0; i < count; i++) {\n let item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n }\n\n isVertical() {\n const { orientation, position } = this.options;\n const vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n }\n\n hasItems() {\n return this.container.children[0].children.length > 0;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n }\n\n containerReflow(targetBox) {\n const { options, container } = this;\n const { position, width, height } = options;\n const pos = position === TOP || position === BOTTOM ? X : Y;\n const vertical = this.isVertical();\n const alignTarget = targetBox.clone();\n let containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n const box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n }\n\n containerCustomReflow(targetBox) {\n const { options, container } = this;\n const { offsetX, offsetY, width, height } = options;\n const vertical = this.isVertical();\n let containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n }\n\n renderVisual() {\n if (this.hasItems()) {\n super.renderVisual();\n }\n }\n\n createLegendTitle(title) {\n let titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n let text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n const labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n }\n\n createTitleLayout() {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n }\n\n hasTitle() {\n return Boolean(this.options.title && this.options.title.visible !== false);\n }\n\n appendTitleLayoutContent() {\n const options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n}\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n});\n\nexport default Legend;\n","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nclass LineChart extends CategoricalChart {\n render() {\n\n super.render();\n\n this.updateStackRange();\n this.renderSegments();\n }\n\n pointType() {\n return LinePoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const missingValues = this.seriesMissingValues(series);\n let value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n plotRange(point) {\n let plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this.plotValue(other);\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nclass LinePoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n }\n\n render() {\n const { markers, labels } = this.options;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n let labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n markerBorder() {\n const options = this.options.markers;\n const background = options.background;\n const border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n }\n\n createVisual() {}\n\n createMarker() {\n const options = this.options.markers;\n const marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n }\n\n markerBox() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n }\n\n reflow(targetBox) {\n const { options, aboveAxis } = this;\n const vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n const childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n let noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n const center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n }\n\n reflowLabel(box) {\n const { options, label } = this;\n let anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n }\n\n createHighlight() {\n const markers = this.options.highlight.markers;\n const defaultColor = this.markerBorder().color;\n const options = this.options.markers;\n const size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n const shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n }\n\n highlightVisual() {\n return (this.marker || {}).visual;\n }\n\n highlightVisualArgs() {\n const marker = this.marker;\n let visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n const size = this.options.markers.size;\n const halfSize = size / 2;\n const center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n }\n\n tooltipAnchor() {\n const markerBox = this.markerBox();\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n const x = markerBox.x2 + TOOLTIP_OFFSET;\n const horizontalAlign = LEFT;\n let y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n const markerBox = this.markerBox();\n return markerBox.overlaps(box);\n }\n\n unclipElements() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n}\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass LineSegment extends ChartElement {\n constructor(linePoints, series, seriesIx) {\n super();\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n points() {\n return this.toGeometryPoints(this.linePoints);\n }\n\n toGeometryPoints(points) {\n const result = [];\n for (let i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n }\n\n createVisual() {\n const customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: () => {\n this.segmentVisual();\n\n return this.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n }\n\n segmentVisual() {\n const { options, series } = this;\n let { color, _defaults: defaults } = series;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n }\n\n aliasFor(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n}\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nclass SplineSegment extends LineSegment {\n segmentVisual() {\n const series = this.series;\n const defaults = series._defaults;\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const curveProcessor = new CurveProcessor(this.options.closed);\n const segments = curveProcessor.process(this.points());\n const curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n}\n\nexport default SplineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nconst StepLineMixin = {\n calculateStepPoints: function(points) {\n const categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n const { justified, vertical, reverse } = categoryAxis.options;\n\n const stepAxis = vertical ? X : Y;\n const axis = vertical ? Y : X;\n const stepDir = reverse ? 2 : 1;\n const dir = stepDir;\n\n let previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n const result = [ previousPoint ];\n\n for (let idx = 1; idx < points.length; idx++) {\n const point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n const stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n const box = lintPoint.box;\n const result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nclass StepLineSegment extends LineSegment {\n points() {\n return this.calculateStepPoints(this.linePoints);\n }\n}\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nconst ClipAnimationMixin = {\n createAnimation: function() {\n const root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n const box = root.size();\n const clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n const points = this.animationPoints();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nconst LineChartMixin = {\n renderSegments: function() {\n const { options, seriesPoints } = this;\n const series = options.series;\n const seriesCount = seriesPoints.length;\n let lastSegment;\n\n this._segments = [];\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const sortedPoints = this.sortPoints(seriesPoints[seriesIx]);\n const pointCount = sortedPoints.length;\n let linePoints = [];\n\n for (let pointIx = 0; pointIx < pointCount; pointIx++) {\n const point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n const missingValues = series.missingValues;\n const assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n const target = new Point(x, y);\n const allPoints = this.seriesPoints[seriesIx];\n let nearestPointDistance = MAX_VALUE;\n let nearestPoint;\n\n for (let i = 0; i < allPoints.length; i++) {\n const point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n const pointBox = point.box;\n const pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nconst NoteMixin = {\n createNote: function() {\n const options = this.options.notes;\n const text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nconst PieChartMixin = {\n createLegendItem: function(value, point, options) {\n const legendOptions = this.options.legend || {};\n const labelsOptions = legendOptions.labels || {};\n const inactiveItems = legendOptions.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n const pointVisible = options.visible !== false;\n const labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n let text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n let itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nconst PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nconst PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nclass OHLCChart extends CandlestickChart {\n pointType() {\n return OHLCPoint;\n }\n}\n\nexport default OHLCChart;","import Candlestick from '../candlestick-chart/candlestick';\n\nclass OHLCPoint extends Candlestick {\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const oPoints = [];\n const cPoints = [];\n const lhPoints = [];\n\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n const oSlot = valueAxis.getSlot(value.open, value.open);\n const cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n const mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n }\n\n createBody() {}\n}\n\nexport default OHLCPoint;","export default function acceptKey(e, mouseKey) {\n const key = (mouseKey || \"\").toLowerCase();\n const event = e.event;\n const accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nconst MIN_RATE = 0.01;\nconst MAX_RATE = 0.9;\nconst DEFAULT_RATE = 0.3;\n\nclass MousewheelZoom extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n updateRanges(delta, coords) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n const axes = this.chart._plotArea.axes;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n const rate = limitValue(this.options.rate, MIN_RATE, MAX_RATE);\n const range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n const plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.chart;\n }\n}\n\nexport default MousewheelZoom;\n","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nclass Pannable extends Class {\n constructor(plotArea, options) {\n super();\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n start(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n }\n\n move(e) {\n if (this._active) {\n const axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n }\n\n end() {\n const active = this._active;\n this._active = false;\n\n return active;\n }\n\n pan() {\n const { plotArea, axisRanges } = this;\n if (axisRanges.length) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.plotArea;\n }\n\n _panAxes(e, position) {\n const plotArea = this.plotArea;\n const delta = -e[position].delta;\n const lock = (this.options.lock || \"\").toLowerCase();\n const updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n const axes = plotArea.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n const range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n}\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","export default function toChartAxisRanges(axisRanges) {\n const ranges = {};\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nclass ZoomSelection extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n createElement() {\n const marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n }\n\n removeElement() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n }\n\n setStyles(styles) {\n elementStyles(this._marquee, styles);\n }\n\n start(e) {\n if (acceptKey(e, this.options.key)) {\n const chart = this.chart;\n const point = chart._eventCoordinates(e);\n const zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n const clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n const offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n }\n\n _elementOffset() {\n const chartElement = this.chart.element;\n const { paddingLeft, paddingTop } = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n const offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n }\n\n move(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n }\n\n end(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n const elementOffset = this._elementOffset();\n const selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n const start = { x: selectionPosition.left, y: selectionPosition.top };\n const end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n const plotArea = this.chart._plotArea;\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n }\n\n _updateAxisRanges(start, end) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n\n const axes = this._zoomPane.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n const range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n }\n\n _selectionPosition(e) {\n const clipBox = this._zoomPaneClipBox;\n const startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n const { x: { location: pageX }, y: { location: pageY } } = e;\n const lock = (this.options.lock || \"\").toLowerCase();\n let left = Math.min(startLocation.x, pageX);\n let top = Math.min(startLocation.y, pageY);\n let width = Math.abs(startLocation.x - pageX);\n let height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n}\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nclass Pane extends BoxElement {\n constructor(options) {\n super(options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n createTitle() {\n let titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, this, Pane.prototype.options.title);\n }\n\n appendAxis(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n }\n\n appendAxisAt(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n }\n\n appendChart(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n }\n\n empty() {\n const plotArea = this.parent;\n\n if (plotArea) {\n for (let i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this.axes[i]);\n }\n\n for (let i = 0; i < this.charts.length; i++) {\n plotArea.removeChart(this.charts[i]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n }\n\n reflow(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n let content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n super.reflow(targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n }\n\n visualStyle() {\n const style = super.visualStyle();\n style.zIndex = -10;\n\n return style;\n }\n\n renderComplete() {\n if (this.options.visible) {\n this.createGridLines();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n clipRoot() {\n return this;\n }\n\n createGridLines() {\n const axes = this.axes;\n const allAxes = axes.concat(this.parent.axes);\n const vGridLines = [];\n const hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const vertical = axis.options.vertical;\n const gridLines = vertical ? vGridLines : hGridLines;\n for (let j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n const altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n }\n\n refresh() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n }\n\n chartsBox() {\n const axes = this.axes;\n const length = axes.length;\n const chartsBox = new Box();\n\n for (let idx = 0; idx < length; idx++) {\n const axis = axes[idx];\n const axisValueField = axis.options.vertical ? Y : X;\n const lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n const allAxes = this.parent.axes;\n const length = allAxes.length;\n\n for (let idx = 0; idx < length; idx++) {\n const axis = allAxes[idx];\n if (!axis.options.vertical) {\n const lineBox = axis.lineBox();\n chartsBox.x1 = lineBox.x1;\n chartsBox.x2 = lineBox.x2;\n }\n }\n }\n return chartsBox;\n }\n\n clipBox() {\n return this.chartContainer.clipBox;\n }\n\n notifyRender() {\n const service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n}\n\nlet ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst PIE_SECTOR_ANIM_DELAY = 70;\n\nclass PieChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n traverseDataPoints(callback) {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const colorsCount = seriesColors.length;\n const series = options.series;\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const data = currentSeries.data;\n const { total, points, count } = bindSegments(currentSeries);\n const anglePerValue = 360 / total;\n let constantAngle;\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n let currentAngle;\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n const { fields, value, visible } = pointData;\n const angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n const explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(pointData.valueFields.value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n }\n\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const { options, points, seriesConfigs = [] } = this;\n const count = points.length;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n const newBoxCenter = newBox.center();\n const boxCenter = box.center();\n const seriesCount = options.series.length;\n const leftSideLabels = [];\n const rightSideLabels = [];\n let padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n const radius = halfMinWidth - padding;\n const center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const sector = segment.sector;\n const seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n const seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n const label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n }\n\n leftLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n rightLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n distanceBetweenLabels(labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const count = labels.length - 1;\n const lr = sector.radius + segment.options.labels.distance;\n const distances = [];\n let firstBox = labels[0].box;\n let distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (let i = 0; i < count; i++) {\n const secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n }\n\n distributeLabels(distances, labels) {\n const count = distances.length;\n let left, right, remaining;\n\n for (let i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this._takeDistance(distances, i, --left, remaining);\n remaining = this._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n }\n\n _takeDistance(distances, anchor, position, amount) {\n let result = amount;\n if (distances[position] > 0) {\n const available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n }\n\n reflowLabels(distances, labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const labelOptions = segment.options.labels;\n const labelsCount = labels.length;\n const labelDistance = labelOptions.distance;\n let boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n let boxX;\n\n distances[0] += 2;\n for (let i = 0; i < labelsCount; i++) {\n const label = labels[i];\n const box = label.box;\n\n boxY += distances[i];\n boxX = this.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n }\n\n createVisual() {\n const { options: { connectors }, points } = this;\n const count = points.length;\n const space = 4;\n\n super.createVisual();\n\n this._connectorLines = [];\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const { sector, label } = segment;\n const angle = sector.middle();\n const connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n const connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n const box = label.box;\n const centerPoint = sector.center;\n let start = sector.point(angle);\n let middle = new Point(box.x1, box.center().y);\n let sr, end, crossing;\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this._connectorLines.push(connectorLine);\n this.visual.append(connectorLine);\n }\n }\n }\n }\n\n renderVisual() {\n super.renderVisual();\n\n if (find(this.options.series, options => options.autoFit)) {\n const targetBox = this.targetBox;\n const pieCenter = this.box.center();\n const bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n const bboxBottom = bbox.bottomRight();\n\n const scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n }\n\n labelComparator(reverse) {\n const reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n const first = (a.parent.sector.middle() + 270) % 360;\n const second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n }\n\n hAlignLabel(originalX, sector, y1, y2, direction) {\n const { radius, center: { x: cx, y: cy } } = sector;\n const t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n }\n\n pointInCircle(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value);\n }\n\n animationDelay(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n }\n\n stackRoot() {\n return this;\n }\n}\n\nfunction intersection(a1, a2, b1, b2) {\n const uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n let result;\n if (ub !== 0) {\n const ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nclass PieSegment extends ChartElement {\n constructor(value, sector, options) {\n super(options);\n\n this.value = value;\n this.sector = sector;\n }\n\n render() {\n const labels = this.options.labels;\n const chartService = this.owner.chartService;\n let labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n const themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n }\n\n reflow(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n }\n\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const labelsDistance = labelsOptions.distance;\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n const labelWidth = label.box.width();\n let lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n let x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n }\n\n createVisual() {\n const { sector, options } = this;\n\n super.createVisual();\n\n if (this.value) {\n if (options.visual) {\n const startAngle = (sector.startAngle + 180) % 360;\n const visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: () => {\n const group = new draw.Group();\n this.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n }\n\n createSegmentVisual(group) {\n const { sector, options } = this;\n const borderOptions = options.border || {};\n const border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n const color = options.color;\n const fill = {\n color: color,\n opacity: options.opacity\n };\n const visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n }\n\n createSegment(sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n }\n\n createAnimation() {\n const { options, sector: { center } } = this;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n super.createAnimation();\n }\n\n createHighlight(options) {\n const highlight = this.options.highlight || {};\n const border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n }\n\n tooltipAnchor() {\n const sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n}\n\nconst RAD_30 = round(rad(30), DEFAULT_PRECISION);\nconst RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n const radians = rad(angle);\n const sine = round(Math.sin(radians), DEFAULT_PRECISION);\n const cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n let horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n let vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, isNumber, deepExtend, defined, eventElement, grep } from '../../common';\n\nconst AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nconst OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nclass CategoricalPlotArea extends PlotAreaBase {\n\n initFields(series) {\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (let i = 0; i < series.length; i++) {\n const stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this.stack100 = true;\n break;\n }\n }\n }\n\n }\n\n render(panes = this.panes) {\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n\n const visibleSeries = this.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n const groups = this.groupSeriesByCategoryAxis(visibleSeries);\n for (let groupIx = 0; groupIx < groups.length; groupIx++) {\n this.createChartGroup(groups[groupIx], pane);\n }\n }\n }\n\n createChartGroup(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n }\n\n aggregateCategories(panes) {\n const series = this.srcSeries || this.series;\n const processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (let i = 0; i < series.length; i++) {\n let currentSeries = series[i];\n const categoryAxis = this.seriesCategoryAxis(currentSeries);\n const axisPane = this.findPane(categoryAxis.options.pane);\n const dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n }\n\n filterSeries(series, categoryAxis) {\n const dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n const range = categoryAxis.currentRangeIndices();\n const outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n const currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, (idx) => ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }), (idx) => defined(series.data[idx]));\n }\n\n return currentSeries;\n }\n\n clearSeriesPointsCache() {\n this._seriesPointsCache = {};\n }\n\n seriesSourcePoints(series, categoryAxis) {\n const key = `${ series.index };${ categoryAxis.categoriesHash() }`;\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n const axisOptions = categoryAxis.options;\n const srcCategories = axisOptions.srcCategories;\n const dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n const srcData = series.data;\n const getFn = dateAxis ? getDateField : getField;\n const result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (let idx = 0; idx < srcData.length; idx++) {\n let category;\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n const categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n }\n\n aggregateSeries(series, categoryAxis) {\n const srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n const srcPoints = this.seriesSourcePoints(series, categoryAxis);\n const result = deepExtend({}, series);\n const aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n const data = result.data = [];\n const dataItems = categoryAxis.options.dataItems || [];\n\n const range = categoryAxis.currentRangeIndices();\n const categoryItem = (idx) => {\n const categoryIdx = idx - range.min;\n let point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n const category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (let idx = range.min; idx <= range.max; idx++) {\n const point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, (idx) => srcPoints[idx]);\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n }\n\n appendChart(chart, pane) {\n const series = chart.options.series;\n const categoryAxis = this.seriesCategoryAxis(series[0]);\n let categories = categoryAxis.options.categories;\n let categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const axisName = series.axis;\n const axisOptions = [].concat(options.valueAxis);\n const axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = (panes[0] || {}).name || \"default\";\n const paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesCategoryAxis(series) {\n const axisName = series.categoryAxis;\n const axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n }\n\n stackableChartOptions(firstSeries, pane) {\n const stack = firstSeries.stack;\n const isStacked100 = stack && stack.type === \"100%\";\n const clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n }\n\n groupSeriesByCategoryAxis(series) {\n const categoryAxes = [];\n const unique = {};\n for (let idx = 0; idx < series.length; idx++) {\n const name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n const groups = [];\n for (let axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n const axis = categoryAxes[axisIx];\n const axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n }\n\n createRangeBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n }\n\n createBulletChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n }\n\n createRangeAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n }\n\n createOHLCChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createCandlestickChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createBoxPlotChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createWaterfallChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n }\n\n axisRequiresRounding(categoryAxisName, categoryAxisIndex) {\n const centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (let seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n const currentSeries = this.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n const line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (let seriesIx = 0; seriesIx < centeredSeries.length; seriesIx++) {\n const seriesAxis = centeredSeries[seriesIx].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n }\n\n aggregatedAxis(categoryAxisName, categoryAxisIndex) {\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n }\n\n createCategoryAxesLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n }\n\n createCategoryAxes(panes) {\n const invertAxes = this.invertAxes;\n const definitions = [].concat(this.options.categoryAxis);\n const axes = [];\n\n for (let i = 0; i < definitions.length; i++) {\n let axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const { name, categories = [] } = axisOptions;\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this.isJustified();\n }\n\n if (this.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n let categoryAxis;\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new DateCategoryAxis(axisOptions, this.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this.namedCategoryAxes[name]) {\n throw new Error(`Category axis with name ${ name } is already defined`);\n }\n this.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this.appendAxis(categoryAxis);\n }\n }\n\n const primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n }\n\n isJustified() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n }\n\n createValueAxes(panes) {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const definitions = [].concat(this.options.valueAxis);\n const invertAxes = this.invertAxes;\n const baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n const axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (let i = 0; i < definitions.length; i++) {\n const axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const name = axisOptions.name;\n const defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this.chartService\n );\n\n if (name) {\n if (this.namedValueAxes[name]) {\n throw new Error(`Value axis with name ${ name } is already defined`);\n }\n this.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this.appendAxis(valueAxis);\n }\n }\n\n const primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const pane = this.pointPane(point);\n const categories = [];\n const values = [];\n\n if (!pane) {\n return;\n }\n\n const allAxes = pane.axes;\n for (let i = 0; i < allAxes.length; i++) {\n const axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n }\n\n pointPane(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n }\n\n updateAxisOptions(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n const axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nclass DonutPlotArea extends PiePlotArea {\n render() {\n this.createDonutChart(this.series);\n }\n\n createDonutChart(series) {\n const firstSeries = series[0];\n const donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n}\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\n\nimport { append } from '../../common';\n\nclass FunnelPlotArea extends PlotAreaBase {\n render() {\n this.createFunnelChart(this.series);\n }\n\n createFunnelChart(series) {\n const firstSeries = series[0];\n const funnelChart = new FunnelChart(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(funnelChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default FunnelPlotArea;","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nclass HeatmapPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n }\n\n render(panes = this.panes) {\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n }\n\n bindCategories() {\n const series = this.srcSeries || this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const data = currentSeries.data || [];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n\n const xCategories = createHashSet(xAxis.categories || []);\n const yCategories = createHashSet(yAxis.categories || []);\n\n for (let pointIndex = 0; pointIndex < data.length; pointIndex++) {\n const { x, y } = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n }\n\n createHeatmapChart(series, pane) {\n const chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n }\n\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesAxes(series) {\n let xAxis;\n let yAxis;\n\n const options = this.options;\n\n const xAxisOptions = [].concat(options.xAxis);\n const xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(axis => axis.name === xAxisName);\n } else {\n xAxis = xAxisOptions[0];\n }\n\n const yAxisOptions = [].concat(options.yAxis);\n const yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(axis => axis.name === yAxisName);\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n createAxisLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n const firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n const typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n const axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n\n crosshairOptions(axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nclass PiePlotArea extends PlotAreaBase {\n render() {\n this.createPieChart(this.series);\n }\n\n createPieChart(series) {\n const firstSeries = series[0];\n const pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default PiePlotArea;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions } from '../../common';\n\nclass PlotAreaBase extends ChartElement {\n constructor(series, options, chartService) {\n super(options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n initFields() { }\n\n initSeries() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n }\n\n createPanes() {\n const titleOptions = this.options.title || {};\n const paneDefaults = this.options.paneDefaults;\n const paneOptions = this.options.panes || [];\n const panesLength = Math.max(paneOptions.length, 1);\n const panes = [];\n\n const defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (let i = 0; i < panesLength; i++) {\n const options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n const currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this.append(currentPane);\n }\n\n this.panes = panes;\n }\n\n crosshairOptions(axis) {\n return axis.options.crosshair;\n }\n\n createCrosshairs(panes = this.panes) {\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n for (let j = 0; j < pane.axes.length; j++) {\n const axis = pane.axes[j];\n const options = this.crosshairOptions(axis);\n if (options && options.visible) {\n const currentCrosshair = new Crosshair(this.chartService, axis, options);\n\n this.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n }\n\n removeCrosshairs(pane) {\n const crosshairs = this.crosshairs;\n const axes = pane.axes;\n\n for (let i = crosshairs.length - 1; i >= 0; i--) {\n for (let j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n }\n\n hideCrosshairs() {\n const crosshairs = this.crosshairs;\n for (let idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n }\n\n findPane(name) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n }\n\n findPointPane(point) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n }\n\n appendAxis(axis) {\n const pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n }\n\n removeAxis(axisToRemove) {\n const filteredAxes = [];\n\n for (let i = 0; i < this.axes.length; i++) {\n const axis = this.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n }\n\n appendChart(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n }\n\n removeChart(chartToRemove) {\n const filteredCharts = [];\n\n for (let i = 0; i < this.charts.length; i++) {\n const chart = this.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n }\n\n addToLegend(series) {\n const count = series.length;\n const legend = this.options.legend;\n const labels = legend.labels || {};\n const inactiveItems = legend.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n const data = [];\n\n for (let i = 0; i < count; i++) {\n const currentSeries = series[i];\n const seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n let text = currentSeries.name;\n const labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n const defaults = currentSeries._defaults;\n let color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n let itemLabelOptions, markerColor;\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n }\n\n groupAxes(panes) {\n const xAxes = [];\n const yAxes = [];\n\n for (let paneIx = 0; paneIx < panes.length; paneIx++) {\n const paneAxes = panes[paneIx].axes;\n for (let axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n const axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n }\n\n groupSeriesByPane() {\n const series = this.series;\n const seriesByPane = {};\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const pane = this.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n }\n\n filterVisibleSeries(series) {\n const result = [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n reflow(targetBox) {\n const options = this.options.plotArea;\n const panes = this.panes;\n const margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n }\n\n redraw(panes) {\n const panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n const root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (let i = 0; i < panesArray.length; i++) {\n this.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (let i = 0; i < panesArray.length; i++) {\n panesArray[i].refresh();\n }\n }\n\n axisCrossingValues(axis, crossingAxes) {\n const options = axis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n const valuesToAdd = crossingAxes.length - crossingValues.length;\n const defaultValue = crossingValues[0] || 0;\n\n for (let i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n }\n\n alignAxisTo(axis, targetAxis, crossingValue, targetCrossingValue) {\n const slot = axis.getSlot(crossingValue, crossingValue, true);\n const slotEdge = axis.options.reverse ? 2 : 1;\n const targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n const targetEdge = targetAxis.options.reverse ? 2 : 1;\n const axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n }\n\n alignAxes(xAxes, yAxes) {\n const xAnchor = xAxes[0];\n const yAnchor = yAxes[0];\n const xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n const yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n const leftAnchors = {};\n const rightAnchors = {};\n const topAnchors = {};\n const bottomAnchors = {};\n\n for (let i = 0; i < yAxes.length; i++) {\n const axis = yAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n const anchor = paneAnchor(xAxes, pane) || xAnchor;\n let anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, yAxes);\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (let i = 0; i < xAxes.length; i++) {\n const axis = xAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n const anchor = paneAnchor(yAxes, pane) || yAnchor;\n let anchorCrossings = yAnchorCrossings;\n if (anchor !== yAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, xAxes);\n }\n\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().y1) === round(anchor.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(topAnchors[paneId].box, TOP)\n .translate(0, -axis.options.margin)\n );\n }\n\n if (visible) {\n topAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().y2, COORD_PRECISION) === round(anchor.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(bottomAnchors[paneId].box, BOTTOM)\n .translate(0, axis.options.margin)\n );\n }\n\n if (visible) {\n bottomAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0) {\n axis.alignTo(xAnchor);\n axis.reflow(axis.box);\n }\n }\n }\n\n shrinkAxisWidth(panes) {\n const axes = this.groupAxes(panes).any;\n const axisBox = axisGroupBox(axes);\n let overflowX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n }\n\n shrinkAxisHeight(panes) {\n let shrinked;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const axes = currentPane.axes;\n const overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (let j = 0; j < axes.length; j++) {\n const currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n }\n\n fitAxes(panes) {\n const axes = this.groupAxes(panes).any;\n let offsetX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const paneAxes = currentPane.axes;\n const paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n const axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n const offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (let j = 0; j < paneAxes.length; j++) {\n const currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n currentAxis.reflow(\n currentAxis.box.translate(offsetX, 0)\n );\n }\n }\n\n reflowAxes(panes) {\n const axes = this.groupAxes(panes);\n\n for (let i = 0; i < panes.length; i++) {\n this.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n }\n\n autoRotateAxisLabels(groupedAxes) {\n const { panes } = this;\n const axes = allPaneAxes(panes);\n let rotated;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (let idx = 0; idx < panes.length; idx++) {\n this.reflowPaneAxes(panes[idx]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n }\n\n reflowPaneAxes(pane) {\n const axes = pane.axes;\n const length = axes.length;\n\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n }\n\n reflowCharts(panes) {\n const charts = this.charts;\n const count = charts.length;\n const box = this.box;\n\n for (let i = 0; i < count; i++) {\n const chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n }\n\n reflowPanes() {\n const { box, panes } = this;\n const panesLength = panes.length;\n let remainingHeight = box.height();\n let remainingPanes = panesLength;\n let autoHeightPanes = 0;\n let top = box.y1;\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n const percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n\n if (!currentPane.options.height) {\n currentPane.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane.options.height;\n }\n }\n\n backgroundBox() {\n const axes = this.axes;\n const axesCount = axes.length;\n let box;\n\n for (let i = 0; i < axesCount; i++) {\n const axisA = axes[i];\n\n for (let j = 0; j < axesCount; j++) {\n const axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n const lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n }\n\n chartsBoxes() {\n const panes = this.panes;\n const boxes = [];\n\n for (let idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n }\n\n addBackgroundPaths(multipath) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n }\n\n backgroundContainsPoint(point) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options.plotArea;\n let { opacity, background, border = {} } = options;\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n const bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n }\n\n pointsByCategoryIndex(categoryIndex) {\n const charts = this.charts;\n const result = [];\n\n if (categoryIndex !== null) {\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n const points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n }\n\n pointsBySeriesIndex(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n }\n\n pointsBySeriesName(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n }\n\n filterPoints(callback) {\n const charts = this.charts;\n const result = [];\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n }\n\n findPoint(callback) {\n const charts = this.charts;\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n }\n\n paneByPoint(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n }\n\n detachLabels() {\n const axes = this.groupAxes(this.panes);\n const xAxes = axes.x;\n const yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n }\n\n detachAxisGroupLabels(axes, crossingAxes) {\n let labelAxisCount = 0;\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const pane = axis.pane;\n const anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n const axisIndex = i + labelAxisCount;\n const labelAxis = this.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n const pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n }\n\n createLabelAxis(axis, axisIndex, anchor) {\n const labelOptions = axis.options.labels;\n const position = labelOptions.position;\n const onAxis = position !== END && position !== START;\n const visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n const allAxes = this.groupAxes(this.panes);\n const crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n const anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n const end = position === END;\n const range = anchor.range();\n const edge = end ? range.max : range.min;\n const crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n const labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n}\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some((a) =>\n a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false\n );\n}\n\nfunction axisGroupBox(axes) {\n const length = axes.length;\n let box;\n\n for (let i = 0; i < length; i++) {\n const axis = axes[i];\n const visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n const axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (let i = 0; i < axes.length; i++) {\n const anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nconst allPaneAxes = (panes) => panes.reduce((acc, pane) => acc.concat(pane.axes), []);\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\n\nclass PlotAreaFactory extends Class {\n\n constructor() {\n super();\n\n this._registry = [];\n }\n\n register(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n }\n\n create(srcSeries, options, chartService) {\n const registry = this._registry;\n let match = registry[0];\n let series;\n\n for (let idx = 0; idx < registry.length; idx++) {\n const entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n}\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nconst DEFAULT_PADDING = 0.15;\n\nclass PolarPlotAreaBase extends PlotAreaBase {\n initFields() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n }\n\n alignAxes() {\n const axis = this.valueAxis;\n const range = axis.range();\n const crossingValue = axis.options.reverse ? range.max : range.min;\n const slot = axis.getSlot(crossingValue);\n const center = this.polarAxis.getSlot(0).center;\n const axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n }\n\n createValueAxis() {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n let axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n const range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n const valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n }\n\n reflowAxes() {\n const { options: { plotArea: options }, valueAxis, polarAxis, box } = this;\n const defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n const padding = getSpacing(options.padding || {}, defaultPadding);\n const paddingBox = box.clone().unpad(padding);\n const axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n const valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n const heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n }\n\n backgroundBox() {\n return this.box;\n }\n\n detachLabels() {}\n}\n\nexport default PolarPlotAreaBase;\n","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\n\nclass PolarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n }\n\n valueAxisOptions(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n }\n\n createValueAxis() {\n super.createValueAxis();\n this.axisY = this.valueAxis;\n }\n\n appendChart(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n }\n\n createScatterChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const xValue = this.axisX.getValue(point);\n const yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n }\n\n createCrosshairs() {}\n}\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default PolarPlotArea;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nclass RadarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n }\n\n valueAxisOptions(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n }\n\n aggregateCategories() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n }\n\n createCategoryAxesLabels() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n }\n\n filterSeries(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n }\n\n chartOptions(series) {\n const options = { series: series };\n const firstSeries = series[0];\n if (firstSeries) {\n const filteredSeries = this.filterVisibleSeries(series);\n const stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n const barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n }\n\n seriesCategoryAxis() {\n return this.categoryAxis;\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const category = this.categoryAxis.getCategory(point);\n const value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n }\n\n createCrosshairs() {}\n}\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\nimport equalsIgnoreCase from '../utils/equals-ignore-case';\nimport singleItemOrArray from '../utils/single-item-or-array';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nclass XYPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render(panes = this.panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n }\n\n appendChart(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n createScatterChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createScatterLineChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createBubbleChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n const axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n const isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n const defaultRange = tracker.query();\n const defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n const typeSamples = [ axisOptions.min, axisOptions.max ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n const currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nclass PolarAreaChart extends PolarLineChart {\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n }\n\n createMissingValue(value, missingValues) {\n let missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n _hasMissingValuesGap() {\n const series = this.options.series;\n\n for (let idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n }\n\n sortPoints(points) {\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n const value = point.value;\n if (!hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n}\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass PolarAreaSegment extends AreaSegment {\n fillToAxes(fillPath) {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n const centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n}\n\nexport default PolarAreaSegment;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nclass SplinePolarAreaSegment extends SplineAreaSegment {\n fillToAxes(fillPath) {\n const center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n }\n\n _polarAxisCenter() {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n return center;\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n const center = this._polarAxisCenter();\n const curveProcessor = new CurveProcessor(false);\n const linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n}\n\nexport default SplinePolarAreaSegment;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarLineChart extends ScatterLineChart {\n}\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarScatterChart extends ScatterChart {\n pointSlot(slotX, slotY) {\n const valueRadius = slotX.center.y - slotY.y1;\n const slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n}\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nclass RadarAreaChart extends RadarLineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n let stackPoints;\n let segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n}\n\nexport default RadarAreaChart;","import AreaSegment from '../area-chart/area-segment';\n\nclass RadarAreaSegment extends AreaSegment {\n fillToAxes() {}\n}\n\nexport default RadarAreaSegment;","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nclass SplineRadarAreaSegment extends SplineAreaSegment {\n fillToAxes() {}\n}\n\nexport default SplineRadarAreaSegment;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarBarChart extends BarChart {\n pointType() {\n return RadarSegment;\n }\n\n clusterType() {\n return RadarClusterLayout;\n }\n\n stackType() {\n return RadarStackLayout;\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n pointSlot(categorySlot, valueSlot) {\n const slot = categorySlot.clone();\n const y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n }\n\n reflowPoint(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n }\n\n createAnimation() {\n this.options.animation.center = this.box.toRect().center();\n super.createAnimation();\n }\n}\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarSegment extends DonutSegment {\n constructor(value, options) {\n super(value, null, options);\n }\n}\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n const seriesSegments = [];\n for (let idx = 0; idx < segments.length; idx++) {\n const segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nclass RadarLineChart extends LineChart {\n\n pointSlot(categorySlot, valueSlot) {\n const valueRadius = categorySlot.center.y - valueSlot.y1;\n const slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n\n renderSegments() {\n super.renderSegments();\n\n if (this._segments && this._segments.length > 1) {\n const seriesSegments = groupBySeriesIx(this._segments);\n\n for (let idx = 0; idx < seriesSegments.length; idx++) {\n const segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n const firstPoint = segments[0].linePoints[0];\n const lastSegment = last(segments);\n const lastPoint = last(lastSegment.linePoints);\n const isFirstDataPoint = firstPoint.categoryIx === 0;\n const isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n const segment = new pointType(linePoints, currentSeries, seriesIx);\n const missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n}\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nclass RangeAreaChart extends CategoricalChart {\n\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n pointType() {\n return RangeAreaPoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n let value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n }\n\n plotRange(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n valueSlot(valueAxis, plotRange) {\n const fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n const toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n }\n\n pointSlot(categorySlot, valueSlot) {\n const { from, to } = valueSlot;\n let fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n\n addValue(data, fields) {\n const valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n super.addValue(data, fields);\n }\n\n updateRange(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n const axisName = fields.series.axis;\n const axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n const { from, to } = value;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n}\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nconst AUTO = 'auto';\nconst DEFAULT_FROM_FORMAT = '{0}';\nconst DEFAULT_TO_FORMAT = '{1}';\n\nclass RangeAreaPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n const { markers, labels } = this.options;\n const value = this.value;\n\n const fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n const toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { from: fromBox, to: toBox } = targetBox;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n }\n\n createHighlight() {\n const group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n }\n\n highlightVisual() {\n return this.visual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n }\n\n tooltipAnchor() {\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n const box = this.box;\n const center = box.center();\n const horizontalAlign = LEFT;\n let x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n }\n\n initLabelsFormat() {\n const labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n }\n\n positionLabels(fromBox, toBox) {\n const { labels, vertical } = this.options;\n\n if (labels.position === AUTO) {\n let fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n }\n\n copyFields(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n}\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass RangeAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n }\n\n createStroke(style) {\n const toPath = new draw.Path(style);\n const fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n }\n\n hasStackSegment() {\n return true;\n }\n\n fromPoints() {\n return this.linePoints.map(point => point.fromPoint);\n }\n\n toPoints() {\n return this.linePoints.map(point => point.toPoint);\n }\n}\n\nexport default RangeAreaSegment;","import LinePoint from '../line-chart/line-point';\n\nclass RangeLinePoint extends LinePoint {\n aliasFor() {\n return this.parent;\n }\n}\n\nexport default RangeLinePoint;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nclass SplineRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.createCurveSegments(this.toPoints());\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n }\n\n createCurveSegments(points) {\n const curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n\n\n}\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nclass StepRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n}\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nclass RangeBarChart extends BarChart {\n pointType() {\n return RangeBar;\n }\n\n pointValue(data) {\n return data.valueFields;\n }\n\n formatPointValue(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n }\n\n plotRange(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const { from, to } = value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n }\n\n aboveAxis(point) {\n const value = point.value;\n return value.from < value.to;\n }\n}\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nclass RangeBar extends Bar {\n createLabel() {\n const labels = this.options.labels;\n const fromOptions = deepExtend({}, labels, labels.from);\n const toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n }\n\n _createLabel(options) {\n const labelTemplate = getTemplate(options);\n const pointData = this.pointData();\n\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { labelFrom, labelTo, value } = this;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n}\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nconst COLOR = \"color\";\nconst FIRST = \"first\";\nconst FROM = \"from\";\nconst MAX = \"max\";\nconst MIN = \"min\";\nconst NOTE_TEXT = \"noteText\";\nconst SUMMARY_FIELD = \"summary\";\nconst TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\nPlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR ]);\n\nSeriesBinder.current.register(\n [ FUNNEL ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\" ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\" ]\n);\n","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\nimport CategoricalChart from '../categorical-chart';\n\nimport hasValue from '../utils/has-value';\nimport evalOptions from '../utils/eval-options';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nclass ScatterChart extends ChartElement {\n constructor(plotArea, options) {\n\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n addErrorBar(point, field, fields) {\n const value = point.value[field];\n const valueErrorField = field + \"Value\";\n const lowField = field + \"ErrorLow\";\n const highField = field + \"ErrorHigh\";\n const { seriesIx, series } = fields;\n const errorBars = point.options.errorBars;\n const lowValue = fields[lowField];\n const highValue = fields[highField];\n\n if (isNumber(value)) {\n let errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n }\n\n addPointErrorBar(errorRange, point, field) {\n const { low, high } = errorRange;\n const { series, options: { errorBars: options } } = point;\n const isVertical = field === Y;\n const item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n const errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n }\n\n addValue(value, fields) {\n const { x, y } = value;\n const seriesIx = fields.seriesIx;\n const series = this.options.series[seriesIx];\n const missingValues = this.seriesMissingValues(series);\n const seriesPoints = this.seriesPoints[seriesIx];\n\n let pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n let point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n }\n\n seriesMissingValues(series) {\n return series.missingValues;\n }\n\n createMissingValue() {}\n\n updateRange(value, series) {\n const intlService = this.chartService.intl;\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n let { x, y } = value;\n let xAxisRange = this.xAxisRanges[xAxisName];\n let yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return LinePoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const seriesAxes = this.seriesAxes(fields.series);\n const slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n const slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series }, seriesPoints } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default ScatterChart;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nclass ScatterLineChart extends ScatterChart {\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = super.animationPoints();\n return points.concat(this._segments);\n }\n\n createMissingValue(value, missingValues) {\n if (missingValues === ZERO) {\n const missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n}\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nconst ZOOM_ACCELERATION = 3;\nconst SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(className) {\n const element = document.createElement(\"div\");\n if (className) {\n element.className = className;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n let current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nclass Selection extends Class {\n constructor(chart, categoryAxis, options, observer) {\n super();\n\n const chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n onPane(pane) {\n return this.categoryAxis.pane === pane;\n }\n\n createElements() {\n const options = this.options;\n const wrapper = this.wrapper = createDiv(\"k-selector\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n const selection = this.selection = createDiv(\"k-selection\");\n this.leftMask = createDiv(\"k-mask\");\n this.rightMask = createDiv(\"k-mask\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n selection.appendChild(createDiv(\"k-selection-bg\"));\n\n const leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle\");\n const rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n const selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n const leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n const rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n }\n\n bindEvents() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n }\n\n this._domEvents = DomEventsBuilder.create(this.wrapper, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n }\n\n initOptions() {\n const { options, categoryAxis } = this;\n const box = categoryAxis.pane.chartsBox();\n const intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n const { paddingLeft, paddingTop } = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n }\n\n destroy() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n this._mousewheelHandler = null;\n }\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n }\n\n _rangeEventArgs(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n }\n\n _start(e) {\n const options = this.options;\n const target = eventElement(e);\n\n if (this._state || !target) {\n return;\n }\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: closestHandle(target) || target,\n startLocation: e.x ? e.x.location : 0,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n const args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n }\n\n _press(e) {\n let handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n }\n\n _move(e) {\n if (!this._state) {\n return;\n }\n\n const { _state: state, options, categoryAxis } = this;\n const { range, moveTarget: target } = state;\n const reverse = categoryAxis.options.reverse;\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const delta = state.startLocation - e.x.location;\n const oldRange = { from: range.from, to: range.to };\n const span = range.to - range.from;\n const scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n const offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target) {\n return;\n }\n\n const leftHandle = hasClasses(target, \"k-left-handle\");\n const rightHandle = hasClasses(target, \"k-right-handle\");\n\n if (hasClasses(target, \"k-selection k-selection-bg\")) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n }\n\n _end() {\n if (this._state) {\n const moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n const range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n }\n\n _tap(e) {\n const { options, categoryAxis } = this;\n const coords = this.chart._eventCoordinates(e);\n const categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const span = to - from;\n const mid = from + span / 2;\n const range = {};\n const rightClick = e.event.which === 3;\n let offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n }\n\n _mousewheel(e) {\n let delta = mousewheelDelta(e);\n\n this._start({ target: this.selection });\n\n if (this._state) {\n const range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._end();\n }, MOUSEWHEEL_DELAY);\n }\n }\n\n _gesturestart(e) {\n const options = this.options;\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n const args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n }\n\n _gestureend() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n }\n\n _gesturechange(e) {\n const { chart, _state: state, options, categoryAxis } = this;\n const range = state.range;\n const p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n const p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n const left = Math.min(p0, p1);\n const right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n\n _index(value) {\n let index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n }\n\n _value(index) {\n let value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n }\n\n _slot(value) {\n const categoryAxis = this.categoryAxis;\n const index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n }\n\n move(from, to) {\n const options = this.options;\n const reverse = this.categoryAxis.options.reverse;\n const { offset, padding, selection: { border } } = options;\n const left = reverse ? to : from;\n const right = reverse ? from : to;\n const edge = 'x' + (reverse ? 2 : 1);\n\n let box = this._slot(left);\n const leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n const rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n let distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n }\n\n set(from, to) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const fromValue = limitValue(this._index(from), min, max);\n const toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n }\n\n expand(delta) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const zDir = options.mousewheel.zoom;\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n zoom(delta, coords) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n const { reverse } = this.categoryAxis.options;\n const origin = X + (reverse ? '2' : '1');\n const lineBox = this.categoryAxis.lineBox();\n const relative = Math.abs(lineBox[origin] - coords[X]);\n const size = lineBox.width();\n const position = round(relative / size, 2);\n const minDelta = round(position * delta);\n const maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n trigger(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n}\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nclass SeriesBinder extends Class {\n\n constructor() {\n super();\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n register(seriesTypes, valueFields = [ VALUE ], otherFields = {}) {\n\n for (let i = 0; i < seriesTypes.length; i++) {\n const type = seriesTypes[i];\n\n this._valueFields[type] = valueFields;\n this._otherFields[type] = otherFields;\n this._nullValue[type] = this._makeValue(valueFields, null);\n this._undefinedValue[type] = this._makeValue(valueFields, undefined);\n }\n }\n\n canonicalFields(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n }\n\n valueFields(series) {\n return this._valueFields[series.type] || [ VALUE ];\n }\n\n otherFields(series) {\n return this._otherFields[series.type] || [ VALUE ];\n }\n\n bindPoint(series, pointIx, item) {\n const data = series.data;\n const pointData = defined(item) ? item : data[pointIx];\n const result = { valueFields: { value: pointData } };\n const valueFields = this.valueFields(series);\n const otherFields = this._otherFields[series.type];\n let fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n const fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n const srcValueFields = this.sourceFields(series, valueFields);\n const srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n }\n\n _makeValue(fields, initialValue) {\n const value = {};\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n }\n\n _bindFromArray(array, fields) {\n const value = {};\n\n if (fields) {\n const length = Math.min(fields.length, array.length);\n\n for (let i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n }\n\n _bindFromObject(object, fields, srcFields = fields) {\n const value = {};\n\n if (fields) {\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n const srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n }\n\n sourceFields(series, canonicalFields) {\n const sourceFields = [];\n\n if (canonicalFields) {\n const length = canonicalFields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = canonicalFields[i];\n const sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n}\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nclass BaseTooltip extends Class {\n constructor(chartService, options) {\n super();\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n getStyle(options, point) {\n let { background, border: { color: border } } = options;\n\n if (point) {\n const pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n const padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n }\n\n show(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n const style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n const background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n }\n\n hide() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n }\n\n destroy() {\n delete this.chartService;\n }\n}\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nclass SharedTooltip extends BaseTooltip {\n constructor(plotArea, options) {\n super(plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n showAt(points, coords) {\n const tooltipPoints = grep(points, function(point) {\n const tooltip = point.series.tooltip;\n const excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n const point = tooltipPoints[0];\n const slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n const anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n }\n\n _slotAnchor(point, slot) {\n const axis = this.plotArea.categoryAxis;\n const align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n const box = point.owner.pane.chartsBox();\n const vertical = this.plotArea.categoryAxis.options.vertical;\n const center = box.center();\n const slotCenter = slot.center();\n const align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n let centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n}\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nclass Tooltip extends BaseTooltip {\n show(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n const options = deepExtend({}, this.options, point.options.tooltip);\n const anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n super.show({\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n }\n\n hide() {\n delete this._current;\n super.hide();\n }\n}\n\nexport default Tooltip;","export { default as anyHasZIndex } from './utils/any-has-z-index';\nexport { default as appendIfNotNull } from './utils/append-if-not-null';\nexport { default as areNumbers } from './utils/are-numbers';\nexport { default as bindSegments } from './utils/bind-segments';\nexport { default as categoriesCount } from './utils/categories-count';\nexport { default as countNumbers } from './utils/count-numbers';\nexport { default as equalsIgnoreCase } from './utils/equals-ignore-case';\nexport { default as evalOptions } from './utils/eval-options';\nexport { default as filterSeriesByType } from './utils/filter-series-by-type';\nexport { default as getDateField } from './utils/get-date-field';\nexport { default as getField } from './utils/get-field';\nexport { default as hasGradientOverlay } from './utils/has-gradient-overlay';\nexport { default as hasValue } from './utils/has-value';\nexport { default as isDateAxis } from './utils/is-date-axis';\nexport { default as segmentVisible } from './utils/segment-visible';\nexport { default as singleItemOrArray } from './utils/single-item-or-array';\nexport { default as createOutOfRangePoints } from './utils/create-out-of-range-points';\n\n\n","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n const data = series.data;\n const points = [];\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < data.length; idx++) {\n const pointData = SeriesBinder.current.bindPoint(series, idx);\n let value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function categoriesCount(series) {\n const seriesCount = series.length;\n let categories = 0;\n\n for (let i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nconst AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n const fields = SeriesBinder.current.bindPoint(series, null, item);\n const valueFields = fields.valueFields;\n\n for (let field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext({ start, dir, min, max, getter, hasItem, series }) {\n let pointHasValue, outPoint;\n let idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n const { min, max } = range;\n const hasMinPoint = min > 0 && min < count;\n const hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n const missingValues = seriesMissingValues(series);\n let minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n let outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nconst MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state = {}, dryRun = false) {\n const defaults = state.defaults = state.defaults || {};\n const depth = state.depth = state.depth || 0;\n let needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (let property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n const propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n const result = [];\n\n const seriesTypes = [].concat(types);\n for (let idx = 0; idx < series.length; idx++) {\n const currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n const key = \"_date_\" + field;\n let value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n}","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n const get = getter(field, true);\n return get(row);\n}","export default function hasGradientOverlay(options) {\n const overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n const type = axisOptions.type;\n const dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n const visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n const pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nclass WaterfallChart extends BarChart {\n render() {\n super.render();\n this.createSegments();\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const totalCategories = categoriesCount(series);\n const isVertical = !this.options.invertAxes;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n let total = 0;\n let runningTotal = 0;\n\n for (let categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n const data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n const value = data.valueFields.value;\n const summary = data.fields.summary;\n let from = total;\n let to;\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n }\n\n updateRange(value, fields) {\n super.updateRange({ value: fields.to }, fields);\n }\n\n aboveAxis(point) {\n return point.value >= 0;\n }\n\n plotRange(point) {\n return [ point.from, point.to ];\n }\n\n createSegments() {\n const series = this.options.series;\n const seriesPoints = this.seriesPoints;\n const segments = this.segments = [];\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const points = seriesPoints[seriesIx];\n\n if (points) {\n let prevPoint;\n for (let pointIx = 0; pointIx < points.length; pointIx++) {\n const point = points[pointIx];\n\n if (point && prevPoint) {\n const segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n}\n\nexport default WaterfallChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nclass WaterfallSegment extends ChartElement {\n constructor(from, to, series) {\n super();\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n linePoints() {\n const from = this.from;\n const { from: { box: fromBox }, to: { box: toBox } } = this;\n const points = [];\n\n if (from.isVertical) {\n const y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n const x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n }\n\n createVisual() {\n super.createVisual();\n\n const line = this.series.line || {};\n\n const path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n}\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","export { default as addClass } from './common/add-class';\nexport { default as removeClass } from './common/remove-class';\nexport { default as alignPathToPixel } from './common/align-path-to-pixel';\nexport { default as clockwise } from './common/clockwise';\nexport { default as convertableToNumber } from './common/convertable-to-number';\nexport { default as deepExtend } from './common/deep-extend';\nexport { default as elementStyles } from './common/element-styles';\nexport { default as getSpacing } from './common/get-spacing';\nexport { default as getTemplate } from './common/get-template';\nexport { default as getter } from './common/getter';\nexport { default as grep } from './common/grep';\nexport { default as hasClasses } from './common/has-classes';\nexport { default as HashMap } from './common/hash-map';\nexport { default as inArray } from './common/in-array';\nexport { default as interpolateValue } from './common/interpolate-value';\nexport { default as InstanceObserver } from './common/instance-observer';\nexport { default as isArray } from './common/is-array';\nexport { default as isFunction } from './common/is-function';\nexport { default as isNumber } from './common/is-number';\nexport { default as isObject } from './common/is-object';\nexport { default as isString } from './common/is-string';\nexport { default as map } from './common/map';\nexport { default as mousewheelDelta } from './common/mousewheel-delta';\nexport { default as FontLoader } from './common/font-loader';\nexport { default as setDefaultOptions } from './common/set-default-options';\nexport { default as sparseArrayLimits } from './common/sparse-array-limits';\nexport { default as styleValue } from './common/style-value';\nexport { default as find } from './common/find';\nexport { default as elementScale } from './common/element-scale';\nexport { default as autoTextColor } from './common/auto-text-color';\nexport { default as createHashSet } from './common/create-hash-set';\nexport { default as defaultErrorHandler } from './common/default-error-handler';\nexport { default as keys } from './common/keys';\n\nexport * from './drawing-utils';\n","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n const classArray = isArray(classes) ? classes : [ classes ];\n\n for (let idx = 0; idx < classArray.length; idx++) {\n const className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n let offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (let i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n const isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export const ARC = \"arc\";\nexport const AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport const BLACK = \"#000\";\nexport const BOTTOM = \"bottom\";\nexport const CENTER = \"center\";\nexport const CIRCLE = \"circle\";\nexport const COORD_PRECISION = 3;\nexport const CROSS = \"cross\";\nexport const DATE = \"date\";\nexport const DEFAULT_FONT = \"12px sans-serif\";\nexport const DEFAULT_HEIGHT = 400;\nexport const DEFAULT_PRECISION = 10;\nexport const DEFAULT_WIDTH = 600;\nexport const END = \"end\";\nexport const FORMAT_REGEX = /\\{\\d+:?/;\nexport const HEIGHT = \"height\";\nexport const HIGHLIGHT_ZINDEX = 100;\nexport const INSIDE = \"inside\";\nexport const LEFT = \"left\";\nexport const MAX_VALUE = Number.MAX_VALUE;\nexport const MIN_VALUE = -Number.MAX_VALUE;\nexport const NONE = \"none\";\nexport const NOTE_CLICK = \"noteClick\";\nexport const NOTE_HOVER = \"noteHover\";\nexport const NOTE_LEAVE = \"noteLeave\";\nexport const OBJECT = \"object\";\nexport const OUTSIDE = \"outside\";\nexport const RIGHT = \"right\";\nexport const ROUNDED_RECT = \"roundedRect\";\nexport const START = \"start\";\nexport const STRING = \"string\";\nexport const TOP = \"top\";\nexport const TRIANGLE = \"triangle\";\nexport const VALUE = \"value\";\nexport const WHITE = \"#fff\";\nexport const WIDTH = \"width\";\nexport const X = \"x\";\nexport const Y = \"y\";\nexport const DEFAULT_SERIES_OPACITY = 1;\n","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","const DELETED = {};\n\nclass LegacySet {\n constructor(values) {\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (let i = 0; i < this._values.length; i++) {\n this._index[this._values[i]] = i;\n }\n }\n\n values() {\n return this._values.filter(item => item !== DELETED);\n }\n\n has(value) {\n return this._index[value] !== undefined;\n }\n\n add(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n }\n\n delete(value) {\n const index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n }\n\n clear() {\n this._index = {};\n this._values = [];\n }\n\n get size() {\n return this._values.length;\n }\n}\n\nclass SetWrapper {\n constructor(values) {\n this._set = new Set(values);\n }\n\n values() {\n return Array.from(this._set);\n }\n\n has(value) {\n return this._set.has(value);\n }\n\n add(value) {\n this._set.add(value);\n }\n\n delete(value) {\n this._set.delete(value);\n }\n\n clear() {\n this._set.clear();\n }\n\n get size() {\n return this._set.size;\n }\n}\n\n// TODO: Drop LegacySet when removing support for IE10\nlet supportsSet = () => {\n let supported = false;\n\n if (typeof Set === 'function') {\n const set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","import isFunction from './is-function';\n\nconst OBJECT = \"object\";\nconst UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (let property in source) {\n let propValue = source[property];\n let propType = typeof propValue;\n\n let propInit;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n let destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n const length = arguments.length;\n\n for (let i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n}","export default function defaultErrorHandler(error) {\n throw error;\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nconst Matrix = geometry.Matrix;\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nconst SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n const stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n const result = {};\n const style = window.getComputedStyle(element);\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (let field in styles) {\n element.style[field] = styleValue(styles[field]);\n }\n }\n}","export default function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { logToConsole } from '../drawing-utils';\n\nclass FontLoader {\n static fetchFonts(options, fonts, state = { depth: 0 }) {\n const MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n const value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n }\n\n static loadFonts(fonts, callback) {\n let promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n\n static preloadFonts(options, callback) {\n const fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n }\n}\n\nexport default FontLoader;","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing = 0) {\n const spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options = {}) {\n let template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function grep(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n const names = classNames.split(\" \");\n for (let idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}","\nexport default class HashMap {\n constructor() {\n this._map = {};\n }\n\n get(name) {\n return this._map[this._key(name)];\n }\n\n set(name, value) {\n this._map[this._key(name)] = value;\n }\n\n _key(name) {\n return name instanceof Date ? name.getTime() : name;\n }\n}","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","import deepExtend from './deep-extend';\n\nconst TRIGGER = 'trigger';\n\nclass InstanceObserver {\n constructor(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n }\n\n trigger(name, args) {\n const { observer, handlerMap } = this;\n let isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n }\n\n callObserver(fnName, ...args) {\n return this.observer[fnName].apply(this.observer, args);\n }\n\n requiresHandlers(names) {\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (let idx = 0; idx < names.length; idx++) {\n if (this.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n}\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","export default function isArray(value) {\n return Array.isArray(value);\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","let keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n};\n\nexport default keys;\n","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n let value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n let delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","const SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n const proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let idx = 0, length = arr.length; idx < length; idx++) {\n const value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","export { default as autoMajorUnit } from './core/utils/auto-major-unit';\nexport { default as Point } from './core/point';\nexport { default as Box } from './core/box';\nexport { default as Ring } from './core/ring';\nexport { default as Sector } from './core/sector';\nexport { default as ShapeBuilder } from './core/shape-builder';\nexport { default as ShapeElement } from './core/shape-element';\nexport { default as ChartElement } from './core/chart-element';\nexport { default as BoxElement } from './core/box-element';\nexport { default as RootElement } from './core/root-element';\nexport { default as FloatElement } from './core/float-element';\nexport { default as Text } from './core/text';\nexport { default as TextBox } from './core/text-box';\nexport { default as Title } from './core/title';\nexport { default as AxisLabel } from './core/axis-label';\nexport { default as Axis } from './core/axis';\nexport { default as Note } from './core/note';\nexport { default as CategoryAxis } from './core/category-axis';\nexport { default as DateCategoryAxis } from './core/date-category-axis';\nexport { default as DateValueAxis } from './core/date-value-axis';\nexport { default as NumericAxis } from './core/numeric-axis';\nexport { default as LogarithmicAxis } from './core/logarithmic-axis';\nexport { default as PolarAxis } from './core/polar-axis';\nexport { default as RadarCategoryAxis } from './core/radar-category-axis';\nexport { default as RadarNumericAxis } from './core/radar-numeric-axis';\nexport { default as RadarLogarithmicAxis } from './core/radar-logarithmic-axis';\nexport { default as CurveProcessor } from './core/curve-processor';\nexport { default as Gradients } from './core/gradients';\nexport { default as rectToBox } from './core/utils/rect-to-box';\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nclass AxisLabel extends TextBox {\n constructor(value, text, index, dataItem, options) {\n super(text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n visualContext(targetBox) {\n const context = super.visualContext(targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n }\n\n click(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n }\n\n rotate() {\n if (this.options.alignRotation !== CENTER) {\n const box = this.normalBox.toRect();\n const transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n super.rotate();\n }\n\n return this.box;\n }\n\n rotationTransform() {\n const options = this.options;\n const rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return super.rotationTransform();\n }\n\n const rotationMatrix = geom.transform().rotate(rotation).matrix();\n const box = this.normalBox.toRect();\n const rect = this.targetBox.toRect();\n\n const rotationOrigin = options.rotationOrigin || TOP;\n const alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n const distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n const axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n const topLeft = box.topLeft().transformCopy(rotationMatrix);\n const topRight = box.topRight().transformCopy(rotationMatrix);\n const bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n const bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n const rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n const translate = {\n [distanceAxis]: rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis]\n };\n\n const distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n const distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n let alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n const alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n}\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nclass Axis extends ChartElement {\n constructor(options, chartService = new ChartService()) {\n super(options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n initFields() {\n }\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n }\n\n normalizeLabelRotation(labelOptions) {\n const rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n }\n\n createLabels() {\n const options = this.options;\n const align = options.vertical ? RIGHT : CENTER;\n const labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n const step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n const range = this.labelsRange();\n for (let idx = range.min; idx < range.max; idx += step) {\n const labelContext = { index: idx, count: range.max };\n let label = this.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this.append(label);\n this.labels.push(label);\n }\n }\n }\n }\n\n clearLabels() {\n this.children = grep(this.children, child => !(child instanceof AxisLabel));\n this.labels = [];\n }\n\n clearTitle() {\n if (this.title) {\n this.children = grep(this.children, child => child !== this.title);\n this.title = undefined;\n }\n }\n\n clear() {\n this.clearLabels();\n this.clearTitle();\n }\n\n lineBox() {\n const { options, box } = this;\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const axisX = mirror ? box.x1 : box.x2;\n const axisY = mirror ? box.y2 : box.y1;\n const lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n }\n\n createTitle() {\n const options = this.options;\n const titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n const title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n }\n\n createNotes() {\n const options = this.options;\n const notes = options.notes;\n const items = notes.data || [];\n\n this.notes = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = deepExtend({}, notes, items[i]);\n item.value = this.parseNoteValue(item.value);\n\n const note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this.append(note);\n this.notes.push(note);\n }\n }\n }\n\n parseNoteValue(value) {\n return value;\n }\n\n renderVisual() {\n super.renderVisual();\n\n this.createPlotBands();\n }\n\n createVisual() {\n super.createVisual();\n\n this.createBackground();\n this.createLine();\n }\n\n gridLinesVisual() {\n let gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const lineBox = this.lineBox();\n const mirror = options.labels.mirror;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (let i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n }\n\n createLine() {\n const options = this.options;\n const line = options.line;\n const lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n const path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n const group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n }\n\n getActualTickSize() {\n const options = this.options;\n let tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n }\n\n createBackground() {\n const { options, box } = this;\n const background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n }\n\n createPlotBands() {\n const options = this.options;\n const plotBands = options.plotBands || [];\n const vertical = options.vertical;\n const plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n const altAxis = grep(this.pane.axes, axis => axis.options.vertical !== this.options.vertical)[0];\n\n for (let idx = 0; idx < plotBands.length; idx++) {\n let item = plotBands[idx];\n let slotX, slotY;\n let labelOptions = item.label;\n let label;\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this.getSlot(item.from, item.to, true);\n } else {\n slotX = this.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n const bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n const path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n }\n\n createPlotBandLabel(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n let text = label.text;\n let textbox;\n\n if (defined(label) && label.visible) {\n const labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, minorUnit, vertical } = options;\n const axisLineVisible = altAxis.options.line.visible;\n const majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n const lineBox = altAxis.lineBox();\n const linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (let i = gridLine.skip; i < count; i += step) {\n let pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n }\n\n reflow(box) {\n const { options, labels, title } = this;\n const vertical = options.vertical;\n const count = labels.length;\n const sizeFn = vertical ? WIDTH : HEIGHT;\n const titleSize = title ? title.box[sizeFn]() : 0;\n const space = this.getActualTickSize() + options.margin + titleSize;\n const rootBox = (this.getRoot() || {}).box || box;\n const boxSize = rootBox[sizeFn]();\n let maxLabelSize = 0;\n\n for (let i = 0; i < count; i++) {\n let labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n }\n\n getLabelsTickPositions() {\n return this.getMajorTickPositions();\n }\n\n labelTickIndex(label) {\n return label.index;\n }\n\n arrangeLabels() {\n const { options, labels } = this;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const tickPositions = this.getLabelsTickPositions();\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n const labelSize = vertical ? label.box.height() : label.box.width();\n const firstTickPosition = tickPositions[tickIx];\n const nextTickPosition = tickPositions[tickIx + 1];\n let positionStart, positionEnd;\n\n if (vertical) {\n if (labelsBetweenTicks) {\n const middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this.positionLabel(label, mirror, positionStart, positionEnd);\n }\n }\n\n positionLabel(label, mirror, positionStart, positionEnd = positionStart) {\n const options = this.options;\n const vertical = options.vertical;\n const lineBox = this.lineBox();\n const labelOffset = this.getActualTickSize() + options.margin;\n let labelBox;\n\n if (vertical) {\n let labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n let labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n }\n\n autoRotateLabelAngle(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n }\n\n autoRotateLabels() {\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n const tickPositions = this.getMajorTickPositions();\n const labels = this.labels;\n const limit = Math.min(labels.length, tickPositions.length - 1);\n let angle = 0;\n\n for (let idx = 0; idx < limit; idx++) {\n const width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n const labelBox = labels[idx].box;\n const labelAngle = this.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (let idx = 0; idx < labels.length; idx++) {\n labels[idx].options.rotation = angle;\n labels[idx].reflow(new Box());\n }\n\n return true;\n }\n }\n\n arrangeTitle() {\n const { options, title } = this;\n const mirror = options.labels.mirror;\n const vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n }\n\n arrangeNotes() {\n for (let idx = 0; idx < this.notes.length; idx++) {\n const item = this.notes[idx];\n const value = item.options.value;\n let slot;\n\n if (defined(value)) {\n if (this.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this.lineBox());\n }\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n alignTo(secondAxis) {\n const lineBox = secondAxis.lineBox();\n const vertical = this.options.vertical;\n const pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n }\n\n axisLabelText(value, options, context) {\n let text;\n const tmpl = getTemplate(options);\n const defaultText = () => {\n if (!options.format) {\n return value;\n }\n\n return this.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n const templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n }\n\n slot(from , to, limit) {\n const slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n contentBox() {\n const box = this.box.clone();\n const labels = this.labels;\n if (labels.length) {\n const axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n const offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n const lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n }\n\n maxLabelOffset() {\n const { vertical, reverse } = this.options;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const tickPositions = this.getLabelsTickPositions();\n const offsetField = vertical ? Y : X;\n const labels = this.labels;\n const startPosition = reverse ? 1 : 0;\n const endPosition = reverse ? 0 : 1;\n let maxStartOffset = 0;\n let maxEndOffset = 0;\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n let startTick, endTick;\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n }\n\n limitRange(from, to, min, max, offset) {\n const options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n const rangeSize = to - from;\n let minValue = from;\n let maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n }\n\n valueRange() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n }\n\n lineDir() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n const { vertical, reverse } = this.options;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n }\n\n lineInfo() {\n const { vertical } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = this.lineDir();\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n pointOffset(point) {\n const { axis, axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n const offset = relative / lineSize;\n\n return offset;\n }\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n scaleToDelta(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n const MAX_SCALE = 0.999;\n const scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n let delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n }\n\n labelsBetweenTicks() {\n return !this.options.justified;\n }\n\n //add legacy fields to the options that are no longer generated by default\n prepareUserOptions() {\n }\n}\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nclass BoxElement extends ChartElement {\n constructor(options) {\n super(options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { width, height, shrinkToFit } = options;\n const hasSetSize = width && height;\n const margin = options.margin;\n const padding = options.padding;\n const borderWidth = options.border.width;\n let box;\n\n const reflowPaddingBox = () => {\n this.align(targetBox, X, options.align);\n this.align(targetBox, Y, options.vAlign);\n this.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n let contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n super.reflow(contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n let item = children[i];\n item.reflow(item.box);\n }\n }\n\n align(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n }\n\n hasBox() {\n const options = this.options;\n return options.border.width || options.background;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n }\n\n visualStyle() {\n const options = this.options;\n const border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n}\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nclass Box extends Class {\n constructor(x1, y1, x2, y2) {\n super();\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n equals(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n }\n\n width() {\n return this.x2 - this.x1;\n }\n\n height() {\n return this.y2 - this.y1;\n }\n\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n }\n\n move(x, y) {\n const height = this.height();\n const width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n }\n\n wrap(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n }\n\n wrapPoint(point) {\n const arrayPoint = isArray(point);\n const x = arrayPoint ? point[0] : point.x;\n const y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n }\n\n snapTo(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n }\n\n alignTo(targetBox, anchor) {\n const height = this.height();\n const width = this.width();\n const axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n const offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n const targetCenter = targetBox.center();\n const center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n shrink(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n }\n\n expand(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n }\n\n pad(padding) {\n const spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n }\n\n unpad(padding) {\n const spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n }\n\n clone() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n }\n\n center() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n }\n\n containsPoint(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n }\n\n points() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n }\n\n getHash() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n }\n\n overlaps(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n }\n\n rotate(rotation) {\n let width = this.width();\n let height = this.height();\n const { x: cx, y: cy } = this.center();\n\n const r1 = rotatePoint(0, 0, cx, cy, rotation);\n const r2 = rotatePoint(width, 0, cx, cy, rotation);\n const r3 = rotatePoint(width, height, cx, cy, rotation);\n const r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n toRect() {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n }\n\n hasSize() {\n return this.width() !== 0 && this.height() !== 0;\n }\n\n align(targetBox, axis, alignment) {\n const c1 = axis + 1;\n const c2 = axis + 2;\n const sizeFunc = axis === X ? WIDTH : HEIGHT;\n const size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n}\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n const theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nconst MIN_CATEGORY_POINTS_RANGE = 0.01;\nconst MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n const length = arr.length;\n for (let idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nclass CategoryAxis extends Axis {\n initFields() {\n this._ticks = {};\n }\n\n categoriesHash() {\n return \"\";\n }\n\n clone() {\n const copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n initUserOptions(options) {\n const categories = options.categories || [];\n const definedMin = defined(options.min);\n const definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n const min = definedMin ? Math.floor(options.min) : 0;\n let max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n }\n\n rangeIndices() {\n const options = this.options;\n const length = options.categories.length || 1;\n const min = isNumber(options.min) ? options.min % 1 : 0;\n let max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n totalRangeIndices(limit) {\n const options = this.options;\n let min = isNumber(options.min) ? options.min : 0;\n let max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n const totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n range() {\n const options = this.options;\n const min = isNumber(options.min) ? options.min : 0;\n const max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n }\n\n roundedRange() {\n return this.range();\n }\n\n totalRange() {\n const options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n }\n\n scaleOptions() {\n const { min, max } = this.rangeIndices();\n const lineBox = this.lineBox();\n const size = this.options.vertical ? lineBox.height() : lineBox.width();\n const scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n }\n\n arrangeLabels() {\n super.arrangeLabels();\n this.hideOutOfRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n const { box, labels } = this;\n\n if (labels.length > 0) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n const firstLabel = labels[0];\n const lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n }\n\n getMajorTickPositions() {\n return this.getTicks().majorTicks;\n }\n\n getMinorTickPositions() {\n return this.getTicks().minorTicks;\n }\n\n getLabelsTickPositions() {\n return this.getTicks().labelTicks;\n }\n\n tickIndices(stepSize) {\n const { min, max } = this.rangeIndices();\n const limit = Math.ceil(max);\n let current = Math.floor(min);\n const indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n }\n\n getTickPositions(stepSize) {\n const { vertical, reverse } = this.options;\n const { scale, box, min } = this.scaleOptions();\n const pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n const indices = this.tickIndices(stepSize);\n const positions = [];\n\n for (let idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n }\n\n getTicks() {\n const options = this.options;\n const cache = this._ticks;\n const range = this.rangeIndices();\n const lineBox = this.lineBox();\n const hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n const hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n }\n\n filterOutOfRangePositions(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n const axis = this.options.vertical ? Y : X;\n const inRange = (position) => lineBox[axis + 1] <= position && position <= lineBox[axis + 2];\n\n const end = positions.length - 1;\n let startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n let endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n }\n\n lineInfo() {\n const { vertical, reverse } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = reverse ? -1 : 1;\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n lineDir() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n const { reverse } = this.options;\n return reverse ? -1 : 1;\n }\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n getSlot(from, to, limit) {\n const options = this.options;\n const { reverse, justified } = options;\n const { scale, box, min } = this.scaleOptions();\n const { axis: valueAxis, lineStart } = this.lineInfo();\n\n const slotBox = box.clone();\n const singleSlot = !defined(to);\n\n const start = valueOrDefault(from, 0);\n let end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n let p1 = lineStart + (start - min) * scale;\n let p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n }\n\n limitSlot(slot) {\n const vertical = this.options.vertical;\n const valueAxis = vertical ? Y : X;\n const lineBox = this.lineBox();\n const limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n }\n\n slot(from, to, limit) {\n const min = Math.floor(this.options.min || 0);\n let start = from;\n let end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return super.slot(start, end, limit);\n }\n\n pointCategoryIndex(point) {\n const { reverse, justified, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const { scale, box, min, max } = this.scaleOptions();\n const startValue = reverse ? max : min;\n const lineStart = box[valueAxis + 1];\n const lineEnd = box[valueAxis + 2];\n const pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n let value = startValue + (pos - lineStart) / scale;\n const diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n }\n\n categoryIndex(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n }\n\n categoryAt(index, total) {\n const options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n }\n\n categoriesCount() {\n return (this.options.categories || []).length;\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const range = options.categories.length;\n const scale = size / range;\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const rangeIndices = this.totalRangeIndices();\n const range = rangeIndices.max - rangeIndices.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = rangeIndices.min + minDelta;\n let max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { min: totalMin, max: totalMax } = this.totalRange();\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n labelsCount() {\n const labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n }\n\n labelsRange() {\n const options = this.options;\n const { justified, labels: labelOptions } = options;\n let { min, max } = this.totalRangeIndices(true);\n const start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n let skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const dataItem = options.dataItems ? options.dataItems[index] : null;\n const category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n const text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n }\n\n noteSlot(value) {\n const options = this.options;\n const index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n }\n\n arrangeNotes() {\n super.arrangeNotes();\n this.hideOutOfRangeNotes();\n }\n\n hideOutOfRangeNotes() {\n const { notes, box } = this;\n if (notes && notes.length) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n\n for (let idx = 0; idx < notes.length; idx++) {\n const note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n }\n\n pan(delta) {\n const range = this.totalRangeIndices(true);\n const { scale } = this.scaleOptions();\n const offset = round(delta / scale, DEFAULT_PRECISION);\n const totalRange = this.totalRange();\n const min = range.min + offset;\n const max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n }\n\n pointsRange(start, end) {\n const { reverse, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const range = this.totalRangeIndices(true);\n const { scale, box } = this.scaleOptions();\n const lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n const diffStart = start[valueAxis] - lineStart;\n const diffEnd = end[valueAxis] - lineStart;\n\n const min = range.min + diffStart / scale;\n const max = range.min + diffEnd / scale;\n const rangeMin = Math.min(min, max);\n const rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n }\n\n valueRange() {\n return this.range();\n }\n\n totalIndex(value) {\n const options = this.options;\n const index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n }\n\n currentRangeIndices() {\n const options = this.options;\n let min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n let max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n mapCategories() {\n if (!this._categoriesMap) {\n const map = this._categoriesMap = new HashMap();\n const srcCategories = this.options.srcCategories;\n for (let idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n }\n\n totalCount() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n}\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nclass ChartElement extends Class {\n constructor(options) {\n super();\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n initUserOptions(options) {\n return options;\n }\n\n reflow(targetBox) {\n const children = this.children;\n let box;\n\n for (let i = 0; i < children.length; i++) {\n let currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n }\n\n destroy() {\n const children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n }\n\n getRoot() {\n const parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n }\n\n getSender() {\n const service = this.getService();\n if (service) {\n return service.sender;\n }\n }\n\n getService() {\n let element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n }\n\n translateChildren(dx, dy) {\n const children = this.children;\n const childrenCount = children.length;\n\n for (let i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n }\n\n append() {\n for (let i = 0; i < arguments.length; i++) {\n let item = arguments[i];\n this.children.push(item);\n item.parent = this;\n }\n }\n\n renderVisual() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n }\n\n addVisual() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n }\n\n renderChildren() {\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n }\n\n createAnimation() {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n }\n\n appendVisual(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n }\n\n clipRoot() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n }\n\n stackRoot() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n }\n\n stackVisual(childVisual) {\n const zIndex = childVisual.options.zIndex || 0;\n const visuals = this.visual.children;\n const length = visuals.length;\n let pos;\n\n for (pos = 0; pos < length; pos++) {\n let sibling = visuals[pos];\n let here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n }\n\n traverse(callback) {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n let child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n }\n\n closest(match) {\n let element = this;\n let matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n }\n\n renderComplete() {}\n\n hasHighlight() {\n const options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n }\n\n toggleHighlight(show, opacity) {\n const options = (this.options || {}).highlight || {};\n const customVisual = options.visual;\n let highlight = this._highlight;\n\n if (!highlight) {\n const highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: () => this.createHighlight(highlightOptions),\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n }\n\n createGradientOverlay(element, options, gradientOptions) {\n const overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n }\n\n createGradient(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n }\n\n supportsPointInactiveOpacity() {\n return true;\n }\n}\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","const COORDINATE_LIMIT = 300000;\n\nconst DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nconst ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nclass CurveProcessor extends Class {\n\n constructor(closed) {\n super();\n\n this.closed = closed;\n }\n\n process(dataPoints) {\n const points = dataPoints.slice(0);\n const segments = [];\n let closed = this.closed;\n let length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n this.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = this.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = this.lineFunction(p0,p1);\n const y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n isLine(p0, p1, p2) {\n const fn = this.lineFunction(p0, p1);\n const y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n controlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n }\n\n restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n tangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n point(xValue, yValue, xField, yField) {\n const controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n}\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nconst AUTO = \"auto\";\nconst BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nconst FIT = \"fit\";\n\n\nfunction categoryRange(categories) {\n let range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nclass EmptyDateRange {\n constructor(options) {\n this.options = options;\n }\n\n displayIndices() {\n return {\n min: 0,\n max: 1\n };\n }\n\n displayRange() {\n return {};\n }\n\n total() {\n return {};\n }\n\n valueRange() {\n return {};\n }\n\n valueIndex() {\n return -1;\n }\n\n values() {\n return [];\n }\n\n totalIndex() {\n return -1;\n }\n\n valuesCount() {\n return 0;\n }\n\n totalCount() {\n return 0;\n }\n\n dateAt() {\n return null;\n }\n}\n\nclass DateRange {\n constructor(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n const { roundToBaseUnit, justified } = options;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n const lowerEnd = this.roundToTotalStep(end);\n const expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n const min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n const max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n const next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n }\n\n displayRange() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n }\n\n displayIndices() {\n if (!this._indices) {\n const options = this.options;\n\n const { baseUnit, baseUnitStep } = options;\n\n const minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n const maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n }\n\n total() {\n return {\n min: this.start,\n max: this.end\n };\n }\n\n totalCount() {\n const last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n }\n\n valueRange() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n }\n\n valueIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n }\n\n totalIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n }\n\n dateIndex(value) {\n const options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n }\n\n valuesCount() {\n const maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n }\n\n values() {\n let values = this._values;\n if (!values) {\n const options = this.options;\n const range = this.valueRange();\n this._values = values = [];\n\n for (let date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n }\n\n dateAt(index, total) {\n const options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n }\n\n roundToTotalStep(value, upper, next) {\n const { baseUnit, baseUnitStep, weekStartDay } = this.options;\n const start = this.start;\n\n const step = dateIndex(value, start, baseUnit, baseUnitStep);\n let roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n\n}\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n const categoryLimits = categoryRange(options.categories);\n const span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n const { autoBaseUnitSteps, maxDateGroups } = options;\n const autoUnit = options.baseUnit === FIT;\n let autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n let baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n let units = span / TIME_PER_UNIT[baseUnit];\n let totalUnits = units;\n let unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n const categories = options.categories;\n const count = defined(categories) ? categories.length : 0;\n let minDiff = MAX_VALUE;\n let lastCategory, unit;\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n const category = categories[categoryIx];\n\n if (category && lastCategory) {\n const diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n const baseUnit = (options.baseUnit || \"\").toLowerCase();\n const useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nclass DateCategoryAxis extends CategoryAxis {\n\n clone() {\n const copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n categoriesHash() {\n const start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n }\n\n initUserOptions(options) {\n return options;\n }\n\n initFields() {\n super.initFields();\n\n const chartService = this.chartService;\n const intlService = chartService.intl;\n let options = this.options;\n\n let categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n const range = categoryRange(categories);\n const maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n const dataRange = this.dataRange.displayRange();\n\n const divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n const dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n }\n\n tickIndices(stepSize) {\n const { dataRange, divisionRange } = this;\n const valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return super.tickIndices(stepSize);\n }\n\n const indices = [];\n let values = divisionRange.values();\n let offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (let idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n const last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n const categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n }\n\n parseNoteValue(value) {\n return parseDate(this.chartService.intl, value);\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { baseUnit, weekStartDay, vertical } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n let range = this.range();\n const scale = size / (range.max - range.min);\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n const from = addTicks(options.min || range.min, offset);\n const to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n }\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n }\n\n pan(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const { min, max } = this.dataRange.displayRange();\n const totalLimits = this.dataRange.total();\n const scale = size / (max - min);\n const offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n const from = addTicks(min, offset);\n const to = addTicks(max, offset);\n\n const panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n }\n\n pointsRange(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n const pointsRange = super.pointsRange(start, end);\n const datesRange = this.dataRange.displayRange();\n const indicesRange = this.dataRange.displayIndices();\n const scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n const options = this.options;\n\n const min = addTicks(datesRange.min, pointsRange.min * scale);\n const max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n\n scaleRange(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n const options = this.options;\n const fit = options.userSetBaseUnit === FIT;\n const totalLimits = this.dataRange.total();\n const { min: rangeMin, max: rangeMax } = this.dataRange.displayRange();\n\n const position = Math.abs(this.pointOffset(cursor));\n const range = rangeMax - rangeMin;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = Math.round(position * delta);\n const maxDelta = Math.round((1 - position) * delta);\n\n let { baseUnit } = this.dataRange.options;\n let min = new Date(rangeMin.getTime() + minDelta);\n let max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n const { autoBaseUnitSteps, maxDateGroups } = options;\n\n const maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n const rangeDiff = dateDiff(rangeMax, rangeMin);\n const diff = dateDiff(max, min);\n let baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n let autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n let stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n }\n\n zoomRange(scale, cursor) {\n const totalLimits = this.dataRange.total();\n const range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n }\n\n range() {\n return this.dataRange.displayRange();\n }\n\n createLabels() {\n super.createLabels();\n this.createRangeLabels();\n }\n\n clearLabels() {\n super.clearLabels();\n this.rangeLabels = [];\n }\n\n arrangeLabels() {\n this.arrangeRangeLabels();\n super.arrangeLabels();\n }\n\n arrangeRangeLabels() {\n const { options, rangeLabels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n const lineBox = this.lineBox();\n const vertical = options.vertical;\n const mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n const firstLabel = rangeLabels[0];\n if (firstLabel) {\n const position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n const lastLabel = rangeLabels[1];\n if (lastLabel) {\n const position = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position);\n }\n }\n\n autoRotateLabels() {\n super.autoRotateLabels();\n this.autoRotateRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n super.hideOutOfRangeLabels();\n this.hideOverlappingLabels();\n }\n\n hideOverlappingLabels() {\n const { rangeLabels, labels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n const firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (let i = 0; i < labels.length; i++) {\n const overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n const lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (let i = labels.length - 1; i > 0; --i) {\n const overlaps = clip(lastRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n }\n\n contentBox() {\n const box = super.contentBox();\n const rangeLabels = this.rangeLabels;\n\n for (let i = 0; i < rangeLabels.length; i++) {\n const label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n }\n\n createAxisLabel(index, labelOptions, labelContext = {}) {\n const options = this.options;\n const dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n const date = this.divisionRange.dateAt(index);\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n }\n\n createRangeLabels() {\n const { displayStart, displayEnd } = this.divisionRange;\n const options = this.options;\n const labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const createLabel = (index, date, text) => {\n if (text) {\n const label = new AxisLabel(date, text, index, null, labelOptions);\n this.append(label);\n this.rangeLabels.push(label);\n }\n };\n\n const startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n const endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n }\n\n autoRotateRangeLabels() {\n const labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n const rotateLabel = (label, tickPositions, index) => {\n const width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n const angle = this.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n const tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n }\n\n categoryIndex(value) {\n return this.dataRange.valueIndex(value);\n }\n\n slot(from, to, limit) {\n const dateRange = this.dataRange;\n let start = from;\n let end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n const slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n getSlot(a, b, limit) {\n let start = a;\n let end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return super.getSlot(start, end, limit);\n }\n\n valueRange() {\n const options = this.options;\n const range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n }\n\n categoryAt(index, total) {\n return this.dataRange.dateAt(index, total);\n }\n\n categoriesCount() {\n return this.dataRange.valuesCount();\n }\n\n rangeIndices() {\n return this.dataRange.displayIndices();\n }\n\n labelsBetweenTicks() {\n return !this.divisionRange.options.justified;\n }\n\n prepareUserOptions() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n }\n\n totalIndex(value) {\n return this.dataRange.totalIndex(value);\n }\n\n currentRangeIndices() {\n const range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n }\n\n totalRange() {\n return this.dataRange.total();\n }\n\n totalCount() {\n return this.dataRange.totalCount();\n }\n\n isEmpty() {\n return !this.options.srcCategories.length;\n }\n\n roundedRange() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n const options = this.options;\n const datesRange = categoryRange(options.srcCategories);\n\n const dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: options.justified\n }));\n\n return dateRange.displayRange();\n }\n}\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nconst MIN_VALUE_RANGE = 1000;\n\nclass DateValueAxis extends Axis {\n constructor(seriesMin, seriesMax, axisOptions, chartService) {\n const min = toDate(seriesMin);\n const max = toDate(seriesMax);\n\n const intlService = chartService.intl;\n let options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n super(options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n const weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n clone() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n const options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n }\n\n getTickPositions(step) {\n const options = this.options;\n const { axisDir: dir, lineSize, lineStart: start } = this.lineInfo();\n const divisions = this.getDivisions(step);\n const timeRange = dateDiff(options.max, options.min);\n const scale = lineSize / timeRange;\n const weekStartDay = options.weekStartDay || 0;\n\n const positions = [ start ];\n for (let i = 1; i < divisions; i++) {\n const date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n const pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n }\n\n getValue(point) {\n const value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const offset = index * options.majorUnit;\n const weekStartDay = options.weekStartDay || 0;\n let date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n const unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const { vertical, reverse } = options;\n const size = vertical ? lineBox.height() : lineBox.width();\n const range = this.range();\n const scale = size / dateDiff(range.max, range.min);\n\n let offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n let from = addTicks(options.min, offset);\n let to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n }\n\n pan(delta) {\n const range = this.translateRange(delta, true);\n const limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = toDate(toTime(this.options.min) + minDelta);\n let max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n const max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min,\n max\n };\n }\n}\n\nfunction timeUnits(delta) {\n let unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n const min = options.min || seriesMin;\n const max = options.max || seriesMax;\n const baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n const baseUnitTime = TIME_PER_UNIT[baseUnit];\n const weekStartDay = options.weekStartDay || 0;\n const autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n const autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n const userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n const majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n const actualUnits = duration(autoMin, autoMax, baseUnit);\n const totalUnits = ceil(actualUnits, majorUnit);\n const unitsToAdd = totalUnits - actualUnits;\n const head = Math.floor(unitsToAdd / 2);\n const tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nclass FloatElement extends ChartElement {\n constructor(options) {\n super(options);\n this._initDirection();\n }\n\n _initDirection() {\n const options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n }\n\n reflow(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n }\n\n reflowChildren() {\n const { box, elementAxis, groupAxis, elementSizeField, groupSizeField } = this;\n const { groups, groupsSize, maxGroupElementsSize } = this.groupOptions();\n const groupsCount = groups.length;\n const groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n let groupStart = groupsStart;\n\n for (let groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n let group = groups[groupIdx];\n let groupElements = group.groupElements;\n let elementStart = box[elementAxis + 1];\n let groupElementsCount = groupElements.length;\n\n for (let idx = 0; idx < groupElementsCount; idx++) {\n let element = groupElements[idx];\n let elementSize = this.elementSize(element);\n let groupElementStart = groupStart + this.alignStart(elementSize[groupSizeField], group.groupSize);\n\n let elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this.elementSpacing;\n }\n groupStart += group.groupSize + this.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n }\n\n alignStart(size, maxSize) {\n let start = 0;\n const align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n }\n\n groupOptions() {\n const { box, children, elementSizeField, groupSizeField, elementSpacing, groupSpacing } = this;\n const maxSize = round(box[elementSizeField]());\n const childrenCount = children.length;\n const groups = [];\n\n let groupSize = 0;\n let groupElementsSize = 0;\n let groupsSize = 0;\n let maxGroupElementsSize = 0;\n let groupElements = [];\n\n for (let idx = 0; idx < childrenCount; idx++) {\n let element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n let elementSize = this.elementSize(element);\n if (this.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n }\n\n elementSize(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n }\n\n createVisual() {}\n}\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import { WHITE } from '../common/constants';\n\nconst LINEAR = \"linear\";\nconst RADIAL = \"radial\";\n\nconst GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nconst DEFAULT_MAJOR_UNIT = 10;\nconst MIN_VALUE_RANGE = 1e-6;\n\nclass LogarithmicAxis extends Axis {\n constructor(seriesMin, seriesMax, options, chartService) {\n\n const axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n const base = axisOptions.majorUnit;\n const autoMax = autoAxisMax(seriesMax, base);\n const autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n const range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n super(axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n clone() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return this.options.min;\n }\n\n getSlot(a, b, limit) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base, min, max } = options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (logMax - logMin));\n let start = valueOrDefault(a, b || 1);\n let end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n const p1 = Math.min(start, end) - logMin;\n const p2 = Math.max(start, end) - logMin;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base } = options;\n const { axis, axisDir, lineStart, lineSize } = this.lineInfo();\n const step = ((logMax - logMin) / lineSize);\n const offset = axisDir * (point[axis] - lineStart);\n const valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n const value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n translateRange(delta) {\n const { options, logMin, logMax } = this;\n const { reverse, vertical, majorUnit: base } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n const scale = size / (logMax - logMin);\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n }\n\n labelsCount() {\n const floorMax = Math.floor(this.logMax);\n const count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n }\n\n getMajorTickPositions() {\n const ticks = [];\n\n this.traverseMajorTicksPositions((position) => {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const { majorTicks, minorTicks, vertical } = options;\n const mirror = options.labels.mirror;\n const lineBox = this.lineBox();\n const ticks = [];\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, vertical } = options;\n const lineBox = altAxis.lineBox();\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n }\n\n traverseMajorTicksPositions(callback, tickOptions) {\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n\n for (let power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n let position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n\n traverseMinorTicksPositions(callback, tickOptions) {\n const { min, max, minorUnit, majorUnit: base } = this.options;\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n const start = Math.floor(logMin);\n\n for (let power = start; power < logMax; power++) {\n const minorOptions = this._minorIntervalOptions(power);\n for (let idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n const value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n const position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const power = Math.ceil(this.logMin + index);\n const value = Math.pow(this.options.majorUnit, power);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n }\n\n scaleRange(scale, cursor) {\n const { majorUnit: base } = this.options;\n const logMin = log(this.options.min, base);\n const logMax = log(this.options.max, base);\n const position = Math.abs(this.pointOffset(cursor));\n const range = logMax - logMin;\n const delta = this.scaleToDelta(scale, range);\n const min = Math.pow(base, logMin + position * delta);\n let max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const { totalMin, totalMax } = this;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n _minorIntervalOptions(power) {\n const { minorUnit, majorUnit: base } = this.options;\n const value = Math.pow(base, power);\n const nextValue = Math.pow(base, power + 1);\n const difference = nextValue - value;\n const minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n }\n\n lineInfo() {\n const info = super.lineInfo();\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n}\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n let { min, max } = axisOptions;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n const base = options.majorUnit;\n let autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n const logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n let autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nconst GridLinesMixin = {\n createGridLines: function(altAxis) {\n const options = this.options;\n const radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n let gridLines = [];\n let skipMajor = false;\n let majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n const radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n const center = this.box.center();\n const circle = new geom.Circle([ center.x, center.y ], radius);\n const container = this.gridLinesVisual();\n\n for (let i = 0; i < angles.length; i++) {\n const line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n const divs = this.intervals(size, skip, step, skipAngles);\n const options = altAxis.options;\n const altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, (d) => {\n const alpha = this.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nconst RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n const { majorGridLines: { type }, plotBands = [] } = this.options;\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n const slot = this.getSlot(band.from, band.to, true);\n const ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n let shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n const innerPoints = [];\n const outerPoints = [];\n const center = [ ring.center.x, ring.center.y ];\n const innerCircle = new geom.Circle(center, ring.innerRadius);\n const outerCircle = new geom.Circle(center, ring.radius);\n\n for (let i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n const options = this.options;\n const majorTicks = this.radarMajorGridLinePositions();\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n let gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n const minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n const { skip = 0, step = 0 } = options;\n const container = this.gridLinesVisual();\n\n for (let tickIx = skip; tickIx < ticks.length; tickIx += step) {\n const tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n const circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n const line = new draw.Path(style);\n for (let angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n const lineBox = this.lineBox();\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const radius = point.distanceTo(center);\n let distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n const theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n const midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n const alpha = angularDistance(theta, majorAngles[0]);\n const gamma = 90 - midAngle;\n const beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nconst DEFAULT_ICON_SIZE = 7;\nconst DEFAULT_LABEL_COLOR = \"#fff\";\n\nclass Note extends BoxElement {\n constructor(fields, options, chartService) {\n super(options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n hide() {\n this.options.visible = false;\n }\n\n show() {\n this.options.visible = true;\n }\n\n render() {\n const options = this.options;\n\n if (options.visible) {\n const { label, icon } = options;\n const box = new Box();\n const childAlias = () => this;\n let size = icon.size;\n let text = this.fields.text;\n let width, height;\n\n if (defined(label) && label.visible) {\n const noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n const marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n }\n\n reflow(targetBox) {\n const { options, label, marker, wrapperBox } = this;\n const center = targetBox.center();\n const length = options.line.length;\n const position = options.position;\n\n // TODO: Review\n if (options.visible) {\n let lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n }\n\n createVisual() {\n super.createVisual();\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n\n createLine() {\n const options = this.options.line;\n\n if (this.linePoints) {\n const path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n }\n\n out(widget, e) {\n const args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n}\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nconst MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nclass NumericAxis extends Axis {\n\n constructor(seriesMin, seriesMax, options, chartService) {\n super(Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n initUserOptions(options) {\n const autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n }\n\n initFields() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n }\n\n clone() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return 0;\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n const options = this.options;\n const range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n }\n\n getTickPositions(unit, skipUnit) {\n const options = this.options;\n const { axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const range = options.max - options.min;\n const scale = lineSize / range;\n const step = unit * scale;\n const divisions = this.getDivisions(unit);\n const positions = [];\n let pos = lineBox[axisOrigin];\n let skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (let idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit = false) {\n const options = this.options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (options.max - options.min));\n\n let start = valueOrDefault(a, b || 0);\n let end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n const p1 = Math.min(start, end) - options.min;\n const p2 = Math.max(start, end) - options.min;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const options = this.options;\n const max = Number(options.max);\n const min = Number(options.min);\n const offset = this.pointOffset(point);\n const valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n const value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { vertical, reverse, max, min } = options;\n const { lineSize } = this.lineInfo();\n const range = max - min;\n const scale = lineSize / range;\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n let max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { totalMin, totalMax } = this;\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n }\n\n isValidRange(min, max) {\n return max - min > MIN_VALUE_RANGE;\n }\n}\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n const narrowRange = options.narrowRange;\n\n let autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n let autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n const majorUnit = autoMajorUnit(autoMin, autoMax);\n const autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n let options = userOptions;\n let userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n const userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n const result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n const remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n const threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nclass Point extends Class {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n equals(point) {\n return point && this.x === point.x && this.y === point.y;\n }\n\n rotate(center, degrees) {\n const theta = rad(degrees);\n const cosT = Math.cos(theta);\n const sinT = Math.sin(theta);\n const { x: cx, y: cy } = center;\n const { x, y } = this;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n }\n\n multiply(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n static onCircle(center, angle, radius) {\n const radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n }\n}\n\n\nexport default Point;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nclass PolarAxis extends Axis {\n constructor(options, chartService) {\n super(options, chartService);\n\n const instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n getDivisions(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n reflowLabels() {\n const { options, labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n\n const measureBox = new Box();\n const divs = this.intervals(options.majorUnit, skip, step);\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n }\n\n lineBox() {\n return this.box;\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const min = this.options.min;\n const divisions = this.getDivisions(size);\n const divs = [];\n const skip = skipOption || 0;\n const step = stepOption || 1;\n\n for (let i = skip; i < divisions; i += step) {\n const current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(this.options.majorUnit);\n }\n\n minorIntervals() {\n return this.intervals(this.options.minorUnit);\n }\n\n intervalAngle(i) {\n return (540 - i - this.options.startAngle) % 360;\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const options = this.options;\n const { minorGridLines, majorGridLines } = options;\n const majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to);\n }\n\n getSlot(a, b) {\n const { options, box } = this;\n const startAngle = options.startAngle;\n let start = limitValue(a, options.min, options.max);\n let end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n const tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n }\n\n slot(from, to = from) {\n const options = this.options;\n const start = 360 - options.startAngle;\n const slot = this.getSlot(from, to);\n const min = Math.min(from, to);\n const max = Math.max(from, to);\n let startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n getValue(point) {\n const options = this.options;\n const center = this.box.center();\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n let theta = Math.round(deg(Math.atan2(dy, dx)));\n let start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n }\n\n valueRange() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n}\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nclass RadarCategoryAxis extends CategoryAxis {\n range() {\n return { min: 0, max: this.options.categories.length };\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n lineBox() {\n return this.box;\n }\n\n reflowLabels() {\n const { labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n const measureBox = new Box();\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const options = this.options;\n const categories = options.categories.length;\n const divCount = categories / size || 1;\n const divAngle = 360 / divCount;\n const skip = skipOption || 0;\n const step = stepOption || 1;\n const divs = [];\n let angle = 0;\n\n for (let i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(1);\n }\n\n minorIntervals() {\n return this.intervals(0.5);\n }\n\n intervalAngle(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n }\n\n majorAngles() {\n return map(this.majorIntervals(), (interval) => this.intervalAngle(interval));\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const { minorGridLines, majorGridLines } = this.options;\n const majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n radiusCallback(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n const minorAngle = rad(360 / (this.options.categories.length * 2));\n const minorRadius = Math.cos(minorAngle) * radius;\n const majorAngles = this.majorAngles();\n\n const radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n }\n\n createPlotBands() {\n const plotBands = this.options.plotBands || [];\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const slot = this.plotBandSlot(band);\n const singleSlot = this.getSlot(band.from);\n\n const head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n const tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n const ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to - 1);\n }\n\n getSlot(from, to) {\n const options = this.options;\n const justified = options.justified;\n const box = this.box;\n const divs = this.majorAngles();\n const totalDivs = divs.length;\n const slotAngle = 360 / totalDivs;\n let fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n let slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n const toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n const slots = toValue - fromValue + 1;\n const angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n }\n\n slot(from, to) {\n const slot = this.getSlot(from, to);\n const startAngle = slot.startAngle + 180;\n const endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n pointCategoryIndex(point) {\n const length = this.options.categories.length;\n let index = null;\n\n for (let i = 0; i < length; i++) {\n const slot = this.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n}\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarLogarithmicAxis extends LogarithmicAxis {\n radarMajorGridLinePositions() {\n const positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n }\n\n radarMinorGridLinePositions() {\n const positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n }\n\n axisType() {\n return LogarithmicAxis;\n }\n}\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarNumericAxis extends NumericAxis {\n radarMajorGridLinePositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n radarMinorGridLinePositions() {\n const options = this.options;\n let minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n }\n\n axisType() {\n return NumericAxis;\n }\n}\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nclass Ring extends Class {\n\n constructor(center, innerRadius, radius, startAngle, angle) {\n super();\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n clone() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n }\n\n middle() {\n return this.startAngle + this.angle / 2;\n }\n\n setRadius(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n }\n\n // TODO: Remove and replace with Point.onCircle\n point(angle, innerRadius) {\n const radianAngle = rad(angle);\n const ax = Math.cos(radianAngle);\n const ay = Math.sin(radianAngle);\n const radius = innerRadius ? this.innerRadius : this.radius;\n const x = round(this.center.x - (ax * radius), COORD_PRECISION);\n const y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n }\n\n adjacentBox(distance, width, height) {\n const sector = this.clone().expand(distance);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n const hw = width / 2;\n const hh = height / 2;\n const sa = Math.sin(rad(midAndle));\n const ca = Math.cos(rad(midAndle));\n let x = midPoint.x - hw;\n let y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n }\n\n containsPoint(p) {\n const center = this.center;\n const innerRadius = this.innerRadius;\n const radius = this.radius;\n const startAngle = this.startAngle;\n const endAngle = this.startAngle + this.angle;\n const dx = p.x - center.x;\n const dy = p.y - center.y;\n const vector = new Point(dx, dy);\n const startPoint = this.point(startAngle);\n const startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n const endPoint = this.point(endAngle);\n const endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n const dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n }\n\n getBBox() {\n const box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n const startAngle = round(this.startAngle % 360);\n const endAngle = round((startAngle + this.angle) % 360);\n const innerRadius = this.innerRadius;\n const allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n const startAngleIndex = allAngles.indexOf(startAngle);\n const endAngleIndex = allAngles.indexOf(endAngle);\n let angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (let i = 0; i < angles.length; i++) {\n let point = this.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n }\n\n expand(value) {\n this.radius += value;\n return this;\n }\n}\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nclass RootElement extends ChartElement {\n constructor(options) {\n super(options);\n\n const rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n reflow() {\n const { options, children } = this;\n let currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (let i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group();\n this.createBackground();\n }\n\n createBackground() {\n const options = this.options;\n const border = options.border || {};\n const box = this.box.clone().pad(options.margin).unpad(border.width);\n\n const background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n }\n\n getRoot() {\n return this;\n }\n\n createGradient(options) {\n const gradients = this.gradients;\n const hashCode = objectKey(options);\n const gradient = GRADIENTS[options.gradient];\n let drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n const gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n }\n\n cleanGradients() {\n const gradients = this.gradients;\n for (let hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n }\n\n size() {\n const options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n}\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n const stops = options.stops;\n const usedSpace = ((options.innerRadius / options.radius) * 100);\n const length = stops.length;\n const currentStops = [];\n\n for (let i = 0; i < length; i++) {\n let currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import Ring from './ring';\n\nclass Sector extends Ring {\n constructor(center, radius, startAngle, angle) {\n super(center, 0, radius, startAngle, angle);\n }\n\n expand(value) {\n return super.expand(value);\n }\n\n clone() {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n }\n\n setRadius(newRadius) {\n this.radius = newRadius;\n\n return this;\n }\n}\n\nexport default Sector;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nconst DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nclass ShapeBuilder extends Class {\n createRing(sector, options) {\n const startAngle = sector.startAngle + 180;\n let endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n const center = new geom.Point(sector.center.x, sector.center.y);\n const radius = Math.max(sector.radius, 0);\n const innerRadius = Math.max(sector.innerRadius, 0);\n const arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n const path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n const innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n}\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nclass ShapeElement extends BoxElement {\n\n constructor(options, pointData) {\n super(options);\n\n this.pointData = pointData;\n }\n\n getElement() {\n const { options, paddingBox: box } = this;\n const { type, rotation } = options;\n const center = box.center();\n const halfWidth = box.width() / 2;\n const halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n const style = this.visualStyle();\n let element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n const rect = box.toRect();\n if (type === ROUNDED_RECT) {\n const borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n }\n\n createElement() {\n const customVisual = this.options.visual;\n const pointData = this.pointData || {};\n let visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: () => this.getElement()\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n }\n\n visualOptions() {\n const options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n }\n\n createVisual() {\n this.visual = this.createElement();\n }\n}\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nconst ROWS_SPLIT_REGEX = /\\n/m;\n\nclass TextBox extends BoxElement {\n\n constructor(content, options, data) {\n super(options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n _initContainer() {\n const options = this.options;\n const rows = String(this.content).split(ROWS_SPLIT_REGEX);\n const floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n const textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n let text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n }\n\n reflow(targetBox) {\n const options = this.options;\n const visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n let visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n const visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n super.reflow(targetBox);\n\n if (options.rotation) {\n const margin = getSpacing(options.margin);\n let box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n }\n\n createVisual() {\n const options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n const box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n }\n\n renderVisual() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n const visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n super.renderVisual();\n }\n }\n\n visualContext(targetBox) {\n const context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: () => {\n this._boxReflow = true;\n this.reflow(targetBox);\n this._boxReflow = false;\n return this.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n }\n\n getDefaultVisual() {\n this.createVisual();\n this.renderChildren();\n const visual = this.visual;\n delete this.visual;\n return visual;\n }\n\n rotate() {\n const options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n }\n\n rotationTransform() {\n const rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n const { x: cx, y: cy } = this.normalBox.center();\n const boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n}\n\nexport default TextBox;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nconst DrawingText = draw.Text;\n\nclass Text extends ChartElement {\n\n constructor(content, options) {\n super(options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n reflow(targetBox) {\n const options = this.options;\n const size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n }\n\n createVisual() {\n const { font, color, opacity, cursor } = this.options;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n}\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nclass Title extends ChartElement {\n constructor(options) {\n super(options);\n\n this.append(\n new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }))\n );\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n this.box.snapTo(targetBox, X);\n }\n\n static buildTitle(options, parent, defaultOptions) {\n let titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n let title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n parent.append(title);\n }\n\n return title;\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n let axisMax;\n\n if (min <= 0 && max <= 0) {\n const maxValue = min === max ? 0 : max;\n\n let diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n let axisMin;\n\n if (min >= 0 && max >= 0) {\n const minValue = min === max ? 0 : min;\n\n let diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n let diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n const scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n const relativeValue = round((diff / scale), DEFAULT_PRECISION);\n let scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n const a = Math.min(r.x1, s.x1);\n const b = Math.max(r.x1, s.x1);\n const c = Math.min(r.x2, s.x2);\n const d = Math.max(r.x2, s.x2);\n const e = Math.min(r.y1, s.y1);\n const f = Math.max(r.y1, s.y1);\n const g = Math.min(r.y2, s.y2);\n const h = Math.max(r.y2, s.y2);\n const boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n const { lineStart, lineEnd, position } = options;\n\n const line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n const { tickX, tickY, position } = options;\n\n const tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","import Box from '../box';\n\nexport default function rectToBox(rect) {\n const origin = rect.origin;\n const bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","export { default as absoluteDateDiff } from './date-utils/absolute-date-diff';\nexport { default as addDuration } from './date-utils/add-duration';\nexport { default as addTicks } from './date-utils/add-ticks';\nexport { default as ceilDate } from './date-utils/ceil-date';\nexport { default as dateComparer } from './date-utils/date-comparer';\nexport { default as dateDiff } from './date-utils/date-diff';\nexport { default as dateEquals } from './date-utils/date-equals';\nexport { default as dateIndex } from './date-utils/date-index';\nexport { default as duration } from './date-utils/duration';\nexport { default as floorDate } from './date-utils/floor-date';\nexport { default as lteDateIndex } from './date-utils/lte-date-index';\nexport { default as startOfWeek } from './date-utils/start-of-week';\nexport { default as toDate } from './date-utils/to-date';\nexport { default as parseDate } from './date-utils/parse-date';\nexport { default as parseDates } from './date-utils/parse-dates';\nexport { default as toTime } from './date-utils/to-time';\nexport { default as firstDay } from './date-utils/first-day';\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n const diff = a.getTime() - b;\n const offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n const roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n const tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n let result = dateValue;\n\n if (dateValue) {\n let date = toDate(dateValue);\n const hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n const date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export const MILLISECONDS = \"milliseconds\";\nexport const SECONDS = \"seconds\";\nexport const MINUTES = \"minutes\";\nexport const HOURS = \"hours\";\nexport const DAYS = \"days\";\nexport const WEEKS = \"weeks\";\nexport const MONTHS = \"months\";\nexport const YEARS = \"years\";\n\nexport const TIME_PER_MILLISECOND = 1;\nexport const TIME_PER_SECOND = 1000;\nexport const TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport const TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport const TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport const TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport const TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport const TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport const TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n const date = toDate(value);\n const startDate = toDate(start);\n let index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n let diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import dateEquals from './date-equals';\n\nexport default function lteDateIndex(date, sortedDates) {\n let low = 0;\n let high = sortedDates.length - 1;\n let index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n const currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n let result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n const result = [];\n for (let idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay = 0) {\n let daysToSubtract = 0;\n let day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","export default function toDate(value) {\n let result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n let result = [];\n for (let idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nconst {\n append,\n bindEvents,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n} = drawing.util;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","export { default as Gauge } from './gauges/gauge';\n\nexport { default as LinearGauge } from './gauges/linear/linear-gauge';\nexport { default as LinearPointer } from './gauges/linear/linear-pointer';\nexport { default as ArrowLinearPointer } from './gauges/linear/arrow-linear-pointer';\nexport { default as BarLinearPointer } from './gauges/linear/bar-linear-pointer';\nexport { default as LinearScale } from './gauges/linear/linear-scale';\n\nexport { default as RadialGauge } from './gauges/radial/radial-gauge';\nexport { default as RadialPointer } from './gauges/radial/radial-pointer';\nexport { default as RadialScale } from './gauges/radial/radial-scale';\n\nexport { default as ArcGauge } from './gauges/arc/arc-gauge';\nexport { default as RangePointer } from './gauges/arc/range-pointer';\nexport { default as ArcScale } from './gauges/arc/arc-scale';\n\nexport { default as CircularGauge } from './gauges/circular/circular-gauge';\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nclass ArcGauge extends RadialGauge {\n\n _initTheme(theme) {\n super._initTheme(theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n const pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n }\n\n _setValueOptions(value) {\n this.options.value = value;\n }\n\n currentColor() {\n const pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n }\n\n centerLabelPosition(width, height) {\n const size = this.getSize();\n const center = this.scale.arc.center;\n\n let left = center.x - width / 2;\n let top = center.y - height / 2;\n\n if (width < size.width) {\n const right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n const bbox = this.scale.bbox;\n const yLimit = bbox.bottomRight().y;\n const bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n }\n}\n\nexport default ArcGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nclass ArcScale extends RadialScale {\n\n rangeSegments() {\n const { min, max, rangePlaceholderColor, rangeLineCap } = this.options;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n }\n\n hasRanges() {\n return true;\n }\n\n placeholderRangeAngle(angle) {\n const geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n }\n\n addRange(from, to, options) {\n const reverse = this.options.reverse;\n\n const startAngle = this.slotAngle(reverse ? to : from);\n const endAngle = this.slotAngle(reverse ? from : to);\n\n const range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n }\n}\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nconst MAX_DURATION = 800;\n\nclass RangePointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n const duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n const startColor = element.elements.options.get(\"stroke.color\");\n const color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n step(pos) {\n const { options, startColor, color } = this;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n const r = round(interpolateValue(startColor.r, color.r, pos));\n const g = round(interpolateValue(startColor.g, color.g, pos));\n const b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n }\n}\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nclass RangePointer extends Pointer {\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n }\n\n angle(value) {\n const geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n }\n\n stroke(value) {\n this.elements.stroke(value);\n }\n\n render() {\n if (this.elements) {\n return;\n }\n\n const { scale, options } = this;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n }\n\n currentColor() {\n const { min, max } = this.scale.options;\n const { colors, color, value } = this.options;\n const currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (let idx = 0; idx < colors.length; idx++) {\n const { color: rangeColor, from = min, to = max } = colors[idx];\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n }\n\n reflow() {\n this.render();\n\n this.bbox = this.elements.bbox();\n }\n}\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import ArcGauge from '../arc/arc-gauge';\n\nconst defaultStartAngle = 90;\n\nclass CircularGauge extends ArcGauge {\n _createModel() {\n const scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n super._createModel();\n }\n}\n\nexport default CircularGauge;\n","const ANGULAR_SPEED = 150;\nconst LINEAR_SPEED = 250;\nconst ARROW = \"arrow\";\nconst ARROW_POINTER = \"arrowPointer\";\nconst BAR_POINTER = \"barPointer\";\nconst DEFAULT_HEIGHT = 200;\nconst DEFAULT_LINE_WIDTH = 0.5;\nconst DEFAULT_WIDTH = 200;\nconst DEGREE = Math.PI / 180;\nconst INSIDE = \"inside\";\nconst LINEAR = \"linear\";\nconst OUTSIDE = \"outside\";\nconst RADIAL_POINTER = \"radialPointer\";\nconst RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nconst DEFAULT_MARGIN = 5;\nconst { Path, Surface } = drawing;\n\nclass Gauge extends Class {\n\n constructor(element, userOptions, theme, context = {}) {\n super();\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n destroy() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n }\n\n value(pointerValue) {\n const pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n }\n\n _draw() {\n const surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n }\n\n exportVisual() {\n return this._visuals;\n }\n\n allValues(values) {\n const pointers = this.pointers;\n const allValues = [];\n\n if (arguments.length === 0) {\n for (let i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (let i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n\n this._setValueOptions(values);\n }\n\n _setValueOptions(values) {\n const pointers = [].concat(this.options.pointer);\n const arrayValues = [].concat(values);\n\n for (let i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n }\n\n resize() {\n this.noTransitionsRedraw();\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n }\n\n redraw() {\n const size = this._surfaceSize();\n const wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n const bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n }\n\n setOptions(options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n }\n\n setDirection(rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n }\n\n setIntlService(intl) {\n this.contextService.intl = intl;\n }\n\n _initTheme(theme) {\n let currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n const options = this.options;\n const pointer = options.pointer;\n\n if (isArray(pointer)) {\n const pointers = [];\n for (let i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n }\n\n _createGaugeArea() {\n const options = this.options.gaugeArea;\n const size = this.surface.size();\n const border = options.border || {};\n let areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n const gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n }\n\n _initSurface() {\n const { options, surface } = this;\n const element = this._surfaceElement();\n const size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceSize() {\n const options = this.options;\n const size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n }\n\n _surfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n }\n\n getSize() {\n return this._getSize();\n }\n\n _getSize() {\n const element = this.element;\n const defaultSize = this._defaultSize();\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n }\n\n _defaultSize() {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n }\n\n _toggleTransitions(value) {\n this.options.transitions = value;\n for (let i = 0; i < this.pointers.length; i++) {\n this.pointers[i].options.animation.transitions = value;\n }\n }\n}\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass ArrowLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const { margin, from, to, vertical } = options;\n const axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n const fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n const toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n }\n\n step(pos) {\n const translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n const translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n }\n}\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nconst Point = geo.Point;\nconst Path = drawing.Path;\n\nclass ArrowLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n pointerShape() {\n const { scale, options: { size } } = this;\n const halfSize = size / 2;\n const sign = (scale.options.mirror ? -1 : 1);\n let shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n }\n\n repaint() {\n const { scale, options } = this;\n const animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const { scale, options } = this;\n const elementOptions = this.getElementOptions();\n const shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n const elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n const slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n }\n}\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass BarLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const axis = this.axis = options.vertical ? Y : X;\n const to = this.to = options.newPoints[0][axis];\n const from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n }\n\n step(pos) {\n const value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n }\n\n _set(value) {\n const setter = \"set\" + this.axis.toUpperCase();\n const points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n }\n}\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nconst { Group, Path } = drawing;\n\nclass BarLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n pointerShape(value) {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const dir = mirror === vertical ? -1 : 1;\n const size = options.size * dir;\n const minSlot = scale.getSlot(scale.options.min);\n const slot = scale.getSlot(value);\n const axis = vertical ? Y : X;\n const sizeAxis = vertical ? X : Y;\n const margin = this._margin() * dir;\n\n const p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n const p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n const p3 = p2.clone();\n const p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n }\n\n repaint() {\n const { scale, options } = this;\n const shape = this.pointerShape(options.value);\n const pointerPath = this.pointerPath;\n const oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n const animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const group = new Group();\n const elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n const pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n }\n\n renderTrack() {\n const trackOptions = this.options.track;\n const border = trackOptions.border || {};\n const trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n }\n}\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nconst DEFAULT_MIN_WIDTH = 60;\nconst DEFAULT_MIN_HEIGHT = 60;\n\nconst Group = drawing.Group;\n\nclass LinearGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n const bboxX = bbox.origin.x;\n const bboxY = bbox.origin.y;\n\n const box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n }\n\n _buildVisual() {\n const visuals = new Group();\n const scaleElements = this.scale.render();\n const pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n let pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (let i = 0; i < pointers.length; i++) {\n const currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n const pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this.pointers.push(new pointerType(scale, currentOptions));\n }\n }\n\n _defaultSize() {\n const vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n }\n\n _getBox(box) {\n const { scale, pointers } = this;\n const boxCenter = box.center();\n let plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (let i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n let size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n }\n\n _alignElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box;\n const box = pointers[0].box.clone().wrap(scale.box);\n const plotAreaBox = this.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n let diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n\n _shrinkScaleWidth(bbox) {\n const { scale } = this;\n if (!scale.options.vertical) {\n const overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n }\n\n _shrinkElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box.clone();\n const pos = scale.options.vertical ? \"y\" : \"x\";\n const pointerBox = pointers[0].box;\n\n for (let i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n}\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nclass LinearPointer extends Pointer {\n constructor(scale, options) {\n super(scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n reflow() {\n const { options, scale } = this;\n const { mirror, vertical } = scale.options;\n const scaleLine = scale.lineBox();\n const trackSize = options.track.size || options.size;\n const pointerHalfSize = options.size / 2;\n const margin = getSpacing(options.margin);\n let space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n let pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n }\n\n getElementOptions() {\n const options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n }\n\n _margin() {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const margin = getSpacing(options.margin);\n\n const space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n }\n}\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nconst { Path, Group } = drawing;\nconst Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n const { position, tickX, tickY } = tickRenderOptions;\n let start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n const tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n const count = tickPositions.length;\n\n if (tickOptions.visible) {\n const { mirror, lineBox } = tickRenderOptions;\n for (let i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nclass LinearScale extends NumericAxis {\n constructor(options, service) {\n let scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n super(0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n initUserOptions(options) {\n let scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render() {\n const elements = this.elements = new Group();\n const labels = this.renderLabels();\n const scaleLine = this.renderLine();\n const scaleTicks = this.renderTicks();\n const ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n }\n\n renderRanges() {\n const options = this.options;\n const { min, max, vertical, labels: { mirror } } = options;\n const ranges = options.ranges || [];\n const elements = new Group();\n const count = ranges.length;\n const rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const slot = this.getSlot(range.from, range.to);\n const slotX = vertical ? this.lineBox() : slot;\n const slotY = vertical ? slot : this.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n }\n\n renderLabels() {\n const { labels, options } = this;\n const elements = new Group();\n\n for (let i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n }\n\n renderLine() {\n const line = this.options.line;\n const lineBox = this.lineBox();\n const elements = new Group();\n\n if (line.width > 0 && line.visible) {\n const linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n }\n\n renderTicks() {\n const ticks = new Group();\n const options = this.options;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n }\n}\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nclass Pointer extends Class {\n constructor(scale, userOptions) {\n super();\n\n const { min, max } = scale.options;\n const options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n value(newValue) {\n const options = this.options;\n const value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n const { min, max } = this.scale.options;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n }\n}\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nconst Group = drawing.Group;\n\nclass RadialGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.scale.arc);\n this._initialPlotArea = geo.Rect.union(this._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n }\n\n _buildVisual(gaugeArea, pointers, scale) {\n const visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n this._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n }\n\n fitScale(bbox) {\n const arc = this.scale.arc;\n const plotAreaBox = this._initialPlotArea;\n const step = Math.abs(this.getDiff(plotAreaBox, bbox));\n let min = round(step, COORD_PRECISION);\n let max = round(-step, COORD_PRECISION);\n let minDiff, midDiff, maxDiff, mid, oldDiff;\n let staleFlag = 0;\n let i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n }\n\n getPlotBox(step, bbox, arc) {\n const scale = this.scale;\n const pointers = this.pointers;\n const radius = arc.getRadiusX();\n const scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this.plotBbox = geo.Rect.union(this.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n }\n\n getDiff(plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n }\n\n alignScale(bbox) {\n const plotBoxCenter = this.plotBbox.center();\n const boxCenter = bbox.center();\n const paddingX = plotBoxCenter.x - boxCenter.x;\n const paddingY = plotBoxCenter.y - boxCenter.y;\n const { scale, pointers } = this;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n }\n\n _createModel() {\n const options = this.options;\n const pointers = options.pointer;\n const scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n const pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (let i = 0; i < pointersArr.length; i++) {\n const current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers.push(current);\n }\n }\n}\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nclass RadialPointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n step(pos) {\n const options = this.options;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n }\n}\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nconst CAP_SIZE = 0.05;\nconst { Circle, Group, Path } = drawing;\n\nclass RadialPointer extends Pointer {\n\n setAngle(angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n }\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n }\n\n render() {\n const { scale, options } = this;\n const elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n }\n\n reflow(arc) {\n const center = this.center = arc.center;\n const length = limitValue(this.options.length || 1, 0.1, 1.5);\n const radius = this.radius = arc.getRadiusX() * length;\n const capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n }\n\n _renderNeedle() {\n const minorTickSize = this.scale.options.minorTicks.size;\n const center = this.center;\n const needleColor = this.options.color;\n\n const needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n }\n\n _renderCap() {\n const options = this.options;\n const capColor = options.cap.color || options.color;\n const circle = new geo.Circle(this.center, this.capSize);\n\n const cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n }\n}\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nconst GEO_ARC_ADJUST_ANGLE = 180;\n\nconst { Arc, Path, Group } = drawing;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n const ticks = new Group();\n const center = arc.center;\n const radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (let i = 0; i < tickAngles.length; i++) {\n const tickStart = arc.pointAt(tickAngles[i]);\n const tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nclass RadialScale extends NumericAxis {\n constructor(options, service) {\n super(0, 1, options, service);\n }\n\n initUserOptions(options) {\n const scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render(center, radius) {\n const arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n }\n\n reflow(bbox) {\n const center = bbox.center();\n const radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n }\n\n slotAngle(value) {\n const { min, max, reverse, startAngle, endAngle } = this.options;\n const angle = endAngle - startAngle;\n let result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n }\n\n hasRanges() {\n const ranges = this.options.ranges;\n\n return ranges && ranges.length;\n }\n\n ticksSize() {\n const { majorTicks, minorTicks } = this.options;\n let size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n }\n\n labelsCount() {\n let count = super.labelsCount();\n const options = this.options;\n const angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n }\n\n renderLabels() {\n const options = this.options;\n const arc = this.arc.clone();\n let radius = arc.getRadiusX();\n const tickAngles = this.tickAngles(arc, options.majorUnit);\n const rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n const labelsGroup = new Group();\n\n let rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n const labelsOptions = options.labels;\n const isInside = labelsOptions.position === INSIDE;\n const hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n const labels = this.labels;\n const count = labels.length;\n const padding = getSpacing(labelsOptions.padding);\n const paddingWidth = (padding.left + padding.right) / 2;\n const paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (let i = 0; i < count; i++) {\n const label = labels[i];\n const halfWidth = label.box.width() / 2;\n const halfHeight = label.box.height() / 2;\n const angle = tickAngles[i];\n const labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n const lp = arc.pointAt(angle);\n const cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n const cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n const labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n let labelElement;\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this.labelElements.children[i];\n const prevLabelPos = labelElement.bbox().origin;\n\n const labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this.bbox = geo.Rect.union(this.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n }\n\n repositionRanges() {\n const ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n const { rangeDistance, rangeSize } = this.options;\n let rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n const newRadius = rangeRadius + (rangeSize / 2);\n\n for (let i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n }\n\n renderRanges() {\n const segments = this.rangeSegments();\n const segmentsCount = segments.length;\n const result = new Group();\n\n if (segmentsCount) {\n const { rangeSize, reverse, rangeDistance } = this.options;\n const rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (let i = 0; i < segmentsCount; i++) {\n const segment = segments[i];\n const from = this.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n const to = this.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n }\n\n createRange(startAngle, endAngle, rangeRadius, options) {\n const rangeSize = this.options.rangeSize;\n const rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n }\n\n rangeSegments() {\n const options = this.options;\n const ranges = options.ranges || [];\n const count = ranges.length;\n const segments = [];\n\n if (count) {\n const { min, max, rangePlaceholderColor: defaultColor } = options;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const segmentsCount = segments.length;\n\n for (let j = 0; j < segmentsCount; j++) {\n const segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n }\n\n getRangeRadius() {\n const { arc, options } = this;\n const { rangeSize, rangeDistance, majorTicks: { size: majorTickSize } } = options;\n let radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n }\n\n renderArc(center, radius) {\n const options = this.options;\n\n const arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n }\n\n renderTicks() {\n const { arc, options } = this;\n const tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n const allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n const majorTickSize = options.majorTicks.size;\n const minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n const radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n }\n\n normalizeTickAngles(angles) {\n const options = this.options;\n const skip = options.majorUnit / options.minorUnit;\n\n for (let i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n }\n\n tickAngles(ring, stepValue) {\n const options = this.options;\n const reverse = options.reverse;\n const range = options.max - options.min;\n const angle = ring.endAngle - ring.startAngle;\n let tickCount = range / stepValue;\n let pos = ring.startAngle;\n let step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n const positions = [];\n for (let i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n }\n\n radius(value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n }\n\n repositionTicks(ticks, tickAngles, minor) {\n const diff = minor ? (this._tickDifference || 0) : 0;\n let tickArc = this.arc;\n const radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (let i = 0; i < ticks.length; i++) {\n const newPoint = tickArc.pointAt(tickAngles[i]);\n const segments = ticks[i].segments;\n const xDiff = newPoint.x - segments[0].anchor().x;\n const yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n }\n}\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","export { default as buildLabelElement } from './utils/build-label-element';\nexport { default as getRange } from './utils/get-range';\nexport { default as pad } from './utils/pad';\nexport { default as unpad } from './utils/unpad';","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nconst { Group, Path, Text } = drawing;\n\nexport default function buildLabelElement(label, options) {\n const labelBox = label.box;\n const textBox = label.children[0].box;\n const border = options.border || {};\n const background = options.background || \"\";\n\n const wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n const text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n const styleGeometry = pad(text.bbox().clone(), options.padding);\n\n const styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n const elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n const from = defined(range.from) ? range.from : MIN_VALUE;\n const to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n const origin = bbox.getOrigin();\n const size = bbox.getSize();\n const spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n const spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","export * from './core';\nexport * from './chart';\nexport * from './services';\nexport * from './sparkline';\nexport * from './stock';\nexport * from './gauges';\nexport * from './barcode';\nexport * from './qrcode';\nexport * from './map';\nexport * from './common';\n\nexport { baseTheme as chartBaseTheme } from './chart/base-theme';\n\n","export { default as Map } from './map/map';\nexport { Location } from './map/location';\nexport { Extent } from './map/extent';\n","import {\n addClass,\n defined,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nimport { Observable } from './scroller/observable';\n\nexport class Attribution extends Observable {\n constructor(element, options) {\n super();\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n filter(extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n }\n\n add(item) {\n let newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n }\n\n remove(text) {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n }\n\n clear() {\n this.items = [];\n removeChildren(this.element);\n }\n\n _render() {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n let text = this._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n const html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n }\n\n hideElement() {\n this.element.style.display = \"none\";\n }\n\n showElement() {\n this.element.style.display = \"\";\n }\n\n _itemText(item) {\n let text = '';\n let inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n let inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n }\n\n _inZoomLevel(min, max) {\n let result = true;\n let newMin = valueOrDefault(min, -Number.MAX_VALUE);\n let newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n }\n\n _inArea(area) {\n let result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n }\n}\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nlet math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nlet PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nlet WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport class Mercator extends Class {\n constructor(options) {\n super();\n this.initProperties();\n this._initOptions(options);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n initProperties() {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n }\n\n forward(loc, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n }\n _projectLat(lat) {\n let datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n }\n inverse(point, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n }\n _inverseY(y) {\n let proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n let con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n }\n}\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport class SphericalMercator extends Mercator {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n }\n\n _projectLat(lat) {\n let r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n }\n\n _inverseY(y) {\n let r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n }\n}\n\nexport class Equirectangular extends Class {\n forward(loc) {\n return new Point(loc.lng, loc.lat);\n }\n inverse(point) {\n return new Location(point.y, point.x);\n }\n}\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport class EPSG3857 extends Class {\n constructor() {\n super();\n let crs = this,\n proj = crs._proj = new SphericalMercator();\n let c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n // Location <-> Point (screen coordinates for a given scale)\n toPoint(loc, scale, clamp) {\n let point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n }\n toLocation(point, scale, clamp) {\n let newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n }\n}\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport class EPSG3395 extends Class {\n constructor() {\n super();\n this._proj = new Mercator();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport class EPSG4326 extends Class {\n constructor() {\n super();\n this._proj = new Equirectangular();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n","// Coordinate reference system\n// World Geodetic System of 1984\nconst WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport const datums = {\n WGS84\n};\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nlet math = Math,\n max = math.max,\n min = math.min;\n\nexport class Extent extends Class {\n constructor(initialNw, initialSe) {\n super();\n let nw = Location.create(initialNw);\n let se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n contains(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n }\n\n center() {\n let nw = this.nw;\n let se = this.se;\n let lng = nw.lng + (se.lng - nw.lng) / 2;\n let lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n }\n\n containsAny(locs) {\n let result = false;\n\n for (let i = 0; i < locs.length; i++) {\n result = result || this.contains(locs[i]);\n }\n\n return result;\n }\n\n include(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n }\n\n includeAll(locs) {\n for (let i = 0; i < locs.length; i++) {\n this.include(locs[i]);\n }\n }\n\n edges() {\n let nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n }\n\n toArray() {\n let nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n }\n\n overlaps(extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n }\n\n static create(a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n }\n\n static get World() {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport class BubbleLayer extends ShapeLayer {\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n let options = this.options;\n let getValue = getter(options.valueField);\n\n let newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n let scaleType = this._scaleType();\n let scale;\n let getLocation = getter(this.options.locationField);\n\n for (let i = 0; i < newData.length; i++) {\n let dataItem = newData[i];\n let location = getLocation(dataItem);\n let value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n let center = this.map.locationToView(location);\n let size = scale.map(value);\n let symbol = this._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this._drawSymbol(symbol);\n }\n }\n }\n\n _scaleType() {\n let scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n }\n\n _createSymbol(args) {\n let symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n }\n\n _drawSymbol(shape) {\n let args = {\n layer: this,\n shape: shape\n };\n\n let cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n }\n}\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nclass SqrtScale extends Class {\n constructor(domain, range) {\n super();\n\n this._domain = domain;\n this._range = range;\n\n let domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n let outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n map(value) {\n let rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n }\n}\n\nlet Scales = {\n sqrt: SqrtScale\n};\n\nlet Symbols = {\n circle: function(args) {\n let geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n let path = new d.Path(args.style);\n let halfSize = args.size / 2;\n let center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n deepExtend,\n defined\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nimport {\n getSupportedFeatures\n} from '../utils';\n\nexport class Layer extends Class {\n constructor(map, options) {\n super();\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n let element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n destroy() {\n this._deactivate();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n show() {\n this.reset();\n this._activate();\n this._applyExtent(true);\n }\n\n hide() {\n this._deactivate();\n this._setVisibility(false);\n }\n\n reset() {\n this._beforeReset();\n this._reset();\n }\n\n _reset() {\n this._applyExtent();\n }\n\n _beforeReset() {\n\n }\n\n _resize() {\n\n }\n\n _panEnd() {\n this._applyExtent();\n }\n\n _applyExtent() {\n let options = this.options;\n let zoom = this.map.zoom();\n let matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n let matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n let extent = Extent.create(options.extent);\n let inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n }\n\n _setVisibility(visible) {\n this.element.style.display = visible ? '' : 'none';\n }\n\n _activate() {\n let map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n }\n\n _deactivate() {\n let map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n }\n\n _updateAttribution() {\n const attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _hasData() {\n return this._data && this._data.length > 0;\n }\n}\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\n\nimport {\n proxy,\n on,\n off,\n toHyphens,\n toPixels\n} from '../utils';\n\nconst CLICK = \"click\";\nconst MOUSE_ENTER = \"mouseenter\";\nconst MOUSE_LEAVE = \"mouseleave\";\n\nconst extend = Object.assign;\nconst MARKER_CLASS = \".k-marker\";\n\nexport class MarkerLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n destroy() {\n super.destroy();\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n }\n\n add(args) {\n if (isArray(args)) {\n for (let i = 0; i < args.length; i++) {\n this._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n }\n\n remove(marker) {\n marker.destroy();\n let index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n }\n\n clear() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].destroy();\n }\n\n this.items = [];\n }\n\n update(marker) {\n let location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n let args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n }\n\n _reset() {\n super._reset();\n\n let items = this.items;\n\n for (let i = 0; i < items.length; i++) {\n this.update(items[i]);\n }\n }\n\n bind(options, dataItem) {\n let marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n let args = {\n marker: marker,\n layer: this\n };\n\n let cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n }\n\n _addOne(arg) {\n let marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.clear();\n\n let getLocation = getter(this.options.locationField);\n let getTitle = getter(this.options.titleField);\n\n for (let i = 0; i < data.length; i++) {\n let dataItem = data[i];\n\n this.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n }\n\n _markerClick(e) {\n const layers = this.map.layers || [];\n const marker = e.target._kendoNode;\n\n let args = {\n // marker: $(e.target).data('kendoMarker'),\n // marker: e.target.getAttribute(\"data-kendoMarker\"),\n layer: this,\n layerIndex: layers.indexOf(this),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n }\n\n _markerMouseEnter(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n }\n\n _markerMouseLeave(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n }\n\n _createMarkerEventArgs(e) {\n const marker = e.marker;\n\n let args = extend({}, {\n layer: this,\n layerIndex: this.map.layers.indexOf(this),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n }\n}\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title'\n});\n\nexport class Marker extends Class {\n constructor(options) {\n super();\n this.options = options || {};\n }\n\n destroy() {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n }\n\n addTo(parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n }\n\n location(value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n }\n\n showAt(point) {\n this.render();\n\n this.element.style.left = toPixels(Math.round(point.x));\n this.element.style.top = toPixels(Math.round(point.y));\n\n if (this.tooltip && this.tooltip.popup) {\n this.tooltip.popup._position();\n }\n }\n\n hide() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n if (this.tooltip) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n }\n\n bindEvents() {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n }\n\n unbindEvents() {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n }\n\n render() {\n if (!this.element) {\n let options = this.options;\n let layer = this.layer;\n\n const element = document.createElement('span');\n addClass(element, 'k-marker k-icon k-i-marker-' + toHyphens(options.shape || 'pin'));\n\n element.setAttribute(\"title\", options.title);\n\n const attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttributett(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n\n this.renderTooltip();\n }\n }\n\n _mouseEnter(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n }\n\n _mouseLeave(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n }\n\n _createEventArgs(e) {\n let args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n }\n\n renderTooltip() {\n }\n\n static create(arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nconst Group = d.Group;\n\nexport class ShapeLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseenter = this._handler('shapeMouseEnter');\n this.surface.bind('mouseenter', this._mouseenter);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n }\n\n destroy() {\n super.destroy();\n\n this.surface.destroy();\n }\n\n _reset() {\n super._reset();\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n }\n\n _initRoot() {\n this._root = new Group();\n this.surface.draw(this._root);\n }\n\n _beforeReset() {\n this.surface.clear();\n this._initRoot();\n }\n\n _resize() {\n this.surface.size(this.map.size());\n }\n\n _readData() {\n const data = super._readData();\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n }\n\n _load(data) {\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n let container = new Group();\n\n for (let i = 0; i < data.length; i++) {\n let shape = this._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n }\n\n shapeCreated(shape) {\n let cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n let args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n }\n\n featureCreated(e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n }\n\n _createMarker(shape) {\n let marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n }\n\n _clearMarkers() {\n for (let i = 0; i < this._markers.length; i++) {\n this.map.markers.remove(this._markers[i]);\n }\n\n this._markers = [];\n }\n\n _pan() {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n }\n\n _translateSurface() {\n let map = this.map;\n let nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n }\n\n _handler(event) {\n let layer = this;\n\n return function(e) {\n if (e.element) {\n let args = {\n layer: layer,\n layerIndex: (layer.map.layers || []).indexOf(layer),\n shape: e.element,\n shapeIndex: (layer._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n\n layer.map.trigger(event, args);\n }\n };\n }\n\n _activate() {\n super._activate();\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n }\n\n _deactivate() {\n super._deactivate();\n this.map.unbind('pan', this._panHandler);\n }\n}\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nclass GeoJsonLoader extends Class {\n constructor(locator, defaultStyle, observer) {\n super();\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n parse(item) {\n let root = new Group();\n let unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n }\n\n _shapeCreated(shape) {\n let cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n }\n\n _featureCreated(group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n }\n\n /* eslint-disable indent */\n _loadGeometryTo(container, geometry, dataItem) {\n let coords = geometry.coordinates;\n let i;\n let path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this._loadPolygon(container, [coords[i]], dataItem);\n this._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n }\n /* eslint-disable indent */\n\n _setLineFill(path) {\n let segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n }\n\n _loadShape(container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n }\n\n _loadPolygon(container, rings, dataItem) {\n let shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n return this._loadShape(container, shape);\n }\n\n _buildPolygon(rings) {\n let type = rings.length > 1 ? d.MultiPath : d.Path;\n let path = new type(this.style);\n\n for (let i = 0; i < rings.length; i++) {\n for (let j = 0; j < rings[i].length; j++) {\n let point = this.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n }\n\n _loadPoint(container, coords, dataItem) {\n let location = Location.fromLngLat(coords);\n let point = this.locator.locationToView(location);\n let circle = new g.Circle(point, 10);\n let shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n }\n}\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nlet math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n let newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport class TileLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n let viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n destroy() {\n super.destroy();\n this._view.destroy();\n this._view = null;\n }\n\n _beforeReset() {\n let map = this.map;\n let origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n }\n\n _reset() {\n super._reset();\n this._updateView();\n this._view.reset();\n }\n\n _viewType() {\n return TileView;\n }\n\n _activate() {\n super._activate();\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n }\n\n _deactivate() {\n super._deactivate();\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n }\n\n _updateView() {\n let view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n }\n\n _resize() {\n this._render();\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._render();\n }\n\n _render() {\n this._updateView();\n this._view.render();\n }\n}\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport class TileView extends Class {\n constructor(element, options) {\n super();\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n center(center) {\n this._center = center;\n }\n\n extent(extent) {\n this._extent = extent;\n }\n\n viewOrigin(origin) {\n this._viewOrigin = origin;\n }\n\n zoom(zoom) {\n this._zoom = zoom;\n }\n\n pointToTileIndex(point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n }\n\n tileCount() {\n let size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n }\n\n size() {\n let nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n }\n\n indexToPoint(index) {\n let x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n }\n\n subdomainText() {\n let subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n }\n\n destroy() {\n removeChildren(this.element);\n this.pool.empty();\n }\n\n reset() {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n }\n\n render() {\n let size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n }\n\n createTile(currentIndex) {\n let options = this.tileOptions(currentIndex);\n let tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n }\n\n tileOptions(currentIndex) {\n let index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n }\n\n wrapIndex(index) {\n let boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n }\n\n wrapValue(value, boundary) {\n let remainder = math.abs(value) % boundary;\n let wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n }\n}\n\nexport class ImageTile extends Class {\n constructor(id, options) {\n super();\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n destroy() {\n const element = this.element;\n const parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n createElement() {\n let el = document.createElement(\"img\");\n const size = this.options.size + \"px\";\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('\\'\\'')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n }\n\n show() {\n let element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n let url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n }\n\n hide() {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n }\n\n url() {\n let urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n }\n\n errorUrl() {\n let urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n }\n\n urlOptions() {\n let options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n }\n}\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport class TilePool extends Class {\n constructor() {\n super();\n this._items = [];\n }\n\n get(center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n }\n\n empty() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n }\n\n reset() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].hide();\n }\n }\n\n _create(options) {\n let items = this._items;\n let tile;\n let id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n }\n\n _remove(center) {\n let items = this._items;\n let maxDist = -1;\n let index = -1;\n\n for (let i = 0; i < items.length; i++) {\n let dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n }\n}\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nlet math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport class Location extends Class {\n constructor(lat, lng) {\n super();\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n initProperties() {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n }\n\n toArray() {\n return [\n this.lat,\n this.lng\n ];\n }\n\n equals(loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n }\n\n clone() {\n return new Location(this.lat, this.lng);\n }\n\n round(precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n }\n\n wrap() {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n }\n\n distanceTo(dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n }\n\n destination(distance, initialBearing, initialDatum) {\n let bearing = rad(initialBearing);\n let datum = initialDatum || datums.WGS84;\n let fromLat = rad(this.lat);\n let fromLng = rad(this.lng);\n let dToR = distance / datum.a;\n let lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n let lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n }\n\n greatCircleTo(initialDest, initialDatum) {\n let dest = Location.create(dest);\n let datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n let a = datum.a;\n let b = datum.b;\n let f = datum.f;\n let L = rad(dest.lng - this.lng);\n let U1 = atan((1 - f) * tan(rad(this.lat)));\n let sinU1 = sin(U1);\n let cosU1 = cos(U1);\n let U2 = atan((1 - f) * tan(rad(dest.lat)));\n let sinU2 = sin(U2);\n let cosU2 = cos(U2);\n let lambda = L;\n let prevLambda;\n let i = this.DISTANCE_ITERATIONS;\n let converged = false;\n let sinLambda;\n let cosLambda;\n let sino;\n let cosA2;\n let coso;\n let cos2om;\n let sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n let sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n let C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this.DISTANCE_CONVERGENCE;\n }\n\n let u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n let A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n let B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n let deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n let azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n let azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n }\n\n // IE < 9 doesn't allow to override toString on definition\n toString() {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n }\n\n static fromLngLat(lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n }\n\n static fromLatLng(lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n }\n\n static create(a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n }\n}\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n setDefaultEvents,\n toHyphens,\n proxy,\n now,\n on,\n off,\n getSupportedFeatures,\n convertToHtml\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport MapService from './../services/map-service';\n\nlet math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'DOMMouseScroll mousewheel',\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nconst layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer,\n [MARKER]: MarkerLayer\n};\n\nfunction renderPos(pos) {\n let result = [];\n\n if (pos) {\n let parts = toHyphens(pos).split(\"-\");\n\n for (let i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n}\n\nclass Map extends Observable {\n constructor(element, options = {}, themeOptions = {}, context = {}) {\n super();\n\n\n this._init(element, options, themeOptions, context);\n }\n\n destroy() {\n this.scroller.destroy();\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(markerLayer => {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (let i = 0; i < this.layers.length; i++) {\n this.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n super.destroy();\n }\n\n _init(element, options = {}, themeOptions = {}, context = {}) {\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n this._mousewheelHandler = this._mousewheel.bind(this);\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _initElement(element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n const div = convertToHtml(\"
    \");\n this.element.appendChild(div);\n }\n\n initServices(context = {}) {\n this.widgetService = new MapService(this, context);\n }\n\n initObserver(context = {}) {\n this.observers = [];\n this.addObserver(context.observer);\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n super.trigger(name, args);\n }\n\n return isDefaultPrevented;\n }\n\n _notifyObserver(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n zoom(level) {\n let options = this.options;\n let result;\n\n if (defined(level)) {\n const zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n }\n\n center(center) {\n let result;\n\n if (center) {\n this.options.center = Location.create(center).toArray();\n this._reset();\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n }\n\n extent(extent) {\n let result;\n\n if (extent) {\n this._setExtent(extent);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n }\n\n setOptions(options = {}) {\n const element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n }\n\n locationToLayer(location, zoom) {\n let clamp = !this.options.wraparound;\n const locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n }\n\n layerToLocation(point, zoom) {\n let clamp = !this.options.wraparound;\n const pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n }\n\n locationToView(location) {\n const locationObject = Location.create(location);\n let origin = this.locationToLayer(this._viewOrigin);\n let point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n }\n\n viewToLocation(point, zoom) {\n const origin = this.locationToLayer(this._getOrigin(), zoom);\n const pointObject = Point.create(point);\n const pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n }\n\n eventOffset(e) {\n let x;\n let y;\n let offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n let event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n const point = new g.Point(x, y);\n\n return point;\n }\n\n eventToView(e) {\n let cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n }\n\n eventToLayer(e) {\n return this.locationToLayer(this.eventToLocation(e));\n }\n\n eventToLocation(e) {\n let cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n }\n\n viewSize() {\n let element = this.element;\n let scale = this._layerSize();\n let width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n }\n\n exportVisual() {\n this._reset();\n return false;\n }\n\n _setOrigin(origin, zoom) {\n let size = this.viewSize(),\n topLeft;\n\n const originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n\n return this;\n }\n\n _getOrigin(invalidate) {\n let size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n }\n\n _setExtent(newExtent) {\n let raw = Extent.create(newExtent);\n let se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n const extent = new Extent(raw.nw, se);\n this.center(extent.center());\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n let zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n let topLeft = this.locationToLayer(extent.nw, zoom);\n let bottomRight = this.locationToLayer(extent.se, zoom);\n let layerWidth = math.abs(bottomRight.x - topLeft.x);\n let layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n }\n\n _getExtent() {\n let nw = this._getOrigin();\n let bottomRight = this.locationToLayer(nw);\n let size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n let se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n }\n\n _zoomAround(pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n }\n\n _initControls() {\n let controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n }\n\n _createControlElement(options, defaultPosition) {\n let pos = options.position || defaultPosition;\n let posSelector = '.' + renderPos(pos).replace(' ', '.');\n let wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n let div = document.createElement(\"div\");\n addClass(div, 'k-map-controls ' + renderPos(pos));\n wrap = div;\n this.element.appendChild(wrap);\n }\n\n let div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n }\n\n _createAttribution(options) {\n let element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n }\n\n _createNavigator(options) {\n let element = this._createControlElement(options, 'topLeft');\n let navigator = this.navigator = new Navigator(element, options);\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n }\n\n _navigatorPan(e) {\n let scroller = this.scroller;\n let x = scroller.scrollLeft + e.x;\n let y = scroller.scrollTop - e.y;\n let bounds = this._virtualSize;\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n }\n\n _navigatorCenter() {\n this.center(this.options.center);\n }\n\n _createZoomControl(options) {\n let element = this._createControlElement(options, 'topLeft');\n let zoomControl = this.zoomControl = new ZoomControl(element, options);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n }\n\n _zoomControlChange(e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n\n _initScroller() {\n let friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n let zoomable = this.options.zoomable !== false;\n let scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n }\n\n _initLayers() {\n let defs = this.options.layers,\n layers = this.layers = [];\n\n for (let i = 0; i < defs.length; i++) {\n let options = defs[i];\n\n const layer = this._createLayer(options);\n layers.push(layer);\n }\n }\n\n _createLayer(options) {\n let type = options.type || 'shape';\n let layerDefaults = this.options.layerDefaults[type];\n let layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options) :\n deepExtend({}, layerDefaults, options);\n\n let layerConstructor = layersMap[type];\n let layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n }\n\n /* eslint-disable arrow-body-style */\n _initMarkers() {\n const markerLayers = (this.options.layers || []).filter(x => {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, this.options.markerDefaults);\n this.markers.add(this.options.markers);\n }\n /* eslint-enable arrow-body-style */\n\n _scroll(e) {\n let origin = this.locationToLayer(this._viewOrigin).round();\n let movable = e.sender.movable;\n let offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _scrollEnd(e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _panComplete() {\n return now() - (this._panEndTimestamp || 0) > 50;\n }\n\n _scaleStart(e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n let touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n }\n\n _scale(e) {\n let scale = this.scroller.movable.scale;\n let zoom = this._scaleToZoom(scale);\n let gestureCenter = new g.Point(e.center.x, e.center.y);\n let centerLocation = this.viewToLocation(gestureCenter, zoom);\n let centerPoint = this.locationToLayer(centerLocation, zoom);\n let originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n\n _scaleToZoom(scaleDelta) {\n let scale = this._layerSize() * scaleDelta;\n let tiles = scale / this.options.minSize;\n let zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n }\n\n _reset() {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n }\n\n _resetScroller() {\n let scroller = this.scroller;\n let x = scroller.dimensions.x;\n let y = scroller.dimensions.y;\n let scale = this._layerSize();\n let nw = this.extent().nw;\n let topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n let zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n let xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n let yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n let viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n }\n\n // kept for API compatibility, not used\n _renderLayers() {\n }\n\n _layerSize(zoom) {\n const newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n }\n\n _tap(e) {\n if (!this._panComplete()) {\n return;\n }\n\n let cursor = this.eventOffset(e);\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n }\n\n _doubleTap(e) {\n let options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n\n _mousewheel(e) {\n e.preventDefault();\n let delta = mousewheelDelta(e) > 0 ? -1 : 1;\n let options = this.options;\n let fromZoom = this.zoom();\n let toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n}\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","import {\n deepExtend,\n addClass,\n keys,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n proxy,\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nconst PAN = \"pan\";\n\nconst directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-arrow-n\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-arrow-s\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-arrow-e\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-arrow-w\"\n }\n};\n\nfunction createButton(direction) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nexport class Navigator extends Observable {\n constructor(element, options) {\n super();\n\n this.element = element;\n this._initOptions(options);\n\n const navigateUpButton = createButton(\"up\");\n const navigateRightlButton = createButton(\"right\");\n const navigateDownButton = createButton(\"down\");\n const navigateLeftButton = createButton(\"left\");\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n this.dispose();\n }\n\n // originates from the kendo.jquery version\n dispose() {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _pan(x, y) {\n let panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n }\n\n _click(e) {\n let x = 0;\n let y = 0;\n let button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n }\n\n /* eslint-disable indent */\n _keydown(e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n /* eslint-enable indent */\n}\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","import {\n Class,\n elementOffset\n} from '../../common';\n\nimport {\n Observable\n} from './observable';\n\nimport {\n getEventMap,\n proxy,\n getSupportedFeatures\n} from '../utils';\n\nconst extend = Object.assign;\n\nconst CHANGE = 'change';\n\nexport class TapCapture extends Observable {\n constructor(element, options) {\n super();\n let that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n const eventMap = getEventMap(navigator.userAgent);\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n captureNext() {\n this.capture = true;\n }\n\n cancelCapture() {\n this.capture = false;\n }\n\n _press(e) {\n let that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n }\n\n _release(e) {\n let that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n}\n\nexport class PaneDimension extends Observable {\n constructor(options) {\n super();\n let that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n makeVirtual() {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n }\n\n virtualSize(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n }\n\n outOfBounds(offset) {\n return offset > this.max || offset < this.min;\n }\n\n forceEnabled() {\n this.forcedEnabled = true;\n }\n\n getSize() {\n return this.container[this.measure];\n }\n\n getTotal() {\n return this.element[this.scrollSize];\n }\n\n rescale(scale) {\n this.scale = scale;\n }\n\n update(silent) {\n let that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n}\n\nexport class PaneDimensions extends Observable {\n constructor(options) {\n super();\n let that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n rescale(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n }\n\n centerCoordinates() {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n }\n\n refresh() {\n let that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n}\n\nexport class PaneAxis extends Observable {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n outOfBounds() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n }\n\n dragMove(delta) {\n let that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n let dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n }\n}\n\nexport class Pane extends Class {\n constructor(options) {\n super();\n\n let that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press(e) {\n const closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange(e) {\n let previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n let offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end(e) {\n e.preventDefault();\n }\n });\n }\n}\n\nlet translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport class Movable extends Observable {\n constructor(element) {\n super();\n\n let that = this;\n\n that.support = getSupportedFeatures();\n this.transformStyle = this.support.transitions.prefix + 'Transform';\n that.element = element;\n that.element.style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n const coordinates = translate(that.x, that.y, that.scale);\n that.element.style[this.transformStyle] = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n translateAxis(axis, by) {\n this[axis] += by;\n this.refresh();\n }\n\n scaleTo(scale) {\n this.scale = scale;\n this.refresh();\n }\n\n scaleWith(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n }\n\n translate(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n }\n\n moveAxis(axis, value) {\n this[axis] = value;\n this.refresh();\n }\n\n moveTo(coordinates) {\n extend(this, coordinates);\n this.refresh();\n }\n\n refresh() {\n let that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style[this.transformStyle] = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n }\n\n _saveCoordinates(coordinates) {\n this.coordinates = coordinates;\n }\n}\n","import {\n Class\n} from '../../common';\n\nimport {\n proxy,\n now\n} from '../utils';\n\nconst extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport class Animation extends Class {\n constructor() {\n super();\n let that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n tick() { }\n done() { }\n onEnd() { }\n onCancel() { }\n\n start() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n }\n\n enabled() {\n return true;\n }\n\n cancel() {\n this._started = false;\n this.onCancel();\n }\n\n _tick() {\n let that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n}\n\nexport class Transition extends Animation {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n done() {\n return this.timePassed() >= this.duration;\n }\n\n timePassed() {\n return Math.min(this.duration, now() - this.startDate);\n }\n\n moveTo(options) {\n let that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n }\n\n _easeProxy(ease) {\n let that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n\n static easeOutExpo(t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n // static easeOutBack(t, b, c, d) {\n // let s = 1.70158;\n // return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n // }\n}\n","import {\n Class\n} from '../../common';\n\nconst STRING = \"string\";\nconst FUNCTION = \"function\";\n\nlet preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nlet isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nexport class Observable extends Class {\n constructor() {\n super();\n this._events = {};\n }\n\n destroy() {\n this.unbind();\n }\n\n bind(event, handlers, one) {\n let that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n /* eslint-enable no-loop-func */\n\n return that;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n let that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n }\n\n trigger(eventName, eventArgs) {\n let that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n let e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n let that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n\n _setEvents(options) {\n const length = (this.events || []).length;\n\n for (let idx = 0; idx < length; idx ++) {\n let e = this.events[idx];\n\n if (this.options[e] && options[e]) {\n this.unbind(e, this.options[e]);\n\n if (this._events && this._events[e]) {\n delete this._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n }\n}\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n isFunction,\n setDefaultOptions\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n contains,\n hasNativeScrolling,\n on,\n off,\n proxy,\n wheelDeltaY,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nimport {\n UserEvents\n} from './user-events';\n\nimport {\n Observable\n} from './observable';\n\nlet\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nclass ZoomSnapBack extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n enabled() {\n return this.movable.scale < this.dimensions.minScale;\n }\n\n done() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n }\n\n tick() {\n let movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n }\n\n onEnd() {\n let movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n}\n\nclass DragInertia extends Animation {\n constructor(options) {\n super();\n let that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n onCancel() {\n this.transition.cancel();\n }\n\n freeze(location) {\n let that = this;\n that.cancel();\n that._moveTo(location);\n }\n\n onEnd() {\n let that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n }\n\n done() {\n return abs(this.velocity) < 1;\n }\n\n start(e) {\n let that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n super.start();\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n super.start();\n }\n }\n\n tick() {\n let that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n }\n\n _end() {\n this.tapCapture.cancelCapture();\n this.end();\n }\n\n _snapBack() {\n let that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n }\n\n _moveTo(location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n}\n\nclass AnimatedScroller extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n tick() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n }\n\n done() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n }\n\n onEnd() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n }\n\n setCoordinates(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n }\n\n /* eslint-disable no-param-reassign */\n setCallback(callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n }\n /* eslint-enable no-param-reassign */\n\n _updateCoordinates() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n}\n\nclass ScrollBar extends Class {\n constructor(options) {\n super();\n let that = this,\n horizontal = options.axis === 'x';\n\n const orientation = (horizontal ? 'horizontal' : 'vertical');\n const element = convertToHtml('
    ');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n refresh() {\n let that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n }\n\n show() {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n }\n\n hide() {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n }\n}\n\n// export class Scroller extends Class {\nexport class Scroller extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n this.element = element;\n\n this._initOptions(options);\n\n const hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n const scrollHeader = convertToHtml('
    ');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n const scrollContainer = convertToHtml('
    ');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n let inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start(e) {\n dimensions.refresh();\n let velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _wheelScroll(e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n let delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n }\n\n makeVirtual() {\n this.dimensions.y.makeVirtual();\n }\n\n virtualSize(min, max) {\n this.dimensions.y.virtualSize(min, max);\n }\n\n height() {\n return this.dimensions.y.size;\n }\n\n scrollHeight() {\n return this.scrollElement.scrollHeight;\n }\n\n scrollWidth() {\n return this.scrollElement.scrollWidth;\n }\n\n _resize() {\n if (!this._native) {\n this.contentResized();\n }\n }\n\n setOptions(options) {\n let that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n reset() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n }\n\n contentResized() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n }\n\n zoomOut() {\n let dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n }\n\n enable() {\n this.enabled = true;\n }\n\n disable() {\n this.enabled = false;\n }\n\n scrollTo(x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n }\n\n animatedScrollTo(x, y, callback) {\n let from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n }\n\n // kept for API compatibility, not used\n pullHandled() {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n }\n\n destroy() {\n const element = this.element;\n\n off(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n }\n\n _scale(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n }\n\n _initPullToRefresh() {\n }\n\n // kept for API compatibility, not used\n _dragEnd() {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n }\n\n // kept for API compatibility, not used\n _paneChange() {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n }\n\n _initAxis(axis) {\n let that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n}\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","import {\n Class,\n grep\n} from '../../common';\n\nimport {\n proxy,\n noop,\n applyEventMap,\n getEventMap,\n on,\n off,\n now,\n getSupportedFeatures\n} from '../utils';\n\nimport {\n Observable\n} from './observable';\n\nconst extend = Object.assign;\n\nconst preventDefault = (e) => {\n e.preventDefault();\n};\n\nlet\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nlet THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n let x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n const support = getSupportedFeatures();\n let touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget,\n idx = 0,\n length, changedTouches, touch;\n\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n\n return touches;\n}\nexport class TouchAxis extends Class {\n constructor(axis, location) {\n super();\n let that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n move(location) {\n let that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n }\n\n _updateLocationData(location) {\n let that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n }\n}\n\nexport class Touch extends Class {\n constructor(userEvents, target, touchInfo) {\n super();\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n press() {\n // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n }\n\n _tap(touchInfo) {\n let that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n }\n\n _hold() {\n this._trigger(HOLD, this.pressEvent);\n }\n\n /* eslint-disable consistent-return */\n move(touchInfo) {\n let that = this;\n let preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n }\n /* eslint-enable consistent-return */\n\n end(touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n }\n\n dispose() {\n let userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n const activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n }\n\n skip() {\n this.dispose();\n }\n\n cancel() {\n this.dispose();\n }\n\n isMoved() {\n return this._moved;\n }\n\n _start(touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n }\n\n _trigger(name, touchInfo) {\n let that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n }\n\n _withinIgnoreThreshold() {\n let xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n}\n\nfunction withEachUpEvent(callback) {\n const eventMap = getEventMap(navigator.userAgent);\n let downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nexport class UserEvents extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n let filter;\n\n const support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n const enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n extend(that, {\n element: element,\n surface: options.global && enableGlobalSurface ?\n element.ownerDocument.documentElement :\n options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = proxy(this._move, this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = proxy(this._end, this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = proxy(this._start, this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n if (that.useClickAsTap) {\n this._elementClickHandler = proxy(this._click, this);\n on(element, applyEventMap('click'), filter, this._elementClickHandler);\n }\n\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n let defaultAction = 'pinch-zoom double-tap-zoom';\n\n element.style['-ms-touch-action'] =\n options.touchAction && options.touchAction !== 'none' ?\n defaultAction + ' ' + options.touchAction :\n defaultAction;\n\n } else {\n element.style['touch-action'] = options.touchAction || 'none';\n }\n }\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = proxy(this._select, this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved && support.eventCapture) {\n let surfaceElement = that.surface,\n preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n preventIfMoving(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n }\n\n destroy() {\n let that = this;\n const options = this.options;\n const element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && this.support.eventCapture) {\n let surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (that.useClickAsTap) {\n off(element, applyEventMap('click'), this._elementClickHandler);\n }\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n }\n\n capture() {\n UserEvents.current = this;\n }\n\n cancel() {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n\n /* eslint-disable indent */\n notify(event, data) {\n let that = this,\n touches = that.touches;\n let eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n }\n /* eslint-enable indent */\n\n press(x, y, target) {\n this._apiCall('_start', x, y, target);\n }\n\n move(x, y) {\n this._apiCall('_move', x, y);\n }\n\n end(x, y) {\n this._apiCall('_end', x, y);\n }\n\n _isMultiTouch() {\n return this.touches.length > 1;\n }\n\n _maxTouchesReached() {\n return this.touches.length >= this._maxTouches;\n }\n\n _disposeAll() {\n let touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n }\n\n _isMoved() {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n }\n\n _select(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n }\n\n _start(e) {\n let that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = touch.currentTarget;\n } else {\n target = that.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n }\n\n _move(e) {\n this._eachTouch('move', e);\n }\n\n _end(e) {\n this._eachTouch('end', e);\n }\n\n _click(e) {\n let data = {\n touch: {\n initialTouch: e.target,\n target: e.currentTarget,\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: e.currentTarget,\n event: e,\n type: 'tap'\n };\n\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n }\n\n _eachTouch(methodName, e) {\n let that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n\n _apiCall(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n }\n\n static defaultThreshold(value) {\n DEFAULT_THRESHOLD = value;\n }\n\n static minHold(value) {\n DEFAULT_MIN_HOLD = value;\n }\n}\n","import {\n isFunction,\n isArray\n} from '../common';\n\n/* eslint-disable arrow-body-style */\n\nconst defineProperty = Object.defineProperty;\n\nexport const extend = Object.assign;\n\nexport let convertToHtml = (html) => {\n const div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport let appendHtml = (html, element) => {\n const div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport let removeChildren = (element) => {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport let prepend = (element, originElement) => {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport let wrapInner = (parent, wrapper) => {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport let toHyphens = (str) => {\n const result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport let toPixels = (value) => {\n let result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nconst detectOS = (ua) => {\n let os = false, minorVersion, match = [],\n // notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRegex(agent, formFactorRxs, false);\n os.browser = testRegex(ua, browserRxs, \"default\");\n os.name = testRegex(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n\n\n break;\n }\n }\n }\n\n return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n for (let regex in regexes) {\n if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n\nexport let hasNativeScrolling = (userAgent) => {\n const os = detectOS(userAgent);\n return os.ios || os.android;\n};\n\nconst detectBrowser = (userAgent) => {\n let browser = false,\n match = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = userAgent.match(browserRxs[agent]);\n\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n};\n\nexport let getEventMap = () => {\n let eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n const support = getSupportedFeatures();\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n return eventMap;\n};\n\nexport const getSupportedFeatures = () => {\n const os = detectOS(navigator.userAgent);\n const browser = detectBrowser(navigator.userAgent);\n\n let chrome = browser.chrome,\n mobileChrome = browser.crios,\n mozilla = browser.mozilla,\n safari = browser.safari;\n\n const support = {};\n\n support.mobileOS = os;\n support.touch = \"ontouchstart\" in window;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.eventCapture = document.documentElement.addEventListener;\n\n let table = document.createElement(\"table\");\n\n let transitions = support.transitions = false,\n transforms = support.transforms = false;\n\n const STRING = \"string\";\n\n [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n let hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n let lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix !== \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.delayedClick = function() {\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (support.mobileOS.ios) {\n return true;\n }\n\n if (support.mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n const meta = document.querySelector(\"meta[name=viewport]\");\n const contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n return !contentAttr.match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n return support;\n};\n\nexport const ownsElement = (parent, element) => {\n if (!element) {\n return false;\n }\n\n let node = element.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\nexport const contains = (parent, element) => {\n return parent === element || ownsElement(parent, element);\n};\n\nexport const proxy = (method, context) => {\n return method.bind(context);\n};\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nexport const on = (element, events, filter, handler, useCapture) => {\n addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const addEventListeners = (element, events, filter, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n};\n\nexport const addEventListener = (element, event, filter, handler, useCapture) => {\n let eventHandler = handler;\n let eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n element.addEventListener(event, function(e) {\n const closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n const currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n }, Boolean(useCapture));\n};\n\nexport const off = (element, events, filter, handler, useCapture) => {\n removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const removeEventListeners = (element, events, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n};\n\nexport const removeEventListener = (element, event, handler, useCapture) => {\n element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport const applyEventMap = (events) => {\n const eventMap = getEventMap(navigator.userAgent);\n function queryEventMap(e) {\n return eventMap[e] || e;\n }\n\n const eventRegEx = /([^ ]+)/g;\n const appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n\nexport const setDefaultEvents = (type, events) => {\n const proto = type.prototype;\n\n if (proto.events) {\n events.forEach(event => {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport const wheelDeltaY = (jQueryEvent) => {\n const e = jQueryEvent.originalEvent || jQueryEvent;\n const deltaY = e.wheelDeltaY;\n let delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n};\n\nexport const guid = () => {\n let id = \"\";\n let i;\n let random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n};\n\nexport const now = () => {\n return Number(new Date());\n};\n\nexport const noop = () => {};\n\n/* eslint-enable arrow-body-style */\n","import {\n deepExtend,\n addClass,\n keys,\n hasClasses,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, iconClass) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nlet PLUS = 187;\nlet MINUS = 189;\nlet FF_PLUS = 61;\nlet FF_MINUS = 173;\nconst CHANGE = \"change\";\n\nexport class ZoomControl extends Observable {\n constructor(element, options) {\n super();\n this.element = element;\n this._initOptions(options);\n\n const zoomInButton = createButton('in', 'k-i-plus');\n const zoomOutButton = createButton('out', 'k-i-minus');\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _change(direction) {\n let zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n }\n\n _click(e) {\n let button = e.currentTarget;\n let direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n }\n\n /* eslint-disable indent */\n _keydown(e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n }\n /* eslint-enable indent */\n}\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","export { default as QRCode } from './qrcode/qrcode';\nexport { default as qrcodeValidator } from './qrcode/qrcode-validator';\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class AlphaNumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characters: {\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 \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n }\n\n getValue(character) {\n return this.characters[character];\n }\n\n encode(str, version) {\n let\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class ByteQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n }\n\n getValue(character) {\n let code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error(`Unsupported character in QR Code: \"${character}\".`);\n }\n\n encode(str, version) {\n let mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (let i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n }\n}\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nconst NUMERIC = \"numeric\";\nconst ALPHA_NUMERIC = \"alphanumeric\";\nconst BYTE = \"byte\";\n\nexport let DataModeInstances = {\n [NUMERIC]: new NumericQRDataMode(),\n [ALPHA_NUMERIC]: new AlphaNumericQRDataMode(),\n [BYTE]: new ByteQRDataMode()\n};\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class NumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n }\n\n getValue(character) {\n return parseInt(character, 10);\n }\n\n encode(str, version) {\n let mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n let mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n }\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class QRDataMode extends Class {\n constructor() {\n super();\n\n this.initProperties();\n }\n\n initProperties() {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n }\n\n getVersionIndex(version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n }\n\n getBitsCharacterCount(version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n }\n\n getModeCountString(length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n }\n\n encode() { }\n\n getStringBitsLength() { }\n\n getValue() { }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport class IsoEncoder extends Class {\n getEncodingResult(inputString, errorCorrectionLevel) {\n let modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nconst BYTE = \"byte\";\n\nexport class Utf8Encoder extends Class {\n constructor() {\n super();\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n initProperties() {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n }\n\n getEncodingResult(inputString, errorCorrectionLevel) {\n let data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n }\n\n getDataCodewordsCount(data) {\n let dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n }\n\n encode(str) {\n let result = this.utfBOM;\n\n for (let i = 0; i < str.length; i++) {\n result += this.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n }\n\n encodeCharacter(code) {\n let bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n let significantOnes = 8 - bytesCount;\n\n for (let i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n }\n\n getBytesCount(code) {\n let ranges = this.ranges;\n\n for (let i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n }\n}\n","import { Class } from '../../common';\n\nexport class EncodingResult extends Class {\n constructor(dataString, version) {\n super();\n\n this.dataString = dataString;\n this.version = version;\n }\n}\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nlet terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n (row, column) => { return (row + column) % 2 === 0; },\n (row, column) => { return row % 2 === 0; },\n (row, column) => { return column % 3 === 0; },\n (row, column) => { return (row + column) % 3 === 0; },\n (row, column) => { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n (row, column) => { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n (row, column) => { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n (row, column) => { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport const generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (let i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n let cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (let blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (let i = 0; i < block.length; i++) {\n for (let j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n let dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n let dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n let result;\n let power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n let result = [],\n idx = x.length - 2;\n\n for (let i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n let result = [];\n\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n let maxErrorCorrectionCodeWordsCount = 68;\n\n for (let idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n let firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n let result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n let generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n let codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (let groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (let blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (let codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n let numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n let modes = [],\n previousMode,\n idx = 0;\n let str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n let nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n let length = 0,\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n let x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n let dataString = \"\",\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n let formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (let i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n let generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n let yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n let x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n let matrices = [],\n modules = 17 + 4 * version;\n\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (let j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n let matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n let matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (let idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n let size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (let i = 0; i < pattern.length; i++) {\n for (let j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n let nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n let modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n let matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (let i = 0; i < points.length; i++) {\n for (let j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n let row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (let i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n let scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (let rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (let columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (let matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n let total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n let percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n let encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n let minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n let formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../common';\n\nexport class FreeCellVisitor extends Class {\n constructor(matrix) {\n super();\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n move() {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n }\n\n getNextCell() {\n while (this.matrix[this.row][this.column] !== undefined) {\n this.move();\n\n if (this.row < 0 || this.row >= this.matrix.length) {\n this.dir = -this.dir;\n this.startColumn -= this.startColumn !== 8 ? 2 : 3;\n this.column = this.startColumn;\n this.row = this.dir < 0 ? this.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n }\n\n getNextRemainderCell() {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n }\n}\n","export const VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import { encodeData } from './encodings/encoding';\n\nconst ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding = ISO) {\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nconst round = Math.round;\nconst crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nconst squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nconst QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nclass QRCode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-qrcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n const element = this.element;\n const elementWidth = element.clientWidth;\n const elementHeight = element.clientHeight;\n const size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n exportVisual() {\n return this._render();\n }\n\n _render() {\n let value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n let visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n }\n\n _renderLogo(qrSize, baseUnit) {\n let image;\n let imageRect;\n let center = round(qrSize / 2);\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n let logoUrl = this.options.overlay.imageUrl;\n let position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n }\n\n _renderSwissCode(qrSize, baseUnit) {\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n let crossSize = logoSize / 4;\n let crossOffset = crossSize / 2;\n let center = qrSize / 2;\n let start = {};\n let visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n }\n\n _renderShape(start, step, pattern, color) {\n let path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (let i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n }\n\n _getSize() {\n let size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n }\n\n _calculateBaseUnit(size, matrixSize) {\n let baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n const minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n `Insufficient size for QR Code: the current size is ${size}px and the minimum size is ${minSize}px.`\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n }\n\n _renderMatrix(matrix, baseUnit, quietZoneSize) {\n let path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (let row = 0; row < matrix.length; row++) {\n let y = quietZoneSize + row * baseUnit;\n let column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n let x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n let x1 = round(quietZoneSize + x * baseUnit);\n let y1 = round(y);\n let x2 = round(quietZoneSize + column * baseUnit);\n let y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n }\n\n _renderBackground(size, border) {\n const box = new Box(0, 0, size, size).unpad(border.width / 2);\n const background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n }\n\n setOptions(options) {\n let newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n }\n\n value(value) {\n if (value === undefined) {\n return this._value;\n }\n\n this._value = String(value);\n\n this.redraw();\n }\n\n _hasCustomLogo() {\n return Boolean(this.options.overlay.imageUrl);\n }\n\n _isSwiss() {\n return this.options.overlay.type === \"swiss\";\n }\n\n _getLogoSize(defautLogoSize) {\n let width = this.options.overlay.width;\n let height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n }\n}\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","export const extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n let result = [];\n let idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n let bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","export { default as ChartService } from './services/chart-service';\nexport { default as DomEventsBuilder } from './services/dom-events-builder';\nexport { default as FormatService } from './services/format-service';\nexport { default as IntlService } from './services/intl-service';\nexport { default as TemplateService } from './services/template-service';","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nclass ChartService {\n constructor(chart, context = {}) {\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n\n notify(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n }\n\n isPannable(axis) {\n const pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n}\n\nexport default ChartService;","let current;\n\nclass DomEventsBuilder {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static create(element, events) {\n if (current) {\n return current.create(element, events);\n }\n }\n}\n\nexport default DomEventsBuilder;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nconst FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nclass FormatService {\n constructor(intlService) {\n this._intlService = intlService;\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n }\n\n auto(formatString, ...values) {\n const intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format(formatString, ...values);\n }\n\n return intl.toString(values[0], formatString);\n }\n\n localeAuto(formatString, values, locale) {\n const intl = this.intl;\n let result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n}\n\nexport default FormatService;","const defaultImplementation = {\n format: (format, value) => value,\n\n toString: (value) => value,\n\n parseDate: (value) => new Date(value),\n\n firstDay: () => 0\n};\n\nlet current = defaultImplementation;\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static get implementation() {\n return current;\n }\n}\n\nexport default IntlService;\n","class MapService {\n constructor(widget, context = {}) {\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n }\n\n notify(name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n }\n}\n\nexport default MapService;\n","let current = {\n compile: function(template) {\n return template;\n }\n};\n\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static compile(template) {\n return current.compile(template);\n }\n}\n\nexport default TemplateService;\n","export { default as Sparkline } from './sparkline/sparkline';","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nconst TOP_OFFSET = -2;\n\nclass SharedTooltip extends ChartSharedTooltip {\n _slotAnchor(coords, slot) {\n const axis = this.plotArea.categoryAxis;\n const vertical = axis.options.vertical;\n const align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n let point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n return this._slotAnchor({}, slot);\n }\n}\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport{ addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nconst DEAULT_BAR_WIDTH = 150;\nconst DEAULT_BULLET_WIDTH = 150;\nconst NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n const state = [];\n for (let idx = 0; idx < children.length; idx++) {\n const child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (let idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nclass Sparkline extends Chart {\n _setElementClass(element) {\n addClass(element, 'k-sparkline');\n }\n\n _initElement(element) {\n super._initElement(element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n }\n\n _resize() {\n const element = this.element;\n const state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n super._resize();\n }\n\n _modelOptions() {\n const chartOptions = this.options;\n const stage = this._surfaceWrap();\n const displayState = hide(stage.childNodes);\n\n const space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n const options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n }\n\n _surfaceWrap() {\n if (!this.stage) {\n const stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n }\n\n _createPlotArea(skipSeries) {\n const plotArea = super._createPlotArea(skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n }\n\n _calculateWidth(plotArea) {\n const options = this.options;\n const margin = getSpacing(options.chartArea.margin);\n const charts = plotArea.charts;\n const stage = this._surfaceWrap();\n let total = 0;\n\n\n for (let i = 0; i < charts.length; i++) {\n const currentChart = charts[i];\n const firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n const categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n const pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n let size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n static normalizeOptions(userOptions) {\n let options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n }\n}\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","export { default as Navigator } from './stock/navigator';\nexport { default as NavigatorHint } from './stock/navigator-hint';\nexport { default as StockChart } from './stock/stock-chart';\n\nimport * as constants from './stock/constants';\n\nexport { constants };","const NAVIGATOR_PANE = \"_navigator\";\nconst NAVIGATOR_AXIS = NAVIGATOR_PANE;\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE };","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nclass FadeOutAnimation extends draw.Animation {\n\n setup() {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n }\n\n step(pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n }\n\n abort() {\n super.abort();\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n }\n\n cancel() {\n super.abort();\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n }\n}\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n const div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nclass NavigatorHint extends Class {\n constructor(container, chartService, options) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n const padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n createElements() {\n const element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n const tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n const scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n }\n\n show(from, to, bbox) {\n const { element, options, scroll, tooltip } = this;\n const middle = toDate(toTime(from) + toTime(to - from) / 2);\n const scrollWidth = bbox.width() * 0.4;\n const minPos = bbox.center().x - scrollWidth;\n const maxPos = bbox.center().x;\n const posRange = maxPos - minPos;\n const range = options.max - options.min;\n const scale = posRange / range;\n const offset = middle - options.min;\n let text = this.chartService.intl.format(options.format, from, to);\n const template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n const tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n }\n\n clearHideTimeout() {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n }\n\n hide() {\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(() => {\n this._visible = false;\n this._hideAnimation = new FadeOutAnimation(this.element);\n this._hideAnimation.setup();\n this._hideAnimation.play();\n }, this.options.hideDelay);\n }\n\n destroy() {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n }\n}\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst ZOOM_ACCELERATION = 3;\n\nclass Navigator extends Class {\n constructor(chart) {\n super();\n\n this.chart = chart;\n const options = this.options = deepExtend({}, this.options, chart.options.navigator);\n const select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, {\n [DRAG]: '_drag',\n [DRAG_END]: '_dragEnd',\n [ZOOM]: '_zoom',\n [ZOOM_END]: '_zoomEnd'\n });\n chart.addObserver(this.chartObserver);\n }\n\n parseDate(value) {\n return parseDate(this.chart.chartService.intl, value);\n }\n\n clean() {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n }\n\n destroy() {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n }\n\n redraw() {\n this._redrawSelf();\n this.initSelection();\n }\n\n initSelection() {\n const { chart, options } = this;\n const axis = this.mainAxis();\n const { min, max } = axis.roundedRange();\n const { from, to, mousewheel } = options.select;\n const axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n }\n\n setRange() {\n const plotArea = this.chart._createPlotArea(true);\n const axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n const { min, max } = axis.roundedRange();\n\n const select = this.options.select || {};\n let from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n let to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n }\n\n _redrawSelf(silent) {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n }\n\n redrawSlaves() {\n const chart = this.chart;\n const plotArea = chart._plotArea;\n const slavePanes = plotArea.panes.slice(0, -1);\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n }\n\n _drag(e) {\n const { chart, selection } = this;\n const coords = chart._eventCoordinates(e.originalEvent);\n const navigatorAxis = this.mainAxis();\n const naviRange = navigatorAxis.roundedRange();\n const inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n const axis = chart._plotArea.categoryAxis;\n const range = e.axisRanges[axis.options.name];\n const select = this.options.select;\n let duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n const from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n const to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n }\n\n _dragEnd() {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n }\n\n readSelection() {\n const { selection: { options: { from, to } }, options: { select } } = this;\n\n select.from = from;\n select.to = to;\n }\n\n filterAxes() {\n const { options: { select = { } }, chart } = this;\n const allAxes = chart.options.categoryAxis;\n const { from, to } = select;\n\n for (let idx = 0; idx < allAxes.length; idx++) {\n const axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n }\n\n filter() {\n const { chart, options: { select } } = this;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n const mainAxis = this.mainAxis();\n const args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n const axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n }\n\n _zoom(e) {\n const { chart: { _plotArea: { categoryAxis: axis } }, selection, options: { select, liveDrag } } = this;\n const mainAxis = this.mainAxis();\n let delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n const fromIx = mainAxis.categoryIndex(selection.options.from);\n const toIx = mainAxis.categoryIndex(selection.options.to);\n const coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n }\n\n _zoomEnd(e) {\n this._dragEnd(e);\n }\n\n showHint(from, to) {\n const plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n }\n\n _selectStart(e) {\n return this.chart._selectStart(e);\n }\n\n _select(e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n }\n\n _selectEnd(e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n }\n\n mainAxis() {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n }\n\n select(from, to) {\n const select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n }\n\n static setup(options = {}, themeOptions = {}) {\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n const naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n const panes = options.panes = [].concat(options.panes);\n const paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n panes.push(paneOptions);\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n }\n\n static attachAxes(options, naviOptions) {\n const series = naviOptions.series || [];\n const categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n const valueAxes = options.valueAxis = [].concat(options.valueAxis);\n\n const equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n const justifyAxis = equallySpacedSeries.length === 0;\n\n const base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n const user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n }\n\n static attachSeries(options, naviOptions, themeOptions) {\n const series = options.series = options.series || [];\n const navigatorSeries = [].concat(naviOptions.series || []);\n const seriesColors = themeOptions.seriesColors;\n const defaults = naviOptions.seriesDefaults;\n\n for (let idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n }\n}\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst AUTO_CATEGORY_WIDTH = 28;\n\nclass StockChart extends Chart {\n\n applyDefaults(options, themeOptions) {\n const width = elementSize(this.element).width || DEFAULT_WIDTH;\n let theme = themeOptions;\n\n const stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n super.applyDefaults(options, theme);\n }\n\n _setElementClass(element) {\n addClass(element, 'k-chart k-stockchart');\n }\n\n setOptions(options) {\n this.destroyNavigator();\n super.setOptions(options);\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n }\n\n _resize() {\n this.noTransitionsRedraw();\n }\n\n _redraw() {\n const navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n }\n\n _dirty() {\n const options = this.options;\n const series = [].concat(options.series, options.navigator.series);\n const seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n const dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n }\n\n _fullRedraw() {\n let navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n super._redraw();\n\n navigator.initSelection();\n }\n\n _trackSharedTooltip(coords) {\n const plotArea = this._plotArea;\n const pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n super._trackSharedTooltip(coords);\n }\n }\n\n bindCategories() {\n super.bindCategories();\n this.copyNavigatorCategories();\n }\n\n copyNavigatorCategories() {\n const definitions = [].concat(this.options.categoryAxis);\n let categories;\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n }\n\n destroyNavigator() {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n }\n\n destroy() {\n this.destroyNavigator();\n super.destroy();\n }\n\n _stopChartHandlers(e) {\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n\n return super._stopChartHandlers(e) || (pane && pane.options.name === NAVIGATOR_PANE);\n }\n\n _toggleDragZoomEvents() {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n }\n}\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: true\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n/**\n * @hidden\n */\nexport function fieldList(field) {\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { fieldList } from './field-list';\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = fieldList(field);\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","import { fieldList } from './field-list';\nconst setterCache = {};\n// tslint:disable-next-line:no-string-literal\nsetterCache['undefined'] = obj => obj;\nconst defaultValue = (nextField, options) => options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n/**\n * @hidden\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = fieldList(field);\n setterCache[field] = (obj, value, options) => {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","export { detectMobileOS, detectDesktopBrowser, browser, mobileOS, touch, msPointers, pointers, touchEnabled } from './support';\nexport { getter } from './accessors/getter';\nexport { setter } from './accessors/setter';\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nconst agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nconst osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nconst desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nconst mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nconst testRx = (agent, rxs, dflt) => {\n for (let rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport const detectMobileOS = (ua) => {\n let minorVersion;\n let match = [];\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n const os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport const detectDesktopBrowser = (ua) => {\n let browserInfo = null;\n let match = [];\n for (let agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nconst userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport const browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport const mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport const touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport const msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport const pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport const touchEnabled = mobileOS && (touch || msPointers || pointers);\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n","import { isPresent } from './utils';\nconst getterCache = {};\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport const getter = (field, safe) => {\n const key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = obj => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport const orderBy = (data, descriptors) => {\n if (descriptors.some(x => isPresent(x.dir))) {\n data = data.slice(0);\n const comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nconst defaultComparer = (a, b) => a === b;\nconst normalizeComparer = (comparer) => {\n if (isString(comparer)) {\n const accessor = getter(comparer);\n comparer = (a, b) => accessor(a) === accessor(b);\n }\n return comparer;\n};\nconst _distinct = (data, comparer) => data.filter((x, idx, xs) => xs.findIndex(comparer.bind(null, x)) === idx);\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport const distinct = (data, comparer = defaultComparer) => _distinct(data, normalizeComparer(comparer));\n/**\n * @hidden\n */\nexport const count = (data, predicate) => {\n let counter = 0;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport const limit = (data, predicate) => {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport const process = (data, state) => {\n const { skip: skipCount, take: takeCount, filter: filterDescriptor, sort, group } = state;\n const sortDescriptors = [...normalizeGroups(group || []), ...sort || []];\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n const hasFilters = isPresent(filterDescriptor) && filter.length;\n const hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n let total;\n const transformers = [];\n let predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n const transform = compose(...transformers);\n const result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","import { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport const wrapIf = predicate => (str, ...args) => predicate() ? `${str[0]}${args[0]}${str[1]}` : args[0];\n/**\n * @hidden\n */\nexport const toUTC = (date) => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n/**\n * @hidden\n */\nexport const quote = ({ field, value, ignoreCase, operator }) => ({\n value: `'${value.replace(/'/g, \"''\")}'`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const encodeValue = ({ field, value, ignoreCase, operator }) => ({\n value: `${encodeURIComponent(value)}`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const toLower = ({ field, value, ignoreCase, operator }) => ({\n field: wrapIf(() => ignoreCase) `tolower(${field})`,\n value,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const normalizeField = ({ field, value, ignoreCase, operator }) => ({\n value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const isStringValue = x => isString(x.value);\n/**\n * @hidden\n */\nexport const isDateValue = x => isDate(x.value);\n/**\n * @hidden\n */\nexport const serializeFilters = (map, join) => (filter) => {\n const brackets = wrapIf(() => filter.filters.length > 1);\n return brackets `(${filter.filters\n .map(map)\n .join(join(filter))})`;\n};\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport const isCompositeFilterDescriptor = (source) => {\n return isPresent(source.filters);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport const compileFilter = (descriptor) => {\n if (!descriptor || descriptor.filters.length === 0) {\n return () => true;\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport const filterBy = (data, descriptor) => {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nconst logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n};\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === '',\n isnotempty: (a) => a !== '',\n isnotnull: (a) => isPresent(a),\n isnull: (a) => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0\n};\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst convertValue = (value, ignoreCase) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nconst typedGetter = (prop, value, ignoreCase) => {\n if (!isPresent(value)) {\n return prop;\n }\n let acc = prop;\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return a => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nconst transformFilter = ({ field, ignoreCase, value, operator }) => {\n field = !isPresent(field) ? a => a : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n const itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n return a => op(itemProp(a), value, ignoreCase);\n};\n/**\n * @hidden\n */\nexport const transformCompositeFilter = (filter) => {\n const combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(x => isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x))\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nconst operatorMap = (key) => ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key);\nconst normalizeOperator = (descriptor) => {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(filter => {\n const result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nconst normalizeDescriptor = (descriptor) => {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport const normalizeFilters = (descriptor) => {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","/**\n * @hidden\n */\nexport const ifElse = (predicate, right, left) => value => predicate(value) ? right(value) : left(value);\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport const compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nexport const constant = x => () => x;\n/**\n * @hidden\n */\nexport const identity = x => x;\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nconst identity = map(x => x);\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport const aggregateBy = (data, descriptors = [], transformers = identity) => {\n const initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n const result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport const normalizeGroups = (descriptors) => {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(x => Object.assign({ dir: \"asc\" }, x));\n};\nconst identity = map(x => x);\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport const groupBy = (data, descriptors = [], transformers = identity, originalData = data) => {\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n const descriptor = descriptors[0];\n const initialValue = {};\n const view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n const result = [];\n Object.keys(view).forEach(field => {\n Object.keys(view[field]).forEach(value => {\n const group = view[field][value];\n let aggregateResult = {};\n let filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","export { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nexport { toODataString } from './odata.operators';\nexport { toDataSourceRequestString, toDataSourceRequest } from './mvc/operators';\nexport { translateDataSourceResultGroups, translateAggregateResults } from './mvc/deserialization';\nexport { orderBy, process, distinct } from './array.operators';\nexport { getter } from './accessor';\nexport { filterBy, compileFilter } from './filtering/filter-expression.factory';\nexport { groupBy } from './grouping/group.operators';\nexport { composeSortDescriptors } from './sorting/sort-array.operator';\nexport { normalizeFilters } from './filtering/filter.operators';\nexport { normalizeGroups } from './grouping/group.operators';\nexport { aggregateBy } from './grouping/aggregate.operators';\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nconst set = (field, target, value) => {\n target[field] = value;\n return target;\n};\nconst toCamelCase = str => str.replace(/(^[A-Z])/g, (_, g1) => g1.toLowerCase());\nconst prop = (fieldName) => (obj) => {\n const value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n};\nconst member = prop(\"Member\");\nconst aggregateMethodName = prop(\"AggregateMethodName\");\nconst value = prop(\"Value\");\nconst convert = mapper => values => Object.keys(values).reduce(mapper.bind(null, values), {});\nconst translateAggregate = convert((source, acc, field) => set(field.toLowerCase(), acc, source[field]));\nconst translateAggregates = convert((source, acc, field) => set(field, acc, translateAggregate(source[field])));\nconst valueOrDefault = (value, defaultValue) => isPresent(value) ? value : defaultValue;\nconst normalizeGroup = group => ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n});\nconst translateGroup = compose(({ field, hasSubgroups, value, aggregates, items }) => ({\n aggregates: translateAggregates(aggregates),\n field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value\n}), normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport const translateDataSourceResultGroups = (data) => data.map(translateGroup);\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport const translateAggregateResults = (data) => ((data || []).reduce((acc, x) => set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))), {}));\n","import { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nconst toQueryString = values => values.reduce((acc, [key, value]) => [...acc, `${key}=${value}`], []);\nconst toObject = values => values.reduce((acc, [key, value]) => (Object.assign({}, acc, { [key]: value })), {});\nconst pairwise = key => value => [key, value];\nconst empty = () => null;\nconst isNotEmptyArray = value => isPresent(value) && isArray(value) && value.length > 0;\nconst has = accessor => value => isPresent(accessor(value));\nconst isNotEmpty = accessor => value => isNotEmptyArray(accessor(value));\nconst runOrEmpty = (predicate, fn) => ifElse(predicate, fn, empty);\nconst calcPage = ({ skip, take }) => Math.floor((skip || 0) / take) + 1;\nconst formatDescriptors = (accessor, formatter) => state => (accessor(state).map(formatter).join(\"~\"));\nconst removeAfter = (what) => (str) => str.slice(0, str.indexOf(what));\nconst replace = (patterns) => compose(...patterns.map(([left, right]) => (s) => s.replace(new RegExp(left, \"g\"), right)));\nconst sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nconst removeAfterDot = removeAfter(\".\");\nconst directionFormatter = ({ field, dir = \"asc\" }) => `${field}-${dir}`;\nconst aggregateFormatter = ({ field, aggregate }) => `${field}-${aggregate}`;\nconst take = getter(\"take\");\nconst aggregates = getter(\"aggregates\");\nconst skip = getter(\"skip\");\nconst group = getter(\"group\");\nconst sort = getter(\"sort\", true);\nconst formatSort = formatDescriptors(sort, directionFormatter);\nconst formatGroup = formatDescriptors(group, directionFormatter);\nconst formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nconst prefixDateValue = value => `datetime'${value}'`;\nconst formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nconst formatDate = ({ field, value, ignoreCase, operator }) => ({\n value: formatDateValue(value),\n field,\n ignoreCase,\n operator\n});\nconst normalizeSort = (state) => Object.assign({}, state, {\n sort: (sort(state) || []).filter(({ dir }) => isNotNullOrEmptyString(dir))\n});\nconst transformSkip = compose(pairwise('page'), calcPage);\nconst transformTake = compose(pairwise('pageSize'), take);\nconst transformGroup = compose(pairwise('group'), formatGroup);\nconst transformSort = compose(pairwise('sort'), formatSort);\nconst transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nconst serializePage = runOrEmpty(has(skip), transformSkip);\nconst serializePageSize = runOrEmpty(has(take), transformTake);\nconst serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nconst serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nconst serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nconst hasField = ({ field }) => isNotNullOrEmptyString(field);\nconst filterFormatter = ({ field, operator, value }) => `${field}~${operator}~${value}`;\nconst dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nconst typedFormatter = encode => runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\nconst join = ({ logic }) => `~${logic}~`;\nconst serialize = encode => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter), join);\nconst serializeFilter = ({ filter }, encode) => {\n if (filter && filter.filters) {\n const filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nconst rules = (state, encode = true) => key => ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n}[key]);\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport const toDataSourceRequestString = (state) => (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&'));\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport const toDataSourceRequest = (state) => (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent)));\n","import { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nimport { compose, ifElse } from './funcs';\nimport { normalizeField, quote, toLower, isDateValue, isStringValue, serializeFilters, encodeValue, toUTC } from './filter-serialization.common';\nimport { normalizeFilters } from './filtering/filter.operators';\nconst formatDate = ({ utcDates }) => ({ field, value, ignoreCase, operator }) => ({\n value: JSON.stringify(!utcDates ? toUTC(value) : value).replace(/\"/g, \"\"),\n field,\n ignoreCase,\n operator\n});\nconst fnFormatter = ({ operator }) => ({ field, value }) => `${operator}(${field},${value})`;\nconst singleOperatorFormatter = ({ operator }) => ({ field, value }) => `${field} ${operator} ${value}`;\nconst stringFormat = formatter => compose(formatter, encodeValue, quote, toLower, normalizeField);\nconst stringFnOperator = settings => stringFormat(fnFormatter(settings));\nconst stringOperator = settings => stringFormat(singleOperatorFormatter(settings));\nconst numericOperator = settings => compose(singleOperatorFormatter(settings), normalizeField);\nconst dateOperator = settings => compose(singleOperatorFormatter(settings), normalizeField, formatDate(settings));\nconst ifDate = settings => ifElse(isDateValue, dateOperator(settings), numericOperator(settings));\nconst typedOperator = settings => ifElse(isStringValue, stringOperator(settings), ifDate(settings));\nconst appendEqual = str => `${str} eq -1`;\nconst nonValueExpression = formatter => compose(formatter, normalizeField);\nconst filterOperators = (operator, settings) => ({\n contains: stringFnOperator(Object.assign({}, settings, { operator: \"contains\" })),\n doesnotcontain: compose(appendEqual, stringFnOperator(Object.assign({}, settings, { operator: \"indexof\" }))),\n endswith: stringFnOperator(Object.assign({}, settings, { operator: \"endswith\" })),\n eq: typedOperator(Object.assign({}, settings, { operator: \"eq\" })),\n gt: typedOperator(Object.assign({}, settings, { operator: \"gt\" })),\n gte: typedOperator(Object.assign({}, settings, { operator: \"ge\" })),\n isempty: nonValueExpression(({ field }) => `${field} eq ''`),\n isnotempty: nonValueExpression(({ field }) => `${field} ne ''`),\n isnotnull: nonValueExpression(({ field }) => `${field} ne null`),\n isnull: nonValueExpression(({ field }) => `${field} eq null`),\n lt: typedOperator(Object.assign({}, settings, { operator: \"lt\" })),\n lte: typedOperator(Object.assign({}, settings, { operator: \"le\" })),\n neq: typedOperator(Object.assign({}, settings, { operator: \"ne\" })),\n startswith: stringFnOperator(Object.assign({}, settings, { operator: \"startswith\" }))\n}[operator]);\nconst join = x => ` ${x.logic} `;\nconst serialize = settings => x => filterOperators(x.operator, settings)(x);\nconst serializeAll = settings => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serializeAll(settings), serialize(settings))(filter), join);\n/**\n * @hidden\n */\nexport const serializeFilter = (filter, settings = {}) => {\n if (filter.filters && filter.filters.length) {\n return \"$filter=\" + serializeAll(settings)(normalizeFilters(filter));\n }\n return \"\";\n};\n","import { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nconst serializeSort = (orderby) => {\n const str = orderby\n .filter(sort => isPresent(sort.dir))\n .map(sort => {\n const order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? `$orderby=${str}` : str;\n};\nconst emptyString = constant('');\nconst concat = a => b => a + b;\nconst serializeKey = (strings, val) => ifElse(isPresent, concat(strings[0]), emptyString)(val);\nconst rules = (settings, state) => (key) => ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey `$skip=${state.skip}`,\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey `$top=${state.take}`\n}[key]);\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport const toODataString = (state, settings = {}) => (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nconst compare = (a, b) => {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nconst compareDesc = (a, b) => compare(b, a);\nconst descriptorAsFunc = (descriptor) => {\n const prop = getter(descriptor.field, true);\n return (a, b) => (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b));\n};\nconst initial = (_a, _b) => 0;\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport const composeSortDescriptors = (descriptors) => (descriptors\n .filter(x => isPresent(x.dir))\n .map((descriptor) => descriptorAsFunc(descriptor))\n .reduce((acc, curr) => (a, b) => acc(a, b) || curr(a, b), initial));\n","const merge = (data, left, middle, right, compare) => {\n let leftLength = middle - left;\n let rightLength = right - middle;\n const temp = [];\n for (let idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n let cursor1 = 0;\n let cursor2 = middle;\n let dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport const sort = (data, start, end, compare) => {\n if (end - start < 2) {\n return;\n }\n const mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nconst valueToString = (value) => {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport const groupCombinator = (field) => {\n const prop = getter(field, true);\n let position = 0;\n return (agg, value) => {\n agg[field] = agg[field] || {};\n const groupValue = prop(value);\n const key = valueToString(groupValue);\n const values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport const expandAggregates = (result = {}) => {\n Object.keys(result).forEach(field => {\n const aggregates = result[field];\n Object.keys(aggregates).forEach(aggregate => {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nconst aggregatesFuncs = (name) => ({\n average: () => {\n let value = 0;\n let count = 0;\n return {\n calc: (curr) => {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: () => isNumeric(value) ? value / count : value\n };\n },\n count: () => {\n let state = 0;\n return {\n calc: () => state++,\n result: () => state\n };\n },\n max: () => {\n let state = Number.NEGATIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n min: () => {\n let state = Number.POSITIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n sum: () => {\n let state = 0;\n return {\n calc: (value) => {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: () => state\n };\n }\n}[name]());\n/**\n * @hidden\n */\nexport const aggregatesCombinator = (descriptors) => {\n const functions = descriptors.map(descriptor => {\n const fieldAccessor = getter(descriptor.field, true);\n const aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n const aggregateAccessor = getter(aggregateName, true);\n return (state, value) => {\n const fieldAggregates = state[descriptor.field] || {};\n const aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return (state, value) => functions.reduce((agg, calc) => calc(agg, value), state);\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport const concat = (arr, value) => {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport const map = (transform) => ((reduce) => ((acc, curr, index) => reduce(acc, transform(curr, index))));\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport const filter = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : acc));\n/**\n * @hidden\n */\nexport const isTransformerResult = (source) => {\n return isPresent(source.__value);\n};\nconst reduced = (x) => {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const take = (count) => ((reduce) => ((acc, curr) => count-- > 0 ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const takeWhile = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport const skip = (count) => ((reduce) => ((acc, curr) => count-- <= 0 ? reduce(acc, curr) : acc));\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport const exec = (transform, initialValue, data) => {\n let result = initialValue;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","/**\n * @hidden\n */\nexport const isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nexport const isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nexport const isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nexport const isFunction = (value) => typeof value === 'function';\n/**\n * @hidden\n */\nexport const isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nexport const isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nexport const isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nexport const isNotNullOrEmptyString = (value) => !isNullOrEmptyString(value);\n/**\n * @hidden\n */\nexport const isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * @hidden\n */\nexport const isDate = (value) => value && value.getTime;\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport const addCenturies = (value, offset) => {\n return addYears(value, 100 * offset);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport const addDays = (date, offset) => {\n const newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport const addDecades = (value, offset) => {\n return addYears(value, 10 * offset);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nconst MONTHS_LENGTH = 12;\nconst normalize = (date, expectedMonth) => (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n);\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport const addMonths = (date, offset) => {\n const newDate = cloneDate(date);\n const diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n const expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport const addWeeks = (date, offset) => {\n return addDays(date, offset * 7);\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport const addYears = (value, offset) => {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport const adjustDST = (date, hour) => {\n const newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport const cloneDate = (date) => date ? new Date(date.getTime()) : null;\n","/**\n * The number of milliseconds in one minute.\n */\nexport const MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport const MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport const MS_PER_DAY = 86400000;\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport const createDate = (year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) => {\n const date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport const dayOfWeek = (date, weekDay, direction = Direction.Forward) => {\n const newDate = cloneDate(date);\n const newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInCenturies = (start, end) => ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100);\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInDecades = (start, end) => ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10);\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInMonths = (start, end) => (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth()));\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInYears = (start, end) => (end.getFullYear() - start.getFullYear());\n","/** @hidden */\nexport const NO_TZ_INFO = 'The required {0} timezone information is not provided!';\n/** @hidden */\nexport const INVALID_TZ_STRUCTURE = 'The provided timezone information has invalid stucture!';\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\nconst flatten = (arr) => arr.reduce((a, b) => a.concat(b), []);\n/** @hidden */\nexport const formatMessage = (message, ...values) => {\n const flattenValues = flatten(values);\n return message.replace(formatRegExp, (_, index) => flattenValues[parseInt(index, 10)]);\n};\n","import { cloneDate } from './clone-date';\nimport { Day } from './day.enum';\n/**\n * A function which returns the first date of the current week.\n *\n * @param date - The initial date.\n * @param weekStartDay [default: Day.Sunday] - The first day of the week.\n * @returns - The first date of the current week.\n *\n * @example\n * ```ts-no-run\n * firstDayInWeek(new Date(2016, 0, 15)); // 2016-01-10\n * firstDayInWeek(new Date(2016, 0, 15), Day.Monday); // 2016-01-11\n * ```\n */\nexport const firstDayInWeek = (date, weekStartDay = Day.Sunday) => {\n const first = cloneDate(date);\n while (first.getDay() !== weekStartDay) {\n first.setDate(first.getDate() - 1);\n }\n return first;\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport const firstDayOfMonth = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport const firstDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100)));\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport const firstMonthOfYear = (value) => setMonth(value, 0);\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport const firstYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10)));\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport const getDate = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport const isEqualDate = (candidate, expected) => {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport const isEqual = (candidate, expected) => {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport const lastDayOfMonth = (date) => {\n const newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport const lastDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100) + 90));\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport const lastMonthOfYear = (value) => setMonth(value, 11);\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport const lastYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10) + 9));\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport const normalizeYear = (value, year) => (setYear(value, year(value.getFullYear())));\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport const prevDayOfWeek = (date, weekDay) => {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setMonth = (value, month) => {\n const day = value.getDate();\n const candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setYear = (value, year) => {\n const month = value.getMonth();\n const candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { zoneAndRule } from './zone-and-rule';\n// tslint:disable:max-line-length\n/**\n * A function which returns the abbreviated name of the timezone. You can specify an optional date for returning the timezone name at a different point in time. The corresponding UTC date is used for locating the relevant rule. Timezone names change both historically and when they reflect the Daylight Savings Time rules.\n *\n * @param timezone - The timezone name. For example, `America/Chicago`, `Europe/Sofia`.\n * @param date - A date for which to locate the zone rule. By default, the current time is used.\n *\n * @return - The abbreviated name of the timezone at the specified date or, if not set, returns now.\n *\n * @example\n * ```ts-no-run\n * import { abbrTimezone } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/Europe/Sofia';\n *\n * const dstDate = new Date('2018-04-01T00:00:00Z');\n * console.log(abbrTimezone('Europe/Sofia', dstDate)); // EEST\n *\n * const date = new Date('2018-01-01T00:00:00Z');\n * console.log(abbrTimezone('Europe/Sofia', date); // EET\n * ```\n */\n// tslint:enable:max-line-length\nexport const abbrTimezone = (timezone, date = new Date()) => {\n if (timezone === \"Etc/UTC\") {\n return 'UTC';\n }\n if (timezone === \"Etc/GMT\") {\n return 'GMT';\n }\n if (timezone === '') {\n return '';\n }\n const { zone, rule } = zoneAndRule(timezone, date);\n const base = zone[2];\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n }\n else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] === \"-\") ? '' : rule[7]);\n }\n return base;\n};\n","import { timezones } from './timezones';\nimport { ruleToDate } from './rule-to-date';\nconst CURRENT_UTC_TIME = (new Date()).getTime();\n/**\n * @hidden\n *\n * A function that finds zone rules which become applicable after a specific time.\n *\n * @param timezone - The timezone name. For example, `America/Chicago`, `Europe/Sofia`.\n * @param utcTime - The UTC time boundary for a zone rule. Defaults to the current UTC time.\n *\n * @return - Returns a zone rule for the specific zone name.\n *\n * @example\n * ```ts-no-run\n * findZone('Europe/Sofia'); //[-120,\"EU\",\"EE%sT\",null]\n * ```\n */\nexport const findRule = (zoneRule, utcTime = CURRENT_UTC_TIME, zoneOffset = 0) => {\n let rules = timezones.rules[zoneRule];\n if (!rules) {\n const time = zoneRule.split(\":\");\n let offset = 0;\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n const year = new Date(utcTime).getUTCFullYear();\n rules = rules.filter((currentRule) => {\n const from = currentRule[0];\n const to = currentRule[1];\n return from <= year && (to >= year || (from === year && to === \"only\") || to === \"max\");\n });\n rules.push(utcTime);\n rules.sort((a, b) => {\n if (typeof a !== \"number\") {\n a = Number(ruleToDate(year, a, zoneOffset));\n }\n if (typeof b !== \"number\") {\n b = Number(ruleToDate(year, b, zoneOffset));\n }\n return a - b;\n });\n const rule = rules[rules.indexOf(utcTime) - 1] || rules[rules.length - 1];\n return isNaN(rule) ? rule : null;\n};\n","import { getZoneRules } from './get-zone';\nimport { formatMessage, NO_TZ_INFO } from '../errors';\n/**\n * @hidden\n *\n * A function that finds zone rules which become applicable after specific time.\n */\nexport const findZone = (timezone, utcTime = new Date().getTime()) => {\n if (timezone === 'Etc/UTC' || timezone === 'Etc/GMT') {\n return [0, \"-\", \"UTC\", null];\n }\n const zoneRules = getZoneRules(timezone);\n let idx = zoneRules.length - 1;\n for (; idx >= 0; idx--) {\n const until = zoneRules[idx][3];\n if (until && utcTime > until) {\n break;\n }\n }\n const zone = zoneRules[idx + 1];\n if (!zone) {\n throw new Error(formatMessage(NO_TZ_INFO, timezone));\n }\n return zone;\n};\n","import { timezones } from './timezones';\nimport { formatMessage, NO_TZ_INFO } from '../errors';\n/**\n * @hidden\n *\n * A function that gets all zone rules for a specific zone.\n *\n * @param timezone - The timezone name. For example, `America/Chicago`, `Europe/Sofia`.\n *\n * @return - Returns all zone rules for the specific zone name.\n *\n * @example\n * ```ts-no-run\n * findZone('Europe/Sofia'); //[[-120,\"E-Eur\",\"EE%sT\",883526400000], [-120,\"EU\",\"EE%sT\",null]]\n * ```\n */\nexport const getZoneRules = (timezone) => {\n const zones = timezones.zones;\n if (!zones) {\n throw new Error(formatMessage(NO_TZ_INFO, timezone));\n }\n const zoneRules = zones[timezone];\n const result = typeof zoneRules === \"string\" ? zones[zoneRules] : zoneRules;\n if (!result) {\n throw new Error(formatMessage(NO_TZ_INFO, timezone));\n }\n return result;\n};\n","import { zoneAndRule } from './zone-and-rule';\n/**\n * @hidden\n *\n * A function that calculates the time offset based on zone name.\n *\n * @param timezone - The timezone name. For example, `America/Chicago`, `Europe/Sofia`.\n * @param date - A date for which the zone rule will be located.\n *\n * @return - Returns the timezone offset in minutes at the specified time.\n */\nexport const offset = (timezone, date = new Date()) => {\n if (timezone === 'Etc/UTC' || timezone === 'Etc/GMT') {\n return 0;\n }\n if (timezone === '') {\n return date.getTimezoneOffset();\n }\n const { rule, zone } = zoneAndRule(timezone, date);\n return parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n};\n","const MONTHS = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\nconst DAYS = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\nconst MS_PER_MINUTE = 60000;\n/**\n * @hidden\n *\n * A function that finds zone rules which become applicable after a specific time.\n *\n * @param year - The value of the year.\n * @param rule - A specific zone rule.\n * @param zone - The definition of the zone.\n *\n * @return - Returns an extended rule.\n *\n * @example\n * ```ts-no-run\n * ruleToDate(2018, rule); // A rule that contains {'2018': |2018 DST date| }\n * ```\n */\nexport const ruleToDate = (year, rule, zoneOffset) => {\n const month = rule[3];\n const on = rule[4];\n const time = rule[5];\n let date;\n const ruleOffset = time[3] === 'u' ? -zoneOffset * MS_PER_MINUTE : 0;\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, MONTHS[month], on, time[0], time[1], time[2]) + ruleOffset);\n }\n else if (on.indexOf('last') === 0) {\n date = new Date(Date.UTC(year, MONTHS[month] + 1, 1, time[0] - 24, time[1], time[2]) + ruleOffset);\n const targetDay = DAYS[on.substr(4, 3)];\n const ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n else if (on.indexOf('>=') >= 0) {\n date = new Date(Date.UTC(year, MONTHS[month], on.substr(5), time[0], time[1], time[2], 0) + ruleOffset);\n const targetDay = DAYS[on.substr(0, 3)];\n const ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n }\n return date;\n};\n","import { timezones } from './timezones';\n/**\n * A function that returns the list of all timezones that are loaded.\n *\n * @return - Returns the list of all timezones that are loaded.\n *\n * @example\n * ```ts-no-run\n * import '@progress/kendo-date-math/timezones/europe-berlin';\n * import '@progress/kendo-date-math/timezones/europe-sofia';\n *\n * timezoneNames(); // ['Europe/Berlin', 'Europe/Sofia']\n * ```\n */\nexport const timezoneNames = () => Object.keys(timezones.zones);\n","/**\n * @hidden\n *\n * An object which contains the information about the cities within the timezone.\n */\nexport const timezones = {\n rules: {},\n titles: {},\n zones: {}\n};\n","/**\n * A function that creates a local date from the UTC date parts of the input.\n *\n * @param date - The date value that will be converted. Only the UTC date parts are read.\n * @return Date - A local date with the UTC time parts of the supplied date.\n *\n * @example\n * ```ts-no-run\n * import { toLocalDate } from '@progress/kendo-date-math'\n *\n * const date = new Date('2016-11-05');\n * const local = toLocalDate(date);\n *\n * // For example, if the browser is in GMT+0200,\n * // the local date will be shifted 2 hours back:\n * //\n * // \"Fri Nov 04 2016 22:00:00 GMT+0200\"\n * console.log(local);\n *\n * // This is the same as the UTC parts of the input date:\n * //\n * // \"2016-11-05T22:00:00.000Z\"\n * console.log(date.toISOString());\n * ```\n */\nexport function toLocalDate(date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n}\n","import { findRule } from './find-rule';\nimport { findZone } from './find-zone';\n/**\n * @hidden\n *\n * A function that gets the information about the zone and the rule for a specific timezone.\n *\n */\nexport const zoneAndRule = (timezone, date) => {\n const utcTime = date.getTime();\n const zone = findZone(timezone, utcTime);\n return {\n rule: findRule(zone[1], utcTime, zone[0]),\n zone: zone\n };\n};\n","import { MS_PER_HOUR, MS_PER_MINUTE } from '../constants';\nimport { cloneDate } from '../clone-date';\nimport { abbrTimezone } from './abbr-timezone';\nimport { offset } from './offset';\nimport { toLocalDate } from './to-local-date';\nconst addMinutes = (date, minutes) => new Date(date.getTime() + minutes * MS_PER_MINUTE);\nconst addHours = (date, hours) => new Date(date.getTime() + hours * MS_PER_HOUR);\nconst dayAbbr = [\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\n];\nconst monthAbbr = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dev'\n];\nconst datePrefix = (utcDate) => dayAbbr[utcDate.getUTCDay()] + ' ' + monthAbbr[utcDate.getUTCMonth()];\nconst padNumber = (num, len = 2) => {\n const sign = num < 0 ? '-' : '';\n return sign + new Array(len).concat([Math.abs(num)]).join('0').slice(-len);\n};\nfunction isZoneMissingHour(date, timezone) {\n const currentOffset = offset(timezone, date);\n const prevHour = addHours(date, -1);\n const prevOffset = offset(timezone, prevHour);\n return currentOffset < prevOffset;\n}\nfunction shiftZoneMissingHour(utcDate, timezone) {\n // Adjust for missing hour during DST transition in timezone.\n const dstOffset = isZoneMissingHour(utcDate, timezone) ? 1 : 0;\n return addHours(utcDate, dstOffset);\n}\nfunction convertTimezoneUTC(utcLocal, fromTimezone, toTimezone) {\n if (fromTimezone === toTimezone) {\n return utcLocal;\n }\n const fromOffset = offset(fromTimezone, utcLocal);\n const toOffset = offset(toTimezone, utcLocal);\n const baseDiff = fromOffset - toOffset;\n const midDate = addMinutes(utcLocal, baseDiff);\n const midOffset = offset(toTimezone, midDate);\n const dstDiff = toOffset - midOffset;\n return addMinutes(utcLocal, baseDiff + dstDiff);\n}\nfunction formatOffset(tzOffset) {\n const sign = tzOffset <= 0 ? '+' : '-';\n const value = Math.abs(tzOffset);\n const hours = padNumber(Math.floor(value / 60));\n const minutes = padNumber(value % 60);\n return `GMT${sign}${hours}${minutes}`;\n}\n/**\n * Represents a local date in a specified timezone.\n *\n * The following example demonstrates how to convert a local date to the specified timezone.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n *\n * const date = new Date('2018-03-13T00:00:00Z');\n * const tzDate = ZonedDate.fromLocalDate(date, 'America/New_York');\n *\n * // If you run this example in GMT+0200,\n * // the output will be '2018-03-12T22:00:00.000Z'.\n * console.log(tzDate.toISOString());\n * ```\n *\n * The following example demonstrates how to convert between timezones.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n * import '@progress/kendo-date-math/tz/America/Los_Angeles';\n *\n * // Note the \"Z\" suffix for UTC dates.\n * const date = new Date('2018-03-12T22:00:00Z');\n *\n * const tzDate = ZonedDate.fromLocalDate(date, 'America/New_York');\n * const result = tzDate.toTimezone('America/Los_Angeles');\n *\n * // Regardless of the browser timezone\n * // the output will be '2018-03-12T15:00:00.000Z'.\n * console.log(tzDate.toUTCDate());\n * ```\n */\nexport class ZonedDate {\n /**\n * Returns a cached local date that denotes the exact time in the set timezone.\n *\n * @return Date - A local date that denotes the exact time in the set timezone.\n *\n * This property is an alternative to `toLocalDate()` that returns a cached value instead of cloning it.\n *\n * > Modifying the returned instance will corrupt the `ZonedDate` state.\n */\n get cachedLocalDate() {\n return this._localDate;\n }\n /**\n * Returns a cached `Date` instance with UTC date parts that are set to the local time in the set timezone.\n *\n * @returns Date - A `Date` with UTC date parts that are set to the local time in the set timezone.\n *\n * This property is an alternative to `toUTCDate()` that returns a cached value instead of cloning it.\n *\n * > Modifying the returned instance will corrupt the `ZonedDate` state.\n */\n get cachedUTCDate() {\n return this._utcDate;\n }\n // tslint:disable:max-line-length\n /**\n * Converts an existing date to a specified timezone.\n *\n * If the `timezone` parameter is omitted, the `ZonedDate` defaults to the timezone of the browser. This concept is known as \"floating date\" because it does not represent a particular moment in time. Instead, its actual value depends on the current timezone of the browser.\n *\n * @param date - The local date that represents the actual time instance.\n * @param timezone - The ID of the timezone that will be assumed. For example, `Europe/Sofia`.\n * @return ZonedDate - The date in the specified timezone.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n *\n * const date = new Date('2018-03-13T00:00:00');\n * const tzDate = ZonedDate.fromLocalDate(date, 'America/New_York');\n *\n * // If you run this example in GMT+0200,\n * // the output will be 'Mon Mar 12 2018 18:00:00 GMT+0200 (EET)'.\n * console.log(tzDate.toString());\n *\n * // If you run this example in UTC,\n * // the output will be '2018-03-12T22:00:00.000Z'.\n * console.log(tzDate.toISOString());\n * ```\n */\n // tslint:enable:max-line-length\n static fromLocalDate(date, timezone = '') {\n const utcDate = convertTimezoneUTC(date, 'Etc/UTC', timezone);\n const shiftZone = isZoneMissingHour(utcDate, timezone);\n const zoneOffset = offset(timezone, utcDate);\n let fixedOffset = 0;\n if (shiftZone) {\n // Adjust for the missing hour during the DST transition in the timezone.\n fixedOffset = zoneOffset > 0 ? -1 : 1;\n }\n const adjDate = addHours(utcDate, fixedOffset);\n return ZonedDate.fromUTCDate(adjDate, timezone);\n }\n // tslint:disable:max-line-length\n /**\n * Creates a date in a specific timezone from the UTC date parts of the supplied `Date`.\n *\n * If the `timezone` parameter is omitted, the `ZonedDate` defaults to the timezone of the browser. This concept is known as \"floating date\" because it does not represent a particular moment in time. Instead, its actual value depends on the current timezone of the browser.\n *\n * @param date - The UTC date that represents the time in the target zone. This time is not the actual time instant in UTC.\n * @param timezone - The ID of the timezone that will be assumed. For example, `Europe/Sofia`.\n * @return ZonedDate - The date in the specified timezone.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n *\n * // Note the \"Z\" suffix for UTC dates.\n * const date = new Date('2018-03-12T18:00:00Z');\n *\n * // Alternative syntax using Date.UTC\n * // const date = new Date(Date.UTC(2018, 2, 12, 18, 0));\n *\n * const tzDate = ZonedDate.fromUTCDate(date, 'America/New_York');\n *\n * // Regardless of the browser timezone\n * // the output will be 'Mon Mar 12 2018 18:00:00 GMT+0200 (EET)'.\n * console.log(tzDate.toString());\n *\n * // Regardless of the browser timezone\n * // the output in UTC will be '2018-03-12T22:00:00.000Z'.\n * console.log(tzDate.toISOString());\n * ```\n */\n // tslint:enable:max-line-length\n static fromUTCDate(utcDate, timezone = '') {\n return new ZonedDate(utcDate, timezone);\n }\n /**\n * Returns a local date that denotes the exact time in the set timezone.\n *\n * @return Date - A local date that denotes the exact time in the set timezone.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n *\n * // Note the \"Z\" suffix for UTC dates.\n * const date = new Date('2018-03-12T18:00:00Z');\n * const tzDate = ZonedDate.fromUTCDate(date, 'America/New_York');\n *\n * // The local date represents the same moment in time as the ZonedDate:\n * // `2018-03-12T22:00:00.000Z`.\n * console.log(tzDate.toLocalDate().toISOString());\n *\n * // The local date will apply the timezone of the browser. For example,\n * // `Tue Mar 13 2018 00:00:00 GMT+0200 (Eastern European Standard Time)`.\n * console.log(tzDate.toLocalDate().toString())\n * ```\n */\n toLocalDate() {\n return cloneDate(this._localDate);\n }\n /**\n * Returns a `Date` instance with UTC date parts that are set to the local time in the set timezone.\n *\n * @returns Date - A `Date` with UTC date parts that are set to the local time in the set timezone.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n *\n * // Note the \"Z\" suffix for UTC dates.\n * const date = new Date('2018-03-12T18:00:00Z');\n * const tzDate = ZonedDate.fromUTCDate(date, 'America/New_York');\n *\n * // Regardless of the browser timezone\n * // the output will be '2018-03-12T18:00:00.000Z'.\n * console.log(tzDate.toUTCDate());\n * ```\n */\n toUTCDate() {\n return cloneDate(this._utcDate);\n }\n /**\n * Converts the date to the specified timezone.\n *\n * @param toTimezone - The timezone to which the values will be converted. For example, `America/Los_Angeles`.\n * @returns ZonedDate - The resulting zoned date.\n *\n * @example\n * ```ts-no-run\n * import { ZonedDate } from '@progress/kendo-date-math';\n * import '@progress/kendo-date-math/tz/America/New_York';\n * import '@progress/kendo-date-math/tz/America/Los_Angeles';\n *\n * // Note the \"Z\" suffix for UTC dates.\n * const date = new Date('2018-03-12T22:00:00Z');\n *\n * const tzDate = ZonedDate.fromLocalDate(date, 'America/New_York');\n * const result = tzDate.toTimezone('America/Los_Angeles');\n *\n * // Regardless of the browser timezone\n * // the output will be '2018-03-12T15:00:00.000Z'.\n * console.log(tzDate.toUTCDate());\n * ```\n */\n toTimezone(toTimezone) {\n if (this.timezone === toTimezone) {\n return this.clone();\n }\n const tzOffset = offset(this.timezone, this._utcDate);\n const date = addMinutes(this._utcDate, tzOffset);\n return ZonedDate.fromLocalDate(date, toTimezone);\n }\n /**\n * Returns a new instance that represents the same date.\n *\n * @returns Date - A copy of the instance of the current zoned date.\n */\n clone() {\n return ZonedDate.fromUTCDate(this._utcDate, this.timezone);\n }\n // tslint:disable:max-line-length\n /**\n * Adds the specified number of days and returns a new instance with the resulting date in the same timezone.\n *\n * @param days - The number of days that will be added.\n * @returns ZonedDate - The resulting date.\n */\n // tslint:enable:max-line-length\n addDays(days) {\n const newDate = new Date(this._utcDate.getTime());\n newDate.setUTCDate(newDate.getUTCDate() + days);\n return ZonedDate.fromUTCDate(newDate, this.timezone);\n }\n // tslint:disable:max-line-length\n /**\n * Adds the specified number of milliseconds and returns a new instance with the resulting date in the same timezone.\n *\n * The method compensates for DST transitions and ensures that the resulting date occurs exactly after the set amount of time in the timezone.\n *\n * @param milliseconds - The number of days that will be added.\n * @returns ZonedDate - The resulting date.\n */\n // tslint:enable:max-line-length\n addTime(milliseconds) {\n const utcDate = new Date(this._utcDate.getTime());\n const utcMid = shiftZoneMissingHour(utcDate, this.timezone);\n utcMid.setTime(utcMid.getTime() + milliseconds);\n const utcResult = shiftZoneMissingHour(utcMid, this.timezone);\n return ZonedDate.fromUTCDate(utcResult, this.timezone);\n }\n // tslint:disable:max-line-length\n /**\n * Returns a new instance of the same zoned date having its time parts set to `00:00:00.000`.\n *\n * @returns ZonedDate - The same date having its time parts set to `00:00:00.000`.\n */\n // tslint:enable:max-line-length\n stripTime() {\n const date = this._utcDate;\n const ticks = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n return ZonedDate.fromUTCDate(new Date(ticks), this.timezone);\n }\n /**\n * @hidden\n */\n getTime() {\n return this._localDate.getTime();\n }\n /**\n * @hidden\n */\n getTimezoneOffset() {\n return this.timezoneOffset;\n }\n /**\n * @hidden\n */\n getFullYear() {\n return this._utcDate.getUTCFullYear();\n }\n /**\n * @hidden\n */\n getMonth() {\n return this._utcDate.getUTCMonth();\n }\n /**\n * @hidden\n */\n getDate() {\n return this._utcDate.getUTCDate();\n }\n /**\n * @hidden\n */\n getDay() {\n return this._utcDate.getUTCDay();\n }\n /**\n * @hidden\n */\n getHours() {\n return this._utcDate.getUTCHours();\n }\n /**\n * @hidden\n */\n getMinutes() {\n return this._utcDate.getUTCMinutes();\n }\n /**\n * @hidden\n */\n getSeconds() {\n return this._utcDate.getUTCSeconds();\n }\n /**\n * @hidden\n */\n getMilliseconds() {\n return this._utcDate.getUTCMilliseconds();\n }\n // The local date UTC parts represent actual UTC time\n /**\n * @hidden\n */\n getUTCDate() {\n return this._localDate.getUTCDate();\n }\n /**\n * @hidden\n */\n getUTCDay() {\n return this._localDate.getUTCDay();\n }\n /**\n * @hidden\n */\n getUTCFullYear() {\n return this._localDate.getUTCFullYear();\n }\n /**\n * @hidden\n */\n getUTCHours() {\n return this._localDate.getUTCHours();\n }\n /**\n * @hidden\n */\n getUTCMilliseconds() {\n return this._localDate.getUTCMilliseconds();\n }\n /**\n * @hidden\n */\n getUTCMinutes() {\n return this._localDate.getUTCMinutes();\n }\n /**\n * @hidden\n */\n getUTCMonth() {\n return this._localDate.getUTCMonth();\n }\n /** @hidden */\n getUTCSeconds() {\n return this._localDate.getUTCSeconds();\n }\n /** @hidden */\n setTime(time) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setMilliseconds(ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCMilliseconds(ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setSeconds(sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCSeconds(sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setMinutes(min, sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCMinutes(min, sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setHours(hours, min, sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCHours(hours, min, sec, ms) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setDate(date) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCDate(date) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setMonth(month, date) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCMonth(month, date) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setFullYear(year, month, date) {\n throw new Error(\"Method not implemented.\");\n }\n /** @hidden */\n setUTCFullYear(year, month, date) {\n throw new Error(\"Method not implemented.\");\n }\n /**\n * @hidden\n */\n toISOString() {\n return this._localDate.toISOString();\n }\n /**\n * @hidden\n */\n toJSON() {\n return this._localDate.toJSON();\n }\n /**\n * @hidden\n */\n toString() {\n const dateString = datePrefix(this._utcDate);\n const timeString = this.toTimeString();\n return `${dateString} ${this.getDate()} ${this.getFullYear()} ${timeString}`;\n }\n /** @hidden */\n toDateString() {\n return toLocalDate(this._utcDate).toDateString();\n }\n /** @hidden */\n toTimeString() {\n const hours = padNumber(this.getHours());\n const minutes = padNumber(this.getMinutes());\n const seconds = padNumber(this.getSeconds());\n const time = `${hours}:${minutes}:${seconds}`;\n const tzOffset = formatOffset(this.timezoneOffset);\n let abbrev = abbrTimezone(this.timezone, this._utcDate);\n if (abbrev) {\n abbrev = ` (${abbrev})`;\n }\n return `${time} ${tzOffset}${abbrev}`;\n }\n toLocaleString(locales, options) {\n return this._localDate.toLocaleString(locales, options);\n }\n toLocaleDateString(locales, options) {\n return this._localDate.toLocaleDateString(locales, options);\n }\n toLocaleTimeString(locales, options) {\n return this._localDate.toLocaleTimeString(locales, options);\n }\n /** @hidden */\n toUTCString() {\n return this.toTimezone('Etc/UTC').toString();\n }\n [Symbol.toPrimitive](hint) {\n if (hint === 'string' || hint === 'default') {\n return this.toString();\n }\n return this._localDate.getTime();\n }\n /** @hidden */\n valueOf() {\n return this.getTime();\n }\n /** @hidden */\n getVarDate() {\n throw new Error('Not implemented.');\n }\n /** @hidden */\n format(_) {\n throw new Error('Not implemented.');\n }\n /** @hidden */\n formatUTC(_) {\n throw new Error('Not implemented.');\n }\n // The constructor is aliased as a static fromUTCDate method\n // to clarify the meaning of the utcDate parameter.\n //\n // It can be confused for a local date time while it is in fact\n // treated as a UTC date that represents the local date in the timezone.\n constructor(utcDate, timezone) {\n this._utcDate = cloneDate(utcDate);\n this.timezone = timezone;\n const tzOffset = offset(timezone, utcDate);\n this.timezoneOffset = tzOffset;\n let localDate = shiftZoneMissingHour(utcDate, timezone);\n this._localDate = convertTimezoneUTC(localDate, timezone, 'Etc/UTC');\n }\n}\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nconst moveDateToWeekStart = (date, weekStartDay) => {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nconst calcWeekInYear = (date, weekStartDay) => {\n const firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n const newDate = moveDateToWeekStart(date, weekStartDay);\n const diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n const days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport const weekInYear = (date, weekStartDay = Day.Monday) => {\n date = getDate(date);\n const prevWeekDate = addDays(date, -7);\n const nextWeekDate = addDays(date, 7);\n const weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","export { default as align } from './alignment/align';\nexport { default as vAlign } from './alignment/v-align';\nexport { default as stack } from './alignment/stack';\nexport { default as vStack } from './alignment/v-stack';\nexport { default as wrap } from './alignment/wrap';\nexport { default as vWrap } from './alignment/v-wrap';\nexport { default as fit } from './alignment/fit';","import translateToPoint from './translate-to-point';\nimport alignStart from './align-start';\n\nexport default function alignElements(elements, rect, alignment, axis, sizeField) {\n for (let idx = 0; idx < elements.length; idx++) {\n const bbox = elements[idx].clippedBBox();\n if (bbox) {\n const point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nimport alignElements from './align-elements';\n\nexport default function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n}","export default function createStackElements(elements) {\n const stackElements = [];\n\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n}","import createTransform from '../geometry/transform';\n\nexport default function fit(element, rect) {\n const bbox = element.clippedBBox();\n if (bbox) {\n const elementSize = bbox.size;\n const rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n const scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n const transform = element.transform() || createTransform();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n}","import Point from '../geometry/point';\nimport translateToPoint from './translate-to-point';\n\nexport default function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n const origin = new Point();\n let previousBBox = elements[0].bbox;\n\n for (let idx = 1; idx < elements.length; idx++) {\n let element = elements[idx].element;\n let bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n}","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n const transofrm = element.transform() || createTransform();\n const matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import alignElements from './align-elements';\n\nexport default function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n}","import wrapElements from './wrap-elements';\n\nexport default function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n}","import translateToPoint from './translate-to-point';\nimport stackElements from './stack-elements';\n\nfunction getStacks(elements, rect, sizeField) {\n const maxSize = rect.size[sizeField];\n const stacks = [];\n let stack = [];\n let stackSize = 0;\n let element, bbox;\n\n const addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (let idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n let size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n}\n\nexport default function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n const stacks = getStacks(elements, rect, sizeField);\n const origin = rect.origin.clone();\n const result = [];\n\n for (let idx = 0; idx < stacks.length; idx++) {\n let stack = stacks[idx];\n let startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (let elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n}","import wrapElements from './wrap-elements';\n\nexport default function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n}","export { default as Animation } from './animations/animation';\nexport { default as AnimationFactory } from './animations/animation-factory';","import { Class } from '../common';\n\nlet instance;\n\nclass AnimationFactory extends Class {\n static get current() {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [];\n }\n\n register(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n }\n\n create(element, options) {\n const items = this._items;\n let match;\n\n if (options && options.type) {\n const type = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n }\n}\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nclass Animation extends Class {\n static create(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n }\n\n get options() {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n }\n\n set options(value) {\n this._options = value;\n }\n\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n setup() {}\n step() {}\n\n play() {\n const options = this.options;\n const { duration, delay = 0 } = options;\n const easing = easingFunctions[options.easing];\n const start = now() + delay;\n const finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(() => {\n const loop = () => {\n if (this._stopped) {\n return;\n }\n\n const wallTime = now();\n\n const time = limitValue(wallTime - start, 0, duration);\n const position = time / duration;\n const easingPosition = easing(position, time, 0, 1, duration);\n\n this.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this.abort();\n }\n };\n\n loop();\n }, delay);\n }\n }\n\n abort() {\n this._stopped = true;\n }\n\n destroy() {\n this.abort();\n }\n}\n\nexport default Animation;\n","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n let s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","export { default as Surface } from './canvas/surface';\n\nexport { default as RootNode } from './canvas/root-node';\nexport { default as Node } from './canvas/node';\nexport { default as GroupNode } from './canvas/group-node';\nexport { default as ArcNode } from './canvas/arc-node';\nexport { default as CircleNode } from './canvas/circle-node';\nexport { default as RectNode } from './canvas/rect-node';\nexport { default as ImageNode } from './canvas/image-node';\nexport { default as TextNode } from './canvas/text-node';\nexport { default as PathNode } from './canvas/path-node';\nexport { default as MultiPathNode } from './canvas/multi-path-node';","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass ArcNode extends PathNode {\n renderPoints(ctx) {\n const path = this.srcElement.toPath();\n renderPath(ctx, path);\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n renderPoints(ctx) {\n const { center, radius } = this.srcElement.geometry();\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n }\n}\n\nexport default CircleNode;\n","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n const defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n let exportRoot = group;\n const bbox = group.clippedBBox();\n\n\n if (bbox) {\n const origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n const size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n const surfaceOptions = Object.assign(defaults, options);\n\n const container = document.createElement(\"div\");\n const style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n const surface = new Surface(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n const promise = surface.image();\n const destroy = () => {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n}","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nclass GroupNode extends traversable(Node, \"childNodes\") {\n renderTo(ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n let child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n }\n}\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nclass ImageNode extends PathNode {\n constructor(srcElement, cors) {\n super(srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n const img = this.img = new Image();\n\n if (cors && !(/^data:/i.test(srcElement.src()))) {\n img.crossOrigin = cors;\n }\n\n img.src = srcElement.src();\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n renderTo(ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n super.optionsChange(e);\n }\n }\n\n onLoad() {\n this.loading.resolve();\n this.invalidate();\n }\n\n onError() {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n }\n\n drawImage(ctx) {\n const rect = this.srcElement.rect();\n const topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass MultiPathNode extends PathNode {\n renderPoints(ctx) {\n const paths = this.srcElement.paths;\n for (let i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n }\n}\n\nexport default MultiPathNode;\n","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nclass Node extends BaseNode {\n constructor(srcElement) {\n super(srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n initClip() {\n const clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n }\n\n clear() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n super.clear();\n }\n\n clearClip() {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n }\n\n setClip(ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n super.optionsChange(e);\n }\n\n setTransform(ctx) {\n if (this.srcElement) {\n const transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n }\n\n loadElements(elements, pos, cors) {\n for (let i = 0; i < elements.length; i++) {\n let srcElement = elements[i];\n let children = srcElement.children;\n\n let childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n }\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n }\n\n setOpacity(ctx) {\n if (this.srcElement) {\n const opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n }\n\n globalAlpha(ctx, value) {\n let opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n }\n\n visible() {\n const src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n }\n}\n\nexport default Node;","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (let idx = 0; idx < stops.length; idx++) {\n let stop = stops[idx];\n let color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nclass PathNode extends Node {\n\n renderTo(ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n }\n\n setFill(ctx) {\n const fill = this.srcElement.options.fill;\n let hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n }\n\n setGradientFill(ctx, fill) {\n const bbox = this.srcElement.rawBBox();\n let gradient;\n\n if (fill instanceof LinearGradient) {\n let start = fill.start();\n let end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n let center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n }\n\n setStroke(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n }\n\n dashType() {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n }\n\n setLineDash(ctx) {\n const dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n }\n\n setLineCap(ctx) {\n const dashType = this.dashType();\n const stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n }\n\n setLineJoin(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n }\n\n renderPoints(ctx, path) {\n renderPath(ctx, path);\n }\n}\n\nexport default PathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nclass RectNode extends PathNode {\n renderPoints(ctx) {\n const geometry = this.srcElement.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n const { origin, size } = geometry;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n super.renderPoints(ctx, Path.fromRect(geometry));\n }\n }\n}\n\nexport default RectNode;\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nconst FRAME_DELAY = 1000 / 60;\n\nclass RootNode extends traversable(GroupNode, \"childNodes\") {\n constructor(canvas, size) {\n super();\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n const invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(() => {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n destroy() {\n super.destroy();\n this.canvas = null;\n this.ctx = null;\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n }\n\n _rescale(scale) {\n const { canvas, size } = this;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n }\n\n _devicePixelRatio() {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n }\n\n _invalidate(options) {\n if (!this.ctx) {\n return;\n }\n\n const fixedScale = options && options.fixedScale;\n const scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n }\n}\n\nexport default RootNode;\n","import { defined } from '../util';\n\nclass SurfaceCursor {\n\n constructor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n }\n\n clear() {\n this._resetCursor();\n }\n\n destroy() {\n this._resetCursor();\n delete this.element;\n }\n\n _mouseenter(e) {\n const cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n }\n\n _mouseleave() {\n this._resetCursor();\n }\n\n _shapeCursor(e) {\n let shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n }\n\n _getCursor() {\n if (this.element) {\n return this.element.style.cursor;\n }\n }\n\n _setCursor(cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n }\n\n _resetCursor() {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n }\n}\n\nexport default SurfaceCursor;\n\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nclass Surface extends BaseSurface {\n get type() {\n return \"canvas\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this.element.innerHTML = this._template(this);\n\n const canvas = this.element.firstElementChild;\n const size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n destroy() {\n super.destroy();\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n }\n\n clear() {\n super.clear();\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n }\n\n eventTarget(e) {\n if (this._searchTree) {\n const point = this._surfacePoint(e);\n const shape = this._searchTree.pointShape(point);\n return shape;\n }\n }\n\n image() {\n const { _root: root, _rootElement: rootElement } = this;\n const loadingStates = [];\n\n root.traverse((childNode) => {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n const promise = createPromise();\n const resolveDataURL = () => {\n root._invalidate({ fixedScale: true });\n\n try {\n const data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n }\n\n suspendTracking() {\n super.suspendTracking();\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n }\n\n resumeTracking() {\n super.resumeTracking();\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n const childNodes = this._root.childNodes;\n const rootElements = [];\n for (let idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n }\n\n _resize() {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n }\n\n _template() {\n return \"\";\n }\n\n _enableTracking() {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n super._enableTracking();\n }\n\n _trackMouse(e) {\n if (this._suspendedTracking) {\n return;\n }\n\n const shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n const currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n }\n}\n\nexport default Surface;\n","import PathNode from './path-node';\n\nclass TextNode extends PathNode {\n renderTo(ctx) {\n const text = this.srcElement;\n const pos = text.position();\n const size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n }\n}\n\n\nexport default TextNode;\n","\nexport default function renderPath(ctx, path) {\n const segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n let segment = segments[0];\n let anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (let i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n let prevSeg = segments[i - 1];\n let prevOut = prevSeg.controlOut();\n let controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}","let animationFrameProxy = (callback) => {\n const wnd = typeof window !== \"undefined\" ? window : {};\n const animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = callback => animationFrame.call(wnd, callback);\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","export default class Class {\n // Empty base class needed for compatibility with Kendo UI for jQuery\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nconst DARK_TRESHOLD = 180;\n\nclass Color extends Class {\n constructor(value) {\n super();\n\n if (arguments.length === 1) {\n const formats = Color.formats;\n const resolvedColor = this.resolveColor(value);\n\n for (let idx = 0; idx < formats.length; idx++) {\n const formatRegex = formats[idx].re;\n const processor = formats[idx].process;\n const parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n const channels = processor(parts);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n toHex() {\n const pad = this.padDigit;\n const r = this.r.toString(16);\n const g = this.g.toString(16);\n const b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n }\n\n resolveColor(value) {\n let color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n }\n\n normalizeByte(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n }\n\n padDigit(value) {\n return (value.length === 1) ? \"0\" + value : value;\n }\n\n brightness(value) {\n const round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n }\n\n percBrightness() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n\n isDark() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n\n static fromBytes(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n }\n\n static fromRGB(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n }\n\n static fromHSV(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n }\n\n static fromHSL(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n }\n}\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","const namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nconst browser = support.browser;\n\nlet matchNamedColor = (color) => {\n const colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n const regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = (color) => regexp.exec(color);\n\n return regexp.exec(color);\n};\n\nclass BaseColor extends Class {\n constructor() { super(); }\n toHSV() { return this; }\n\n toRGB() { return this; }\n\n toHex(options) { return this.toBytes().toHex(options); }\n\n toBytes() { return this; }\n\n toCss(options) { return \"#\" + this.toHex(options); }\n\n toCssRgba() {\n const rgb = this.toBytes();\n return `rgba(${ rgb.r }, ${ rgb.g }, ${ rgb.b }, ${ parseFloat((Number(this.a)).toFixed(3)) })`;\n }\n\n toDisplay() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n }\n\n equals(c) {\n return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n }\n\n diff(other) {\n if (other === null) {\n return NaN;\n }\n\n const c1 = this.toBytes();\n const c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n }\n\n clone() {\n let c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n}\n\nclass RGB extends BaseColor {\n constructor(r, g, b, a) {\n super();\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n toHSV() {\n const { r, g, b } = this;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n const v = max;\n let h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n }\n\n toHSL() {\n const { r, g, b } = this;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n }\n\n toBytes() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n}\n\nclass Bytes extends RGB {\n constructor(r, g, b, a) {\n super(Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n toRGB() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toHex(options) {\n let value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n }\n\n toBytes() {\n return this;\n }\n}\n\nfunction hex(n, width, pad = \"0\") {\n let result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nclass HSV extends BaseColor {\n constructor(h, s, v, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n toRGB() {\n let { h, s, v } = this;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nclass HSL extends BaseColor {\n constructor(h, s, l, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n toRGB() {\n let h = this.h / 360;\n let s = this.s / 100;\n let l = this.l / 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nfunction hue2rgb(p, q, s) {\n let t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n let m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n let color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","const ampRegExp = /&/g;\nconst ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n const console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import Class from './class';\n\nclass Observable extends Class {\n constructor() {\n super();\n\n this._events = {};\n }\n\n bind(eventName, handlers, one) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n const length = eventNames.length;\n\n if (handlers === undefined) {\n for (let field in eventName) {\n this.bind(field, eventName[field]);\n }\n return this;\n }\n\n for (let idx = 0; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n let handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n const original = handler;\n handler = () => { // eslint-disable-line no-loop-func\n this.unbind(eventName, handler);\n original.apply(this, arguments);\n };\n handler.original = original;\n }\n let events = this._events[eventName] = this._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return this;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n\n for (let idx = 0, length = eventNames.length; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n const handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n const events = this._events[eventName] = this._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n }\n\n trigger(eventName, e = {}) {\n let events = this._events[eventName];\n\n if (events) {\n const length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (let idx = 0; idx < length; idx++) {\n events[idx].call(this, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n const events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (let idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n }\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","// XXX: the following will not work with IE9 (requires server proxy).\nexport default function saveAs(options) {\n const { dataURI, fileName } = options;\n let data = dataURI;\n\n if (typeof data == \"string\" && window.Blob) {\n const parts = data.split(\";base64,\");\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n data = new Blob([ array.buffer ], { type: contentType });\n }\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(data, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.download = fileName;\n data = link.href = URL.createObjectURL(data);\n const e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n link.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(data);\n });\n }\n}","function matchUserAgent(userAgent) {\n const browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n let browser = {};\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n const match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nlet browser = null;\n\nconst support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n let lastExecTime = 0;\n let timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n const throttled = function() {\n const elapsed = now() - lastExecTime;\n const args = arguments;\n\n const exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import { Class } from '../common';\n\nclass BaseNode extends Class {\n constructor(srcElement) {\n super();\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n destroy() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.childNodes[i].destroy();\n }\n\n this.parent = null;\n }\n\n load() {}\n\n observe() {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n }\n\n append(node) {\n this.childNodes.push(node);\n node.parent = this;\n }\n\n insertAt(node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n }\n\n remove(index, count) {\n const end = index + count;\n for (let i = index; i < end; i++) {\n this.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n }\n\n removeSelf() {\n this.clear();\n this.destroy();\n }\n\n clear() {\n this.remove(0, this.childNodes.length);\n }\n\n invalidate() {\n if (this.parent) {\n this.parent.invalidate();\n }\n }\n\n geometryChange() {\n this.invalidate();\n }\n\n optionsChange() {\n this.invalidate();\n }\n\n childrenChange(e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n }\n}\n\nexport default BaseNode;","const DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nconst SOLID = \"solid\";\nconst BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","import { Class } from '../common';\n\nclass HasObservers extends Class {\n observers() {\n this._observers = this._observers || [];\n return this._observers;\n }\n\n addObserver(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n }\n\n removeObserver(element) {\n const observers = this.observers();\n const index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n }\n\n trigger(methodName, event) {\n const observers = this._observers;\n\n if (observers && !this._suspended) {\n for (let idx = 0; idx < observers.length; idx++) {\n let observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n }\n\n optionsChange(e = {}) {\n e.element = this;\n this.trigger(\"optionsChange\", e);\n }\n\n geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n\n suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n }\n\n resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n }\n\n _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n}\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nconst toString = {}.toString;\n\nclass OptionsStore extends HasObservers {\n constructor(options, prefix = \"\") {\n super();\n\n this.prefix = prefix;\n\n for (let field in options) {\n let member = options[field];\n member = this._wrap(member, field);\n this[field] = member;\n }\n }\n\n get(field) {\n const parts = field.split(\".\");\n let result = this;\n\n while (parts.length && result) {\n let part = parts.shift();\n result = result[part];\n }\n\n return result;\n }\n\n set(field, value) {\n const current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n }\n\n _set(field, value) {\n const composite = field.indexOf(\".\") >= 0;\n let parentObj = this;\n let fieldName = field;\n\n if (composite) {\n const parts = fieldName.split(\".\");\n let prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n let obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n }\n\n _clear(field) {\n const current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n }\n\n _wrap(object, field) {\n const type = toString.call(object);\n let wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n }\n}\n\nexport default OptionsStore;\n","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nconst events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nclass Surface extends Observable {\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n draw(element) {\n this._visual.children.push(element);\n }\n\n clear() {\n this._visual.children = [];\n }\n\n destroy() {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n }\n\n eventTarget(e) {\n let domNode = eventElement(e);\n let node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n }\n\n exportVisual() {\n return this._visual;\n }\n\n getSize() {\n return elementSize(this.element);\n }\n\n currentSize(size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n }\n\n setSize(size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n }\n\n size(value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n }\n\n suspendTracking() {\n this._suspendedTracking = true;\n }\n\n resumeTracking() {\n this._suspendedTracking = false;\n }\n\n _enableTracking() {}\n\n _resize() {}\n\n _handler(eventName) {\n return (e) => {\n const node = this.eventTarget(e);\n if (node && !this._suspendedTracking) {\n this.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n }\n\n _elementOffset() {\n const element = this.element;\n const padding = elementPadding(element);\n const { left, top } = elementOffset(element);\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n }\n\n _surfacePoint(e) {\n const offset = this._elementOffset();\n const coord = eventCoordinates(e);\n const x = coord.x - offset.left;\n const y = coord.y - offset.top;\n\n const inverseTransform = elementScale(this.element).invert();\n const point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n }\n}\n\nexport default Surface;\n","export { default as HasObservers } from './core/has-observers';\n\nexport * from './shapes';\nexport * from './alignment';\nexport * from './gradients';\nexport * from './animations';\n\nexport { default as PathParser } from './parsing/path-parser';\nexport { default as parsePath } from './parsing/parse-path';\nexport { default as BaseNode } from './core/base-node';\nexport { default as OptionsStore } from './core/options-store';\nexport { default as Surface } from './surface';\nexport { default as SurfaceFactory } from './surface-factory';\n\nimport * as svg from './svg';\nimport * as canvas from './canvas';\nimport * as util from './util';\n\nexport { default as exportImage } from './canvas/export-image';\nexport { default as exportSVG } from './svg/export-svg';\nexport { default as QuadNode } from './search/quad-node';\nexport { default as ShapesQuadTree } from './search/shapes-quad-tree';\n\nexport { svg, canvas, util };\n","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nconst MAX_INTERVAL = 45;\nconst pow = Math.pow;\nconst accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nclass Arc extends withAccessors(HasObservers, accessors) {\n constructor(center = new Point(), options = {}) {\n super();\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n pointAt(angle) {\n const center = this.center;\n const radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n }\n\n curvePoints() {\n const startAngle = this.startAngle;\n const dir = this.anticlockwise ? -1 : 1;\n const curvePoints = [ this.pointAt(startAngle) ];\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n const subIntervalAngle = intervalAngle / subIntervalsCount;\n let currentAngle = startAngle;\n let transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (let i = 1; i <= subIntervalsCount; i++) {\n const nextAngle = currentAngle + dir * subIntervalAngle;\n const points = this._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n }\n\n bbox(matrix) {\n const interval = this._arcInterval();\n const startAngle = interval.startAngle;\n const endAngle = interval.endAngle;\n const extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n const extremeX = deg(extremeAngles.x);\n const extremeY = deg(extremeAngles.y);\n const endPoint = this.pointAt(endAngle).transformCopy(matrix);\n let currentAngleX = bboxStartAngle(extremeX, startAngle);\n let currentAngleY = bboxStartAngle(extremeY, startAngle);\n let currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n let minPoint = Point.min(currentPoint, endPoint);\n let maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n let currentPointX;\n if (currentAngleX < endAngle) {\n currentPointX = this.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n let currentPointY;\n if (currentAngleY < endAngle) {\n currentPointY = this.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _arcInterval() {\n let { startAngle, endAngle, anticlockwise } = this;\n\n if (anticlockwise) {\n let oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n\n _intervalCurvePoints(startAngle, endAngle, transformation) {\n const p1 = this.pointAt(startAngle);\n const p2 = this.pointAt(endAngle);\n const p1Derivative = this._derivativeAt(startAngle);\n const p2Derivative = this._derivativeAt(endAngle);\n const t = (rad(endAngle) - rad(startAngle)) / 3;\n const cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n const cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n }\n\n _derivativeAt(angle) {\n const radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n }\n\n containsPoint(point) {\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const { center, radiusX, radiusY } = this;\n const distance = center.distanceTo(point);\n const angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n const pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n const startPoint = this.pointAt(this.startAngle).round(PRECISION);\n const endPoint = this.pointAt(this.endAngle).round(PRECISION);\n const intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n let containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n let angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n let inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n }\n\n _isOnPath(point, width) {\n const interval = this._arcInterval();\n const center = this.center;\n let angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n const inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n\n static fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n const arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n }\n}\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n const cos = round((x - cx) / rx, 3);\n const sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n let { x1, y1, x2, y2, rx, ry, largeArc, swipe, rotation = 0 } = parameters;\n\n const radians = rad(rotation);\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n const xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n const yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n const sign = largeArc !== swipe ? 1 : -1;\n\n const xt2 = Math.pow(xT, 2);\n const yt2 = Math.pow(yT, 2);\n let rx2 = Math.pow(rx, 2);\n let ry2 = Math.pow(ry, 2);\n\n let delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n let constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n const cxT = constT * (rx * yT) / ry;\n const cyT = - constT * (ry * xT) / rx;\n\n const cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n const cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n const uX = (xT - cxT) / rx;\n const uY = (yT - cyT) / ry;\n const vX = -(xT + cxT) / rx;\n const vY = -(yT + cyT) / ry;\n\n const startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n const angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n let angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n let endAngle = startAngle + angle;\n const signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n let startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nconst PI_DIV_2 = Math.PI / 2;\n\nclass Circle extends withAccessors(HasObservers, [ \"radius\" ]) {\n constructor(center = new Point(), radius = 0) {\n super();\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n equals(other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n }\n\n clone() {\n return new Circle(this.center.clone(), this.radius);\n }\n\n pointAt(angle) {\n return this._pointAt(rad(angle));\n }\n\n bbox(matrix) {\n const extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n let minPoint = Point.maxPoint();\n let maxPoint = Point.minPoint();\n\n for (let i = 0; i < 4; i++) {\n let currentPointX = this._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n let currentPointY = this._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n let currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _pointAt(angle) {\n const { center, radius } = this;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n }\n\n containsPoint(point) {\n const { center, radius } = this;\n const inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n }\n\n _isOnPath(point, width) {\n const { center, radius } = this;\n const pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n}\n\nexport default Circle;\n","const PRECISION = 10;\n\nexport { PRECISION };","export default function calculateCurveAt(t, field, points) {\n const t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance = PRECISION) {\n return round(Math.abs(a - b), tolerance) === 0;\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nclass ComplexNumber extends Class {\n\n constructor(real = 0, img = 0) {\n super();\n\n this.real = real;\n this.img = img;\n }\n\n add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n }\n\n addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n }\n\n negate() {\n return new ComplexNumber(-this.real, -this.img);\n }\n\n multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n }\n\n multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n }\n\n nthRoot(n) {\n const rad = Math.atan2(this.img, this.real);\n const r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n const nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n }\n\n equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n }\n\n isReal() {\n return this.img === 0;\n }\n}\n\nexport default ComplexNumber;","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n const polynomial = toCubicPolynomial(points, \"x\");\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n let rayIntersection, intersectsRay;\n let count = 0;\n for (let i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n let extremeX = 0;\n let extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n const polynomial = toCubicPolynomial(points, rootField);\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n let intersection;\n\n for (let idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n const angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n const rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n const s1x = p1.x - p0.x;\n const s2x = p3.x - p2.x;\n const s1y = p1.y - p0.y;\n const s2y = p3.y - p2.y;\n const nx = p0.x - p2.x;\n const ny = p0.y - p2.y;\n const d = s1x * s2y - s2x * s1y;\n const s = (s1x * ny - s1y * nx) / d;\n const t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n let intersects;\n if (a.x !== b.x) {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n const inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n const squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n const p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n const q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n const Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n const i = new ComplexNumber(0,1);\n const b3a = -b / (3 * a);\n let x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n const result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nclass Matrix extends Class {\n\n constructor(a = 0, b = 0, c = 0, d = 0, e = 0, f = 0) {\n super();\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n multiplyCopy(matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n }\n\n invert() {\n const { a, b, c: d, d: e, e: g, f: h } = this;\n const det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n }\n\n clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n }\n\n equals(other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n }\n\n round(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n }\n\n toArray(precision) {\n const result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n }\n\n toString(precision, separator = \",\") {\n return this.toArray(precision).join(separator);\n }\n\n static translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n }\n\n static unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n static rotate(angle, x, y) {\n const matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n }\n\n static scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n }\n}\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nclass Point extends withAccessors(HasObservers, [ \"x\", \"y\" ]) {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n equals(other) {\n return other && other.x === this.x && other.y === this.y;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n }\n\n translate(x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n }\n\n translateWith(point) {\n return this.translate(point.x, point.y);\n }\n\n move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n }\n\n scale(scaleX, scaleY = scaleX) {\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n }\n\n scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n }\n\n transform(transformation) {\n const matrix = toMatrix(transformation);\n const { x, y } = this;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n }\n\n transformCopy(transformation) {\n const point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n round(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const x = doRound ? round(this.x, digits) : this.x;\n const y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n }\n\n toString(digits, separator = \" \") {\n let { x, y } = this;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n }\n\n static min() {\n let minX = MAX_NUM;\n let minY = MAX_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n let point = arguments[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n }\n\n static max() {\n let maxX = MIN_NUM;\n let maxY = MIN_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n const point = arguments[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n }\n\n static minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n }\n\n static maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n }\n\n static get ZERO() {\n return new Point(0, 0);\n }\n}\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nclass Rect extends HasObservers {\n constructor(origin = new Point(), size = new Size(), cornerRadius = 0) {\n super();\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n clone() {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n }\n\n equals(other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n }\n\n setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getOrigin() {\n return this.origin;\n }\n\n setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n }\n\n getCornerRadius() {\n return this.cornerRadius;\n }\n\n setSize(value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n }\n\n getSize() {\n return this.size;\n }\n\n width() {\n return this.size.width;\n }\n\n height() {\n return this.size.height;\n }\n\n topLeft() {\n return this.origin.clone();\n }\n\n bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n }\n\n topRight() {\n return this.origin.clone().translate(this.width(), 0);\n }\n\n bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n }\n\n center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n }\n\n bbox(matrix) {\n const tl = this.topLeft().transformCopy(matrix);\n const tr = this.topRight().transformCopy(matrix);\n const br = this.bottomRight().transformCopy(matrix);\n const bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n }\n\n transformCopy(m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n }\n\n expand(x, y = x) {\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n }\n\n expandCopy(x, y) {\n return this.clone().expand(x, y);\n }\n\n containsPoint(point) {\n const origin = this.origin;\n const bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n }\n\n _isOnPath(point, width) {\n const rectOuter = this.expandCopy(width, width);\n const rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n\n static fromPoints() {\n const topLeft = Point.min.apply(null, arguments);\n const bottomRight = Point.max.apply(null, arguments);\n const size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n }\n\n static union(a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n }\n\n static intersect(a, b) {\n const rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n const rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n }\n}\n\nexport default Rect;\n","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nconst points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nclass Segment extends withPoints(HasObservers, points) {\n constructor(anchor, controlIn, controlOut) {\n super();\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n bboxTo(toSegment, matrix) {\n const segmentAnchor = this.anchor().transformCopy(matrix);\n const toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n let rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n }\n\n _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n }\n\n _curveBoundingBox(p1, cp1, cp2, p2) {\n const points = [ p1, cp1, cp2, p2 ];\n const extremesX = this._curveExtremesFor(points, \"x\");\n const extremesY = this._curveExtremesFor(points, \"y\");\n const xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n const yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n }\n\n _curveExtremesFor(points, field) {\n const extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n }\n\n _curveExtremes(x1, x2, x3, x4) {\n const a = x1 - 3 * x2 + 3 * x3 - x4;\n const b = - 2 * (x1 - 2 * x2 + x3);\n const c = x1 - x2;\n const sqrt = Math.sqrt(b * b - 4 * a * c);\n let t1 = 0;\n let t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n let min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n let max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n _intersectionsTo(segment, point) {\n let intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n }\n\n _isOnCurveTo(segment, point, width, endSegment) {\n const bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n const p1 = this.anchor();\n const p2 = this.controlOut();\n const p3 = segment.controlIn();\n const p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n const points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n const rotation = transform().rotate(45, point);\n const rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n }\n\n _isOnLineTo(segment, point, width) {\n const p1 = this.anchor();\n const p2 = segment.anchor();\n const angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n const rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n }\n\n _isOnPathTo(segment, point, width, endSegment) {\n let isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n}\n\nfunction arrayLimits(arr) {\n let length = arr.length;\n let min = MAX_NUM;\n let max = MIN_NUM;\n\n for (let i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nclass Size extends withAccessors(HasObservers, [ \"width\", \"height\" ]) {\n constructor(width, height) {\n super();\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n equals(other) {\n return other && other.width === this.width && other.height === this.height;\n }\n\n clone() {\n return new Size(this.width, this.height);\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const width = doRound ? round(this.width, digits) : this.width;\n const height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n }\n\n static get ZERO() {\n return new Size(0, 0);\n }\n}\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nclass Transformation extends HasObservers {\n constructor(matrix = Matrix.unit()) {\n super();\n\n this._matrix = matrix;\n }\n\n clone() {\n return new Transformation(\n this._matrix.clone()\n );\n }\n\n equals(other) {\n return other &&\n other._matrix.equals(this._matrix);\n }\n\n translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n }\n\n scale(scaleX, scaleY = scaleX, origin = null) {\n let originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n }\n\n multiply(transformation) {\n const matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n }\n\n matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n }\n\n _optionsChange() {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n }\n}\n\nexport default Transformation;\n","export { default as LinearGradient } from './gradients/linear-gradient';\nexport { default as RadialGradient } from './gradients/radial-gradient';\nexport { default as GradientStop } from './gradients/gradient-stop';\nexport { default as Gradient } from './gradients/gradient';","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nconst options = [ \"offset\", \"color\", \"opacity\" ];\n\nclass GradientStop extends withOptions(HasObservers, options) {\n constructor(offset, color, opacity) {\n super();\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n static create(arg) {\n if (defined(arg)) {\n let stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n }\n}\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nclass Gradient extends HasObservers {\n get nodeType() {\n return \"Gradient\";\n }\n\n constructor(options = {}) {\n super();\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n }\n\n _createStops(stops = []) {\n const result = [];\n for (let idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n }\n\n addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n }\n\n removeStop(stop) {\n const index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n\n optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n }\n\n geometryChange() {\n this.optionsChange();\n }\n}\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nconst points = [ \"start\", \"end\" ];\n\nclass LinearGradient extends withPoints(Gradient, points) {\n constructor(options = {}) {\n super(options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n}\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nclass RadialGradient extends withPoints(Gradient, [ \"center\" ]) {\n constructor(options = {}) {\n super(options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n }\n\n fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n }\n}\n\nexport default RadialGradient;\n","import ElementsArray from '../shapes/elements-array';\n\nclass StopsArray extends ElementsArray {\n _change() {\n this.optionsChange({\n field: \"stops\"\n });\n }\n}\n\nexport default StopsArray;","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nconst inBrowser = typeof window !== 'undefined';\nconst microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nclass TextRect extends Text {\n constructor(str, rect, options) {\n super(str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n rect() {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n }\n rawBBox() {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n }\n}\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n const clone = (function dive(node){\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (let i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n const canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach((canvas, i) => {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n const orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach((el, i) => {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

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

    Foo

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

    Foo

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

    ,

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

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n let match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n let fake = [];\n function pseudo(kind, place) {\n let style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n let psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n let saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n const r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n const g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n const serializer = new window.XMLSerializer();\n let xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n const doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n const svg = doc.documentElement;\n const box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n let xml = serializeSVG(element);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline;\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, l => l.toUpperCase());\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({ stroke: {\n width: width,\n color: color\n }});\n\n ypos -= width;\n path.moveTo(box.left, ypos)\n .lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nconst IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nconst measurable = TBase => (\n class extends TBase {\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n const matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n let bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n const strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n }\n\n geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n }\n);\n\nexport default measurable;","import { defined } from '../util';\n\nconst GRADIENT = \"Gradient\";\n\nconst paintable = TBase => (\n class extends TBase {\n fill(color, opacity) {\n const options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n const newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n }\n\n stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n}\n);\n\nexport default paintable;\n","const traversable = (TBase, childrenField) => (\n class extends TBase {\n traverse(callback) {\n const children = this[childrenField];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n }\n }\n);\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i];\n let capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nconst withAccessors = (TBase, names) => {\n const result = class extends TBase {};\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nconst withGeometry = (TBase, names = [ \"geometry\" ]) => {\n const result = class extends TBase {};\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nconst withOptions = (TBase, names) => {\n const result = class extends TBase {};\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nconst withPoints = (TBase, names) => {\n const result = class extends TBase {};\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nconst SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nconst SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nconst MOVE = \"m\";\nconst CLOSE = \"z\";\n\nfunction parseParameters(str) {\n const parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n const position = new Point();\n let previousCommand;\n\n str.replace(SEGMENT_REGEX, (match, element, params, closePath) => {\n let command = element.toLowerCase();\n const isRelative = command === element;\n const parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import { Class } from '../common';\nimport { MultiPath } from '../shapes/path';\nimport parsePath from './parse-path';\n\nlet instance;\n\nclass PathParser extends Class {\n static get current() {\n if (!instance) {\n instance = new PathParser();\n }\n\n return instance;\n }\n\n parse(str, options) {\n const multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n }\n}\n\nexport default PathParser;\n\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nconst ShapeMap = {\n l: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 2) {\n let point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 6) {\n let controlOut = new Point(parameters[i], parameters[i + 1]);\n let controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n let point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n const value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n const value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 7) {\n const radiusX = parameters[i];\n const radiusY = parameters[i + 1];\n const rotation = parameters[i + 2];\n const largeArc = parameters[i + 3];\n const swipe = parameters[i + 4];\n const endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlIn = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n let controlOut;\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlPoint = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n let lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (let i = 0; i < parameters.length; i += 2) {\n let endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n const insertPosition = isVertical ? 0 : 1;\n\n for (let i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nconst third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n const scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser;\nconst NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nconst PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n let m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n let reader = new FileReader();\n reader.onload = function() {\n let doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n let svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n let xml = new window.XMLSerializer().serializeToString(svg);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n const svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n const upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n let reader = new FileReader();\n reader.onload = function() {\n try {\n let img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nclass PDFDocument {\n constructor (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n let nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n }\n\n getFont(url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n }\n\n getImage(url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n }\n\n getOpacityGS(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n }\n\n dict(props) {\n return new PDFDictionary(props);\n }\n\n name(str) {\n return _(str);\n }\n\n stream(props, content) {\n return new PDFStream(content, props);\n }\n}\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nclass PDFValue {\n beforeRender() {}\n}\n\nclass PDFString extends PDFValue {\n constructor(value, utf16be) {\n super();\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n render(out) {\n let txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n let data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n let code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n }\n\n toString() {\n return this.value;\n }\n}\n\nclass PDFHexString extends PDFString {\n constructor(value) {\n super(value);\n this.value = value;\n }\n\n render(out) {\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n}\n\n/// names\nclass PDFName extends PDFValue {\n static get(name) {\n return _(name);\n }\n\n constructor(name) {\n super();\n this.name = name;\n }\n\n render(out) {\n out(\"/\" + this.escape());\n }\n\n escape() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n }\n\n toString() {\n return this.name;\n }\n}\n\nvar PDFName_cache = {};\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nclass PDFDictionary extends PDFValue {\n constructor(props) {\n super();\n this.props = props;\n }\n\n render(out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n }\n}\n\n/// streams\n\nclass PDFStream extends PDFValue {\n constructor(data, props, compress) {\n super();\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n render(out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n }\n}\n\n/// catalog\n\nclass PDFCatalog extends PDFDictionary {\n constructor() {\n super({\n Type: _(\"Catalog\")\n });\n }\n\n setPages(pagesObj) {\n this.props.Pages = pagesObj;\n }\n}\n\n/// page tree\n\nclass PDFPageTree extends PDFDictionary {\n constructor() {\n super({\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n addPage(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n}\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nclass PDFJpegImage {\n constructor(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nclass PDFRawImage {\n constructor(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n/// standard fonts\n\nclass PDFStandardFont extends PDFDictionary {\n constructor(name){\n super({\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n encodeText(str) {\n return new PDFString(String(str));\n }\n}\n\n/// TTF fonts\n\nclass PDFFont extends PDFDictionary {\n constructor(pdf, font, props){\n super({});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n encodeText(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n }\n\n getTextWidth(fontSize, text) {\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n }\n\n beforeRender() {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n }\n\n _makeCidToGidMap() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n}\n\nclass PDFToUnicodeCmap extends PDFValue {\n constructor(firstChar, lastChar, map){\n super();\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n render(out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n }\n}\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nclass PDFPage extends PDFDictionary {\n constructor(pdf, props){\n super(props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n _out() {\n this._content.data.apply(null, arguments);\n }\n\n transform(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n }\n\n translate(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n }\n\n scale(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n }\n\n rotate(angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n }\n\n beginText() {\n this._textMode = true;\n this._out(\"BT\", NL);\n }\n\n endText() {\n this._textMode = false;\n this._out(\"ET\", NL);\n }\n\n _requireTextMode() {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n }\n\n _requireFont() {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n }\n\n setFont(font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n }\n\n setTextLeading(size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n }\n\n setTextRenderingMode(mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n }\n\n showText(text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n }\n\n showTextNL(text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n }\n\n addLink(uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n }\n\n setStrokeColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n }\n\n setOpacity(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n }\n\n setStrokeOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n setFillColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n }\n\n setFillOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n gradient(gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n }\n\n setDashPattern(dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n }\n\n setLineWidth(width) {\n this._out(width, \" w\", NL);\n }\n\n setLineCap(lineCap) {\n this._out(lineCap, \" J\", NL);\n }\n\n setLineJoin(lineJoin) {\n this._out(lineJoin, \" j\", NL);\n }\n\n setMitterLimit(mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n }\n\n save() {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n }\n\n restore() {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n }\n\n\n // paths\n moveTo(x, y) {\n this._out(x, \" \", y, \" m\", NL);\n }\n\n lineTo(x, y) {\n this._out(x, \" \", y, \" l\", NL);\n }\n\n bezier(x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n }\n\n bezier1(x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n }\n\n bezier2(x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n }\n\n close() {\n this._out(\"h\", NL);\n }\n\n rect(x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n }\n\n ellipse(x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n }\n\n circle(x, y, r) {\n this.ellipse(x, y, r, r);\n }\n\n stroke() {\n this._out(\"S\", NL);\n }\n\n nop() {\n this._out(\"n\", NL);\n }\n\n clip() {\n this._out(\"W n\", NL);\n }\n\n clipStroke() {\n this._out(\"W S\", NL);\n }\n\n closeStroke() {\n this._out(\"s\", NL);\n }\n\n fill() {\n this._out(\"f\", NL);\n }\n\n fillStroke() {\n this._out(\"B\", NL);\n }\n\n drawImage(url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n }\n\n comment(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n }\n\n // internal\n _context(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n }\n\n _toPage(p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n }\n}\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nconst TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport const deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient } from '../drawing';\nimport * as geo from \"../geometry\";\n\nconst DEFAULT_IMAGE_DPI = 300;\nconst TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nconst DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nconst LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nconst LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nclass Directory {\n constructor(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n }\n\n readTable(name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n }\n\n render(tables) {\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n }\n\n checksum(data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n }\n}\n\nclass Table {\n constructor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n\n raw() {\n return this.rawData.slice(this.offset, this.length);\n }\n\n parse() {} // abstract\n}\n\nclass HeadTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n }\n\n render(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n}\n\nclass LocaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n }\n\n offsetOf(id) {\n return this.offsets[id];\n }\n\n lengthOf(id) {\n return this.offsets[id + 1] - this.offsets[id];\n }\n\n render(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n}\n\nclass HheaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n }\n\n render(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n}\n\nclass MaxpTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n}\n\nclass HmtxTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n }\n\n forGlyph(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n}\n\nvar GlyfTable = (function(){\n class SimpleGlyph {\n get compound() {\n return false;\n }\n\n constructor(raw) {\n this.raw = raw;\n }\n\n render() {\n return this.raw.get();\n }\n }\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n class CompoundGlyph {\n get compound() {\n return true;\n }\n\n constructor(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n\n render(old2new) {\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this.glyphIds[i];\n out.offset(this.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n }\n\n return class extends Table {\n parse() {\n this.cache = {};\n }\n\n glyphFor(id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n }\n\n render(glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n };\n}());\n\nvar NameTable = (function(){\n class NameEntry {\n constructor(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n }\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n }\n\n render(psName) {\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n }\n };\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n }\n\n glyphFor(code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n }\n\n render(mapping) {\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n }\n };\n})();\n\nvar CmapTable = (function(){\n class CmapEntry {\n constructor(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n }\n }\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return class extends Table {\n parse(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n }\n\n static render(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n };\n\n})();\n\nclass OS2Table extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n }\n\n render() {\n return this.raw();\n }\n}\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nclass Subfont {\n constructor(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n }\n\n use(ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n }\n\n encodeText(text) {\n return this.use(text);\n }\n\n glyphIds() {\n return sortedKeys(this.ogid2ngid);\n }\n\n glyphsFor(glyphIds, result) {\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n }\n\n render() {\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this.ogid2ngid[old_gid] == null) {\n var new_gid = this.nextGid++;\n this.ogid2ngid[old_gid] = new_gid;\n this.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n }\n\n cidToGidMap() {\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n}\n\nclass TTFFont {\n constructor(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n const parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n }\n\n parse() {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n }\n\n widthOfGlyph(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n }\n\n makeSubset() {\n return new Subfont(this);\n }\n}\n\nexport { TTFFont };\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nconst HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nconst BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n const data = window.atob(base64);\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nclass QuadNode extends QuadRoot {\n constructor(rect) {\n super();\n this.children = [];\n this.rect = rect;\n }\n\n inBounds(rect) {\n const nodeRect = this.rect;\n const nodeBottomRight = nodeRect.bottomRight();\n const bottomRight = rect.bottomRight();\n const inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n }\n\n pointShapes(point) {\n const children = this.children;\n const length = children.length;\n const result = super.pointShapes(point);\n for (let idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n }\n\n insert(shape, bbox) {\n const children = this.children;\n let inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n }\n\n _initChildren() {\n const { rect, children } = this;\n const center = rect.center();\n const halfWidth = rect.width() / 2;\n const halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n }\n}\n\nexport default QuadNode;","import { Class } from '../common';\n\nclass QuadRoot extends Class {\n constructor() {\n super();\n\n this.shapes = [];\n }\n\n _add(shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n }\n\n pointShapes(point) {\n const shapes = this.shapes;\n const length = shapes.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n }\n\n insert(shape, bbox) {\n this._add(shape, bbox);\n }\n\n remove(shape) {\n const shapes = this.shapes;\n const length = shapes.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n }\n}\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nconst ROOT_SIZE = 3000;\nconst LEVEL_STEP = 10000;\nconst MAX_LEVEL = 75;\n\nclass ShapesQuadTree extends Class {\n\n constructor() {\n super();\n\n this.initRoots();\n }\n\n initRoots() {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n }\n\n clear() {\n const rootElements = this.rootElements;\n for (let idx = 0; idx < rootElements.length; idx++) {\n this.remove(rootElements[idx]);\n }\n this.initRoots();\n }\n\n pointShape(point) {\n const sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n let result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (let idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n }\n\n assignZindex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let zIndex = 0;\n let levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n let parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n }\n\n optionsChange(e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n }\n\n geometryChange(e) {\n this.bboxChange(e.element);\n }\n\n bboxChange(element) {\n if (element.nodeType === \"Group\") {\n for (let idx = 0; idx < element.children.length; idx++) {\n this.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n }\n\n add(elements) {\n const elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n }\n\n childrenChange(e) {\n if (e.action === \"remove\") {\n for (let idx = 0; idx < e.items.length; idx++) {\n this.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n }\n\n _insert(elements) {\n let element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this._insertShape(element);\n }\n }\n }\n\n _insertShape(shape) {\n const bbox = shape.bbox();\n if (bbox) {\n const sectors = this.getSectors(bbox);\n const x = sectors[0][0];\n const y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n const rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n }\n\n remove(element) {\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n const children = element.children;\n for (let idx = 0; idx < children.length; idx++) {\n this.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n }\n\n inRoot(sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n }\n\n getSectors(rect) {\n const bottomRight = rect.bottomRight();\n const bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n const bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n const sectors = [ [], [] ];\n for (let x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (let y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n }\n}\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","export { default as Element } from './shapes/element';\nexport { default as Circle } from './shapes/circle';\nexport { default as Arc } from './shapes/arc';\nexport { Path, MultiPath } from './shapes/path';\nexport { default as Text } from './shapes/text';\nexport { default as Image } from './shapes/image';\nexport { default as Group } from './shapes/group';\nexport { default as Layout } from './shapes/layout';\nexport { default as Rect } from './shapes/rect';\n","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Arc extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Arc\";\n }\n\n constructor(geometry = new GeometryArc(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this.geometry().bbox();\n }\n\n toPath() {\n const path = new Path();\n const curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Arc;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Circle extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Circle\";\n }\n\n constructor(geometry = new GeometryCircle(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nclass Element extends HasObservers {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(options) {\n super();\n\n this._initOptions(options);\n }\n\n _initOptions(options = {}) {\n const { clip, transform } = options;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n }\n\n transform(value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n }\n\n parentTransform() {\n let element = this;\n let parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n let transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n }\n\n currentTransform(parentTransform = this.parentTransform()) {\n const elementTransform = this.transform();\n const elementMatrix = toMatrix(elementTransform);\n\n let parentMatrix = toMatrix(parentTransform);\n let combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n }\n\n visible(value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n }\n\n clip(value) {\n const options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n }\n\n opacity(value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n }\n\n clippedBBox(transformation) {\n const bbox = this._clippedBBox(transformation);\n if (bbox) {\n const clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const transform = this.currentTransform(parentTransform);\n let transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n }\n\n _hasFill() {\n const fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n }\n\n _hasStroke() {\n const stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n }\n\n _clippedBBox(transformation) {\n return this.bbox(transformation);\n }\n}\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nconst push = [].push;\nconst pop = [].pop;\nconst splice = [].splice;\nconst shift = [].shift;\nconst slice = [].slice;\nconst unshift = [].unshift;\n\nclass ElementsArray extends HasObservers {\n constructor(array = []) {\n super();\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n }\n\n push() {\n const elements = arguments;\n const result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n slice() {\n return slice.call(this);\n }\n\n pop() {\n const length = this.length;\n const result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n splice(index, howMany) {\n const elements = slice.call(arguments, 2);\n const result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n }\n\n shift() {\n const length = this.length;\n const result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n unshift() {\n const elements = arguments;\n const result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n indexOf(element) {\n const length = this.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (this[idx] === element) {\n return idx;\n }\n }\n return -1;\n }\n\n _splice(index, howMany, elements) {\n const result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n }\n\n _add(elements) {\n this._setObserver(elements);\n this._change();\n }\n\n _remove(elements) {\n this._clearObserver(elements);\n this._change();\n }\n\n _setObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this);\n }\n }\n\n _clearObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this);\n }\n }\n\n _change() {}\n}\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nclass Group extends traversable(Element, \"children\") {\n get nodeType() {\n return \"Group\";\n }\n\n constructor(options) {\n super(options);\n this.children = [];\n }\n\n childrenChange(action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n }\n\n append() {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n }\n\n insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n }\n\n insertAt(element, index) {\n return this.insert(index, element);\n }\n\n remove(element) {\n const index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n removeAt(index) {\n if (0 <= index && index < this.children.length) {\n let element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n clear() {\n const items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n }\n\n bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n }\n\n rawBBox() {\n return elementsBoundingBox(this.children, false);\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n }\n\n currentTransform(transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const children = this.children;\n const transform = this.currentTransform(parentTransform);\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _reparent(elements, newParent) {\n for (let i = 0; i < elements.length; i++) {\n const child = elements[i];\n const parent = child.parent;\n if (parent && parent !== this && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n }\n}\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nclass Image extends withGeometry(Element, [ \"rect\" ]) {\n get nodeType() {\n return \"Image\";\n }\n\n constructor(src, rect = new Rect(), options = {}) {\n super(options);\n\n this.src(src);\n this.rect(rect);\n }\n\n src(value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this._rect.bbox();\n }\n\n _containsPoint(point) {\n return this._rect.containsPoint(point);\n }\n\n _hasFill() {\n return this.src();\n }\n}\n\nexport default Image;","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nconst DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nconst forEach = (elements, callback) => {\n elements.forEach(callback);\n};\n\nconst forEachReverse = (elements, callback) => {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nclass Layout extends Group {\n\n constructor(rect, options) {\n super(Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n rect(value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n }\n\n _initMap() {\n const options = this.options;\n const fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n }\n\n reflow() {\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n const options = this.options;\n const rect = this._rect;\n const { groups, groupsSize } = this._initGroups();\n const { sizeField, groupsSizeField, groupAxis, groupsAxis } = this._fieldMap;\n const groupOrigin = new Point();\n const elementOrigin = new Point();\n const size = new Size();\n let groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n let elementStart, group, groupBox;\n\n const arrangeElements = (bbox, idx) => {\n const element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n const scale = rect.size[sizeField] / groupBox.size[sizeField];\n const scaledStart = groupBox.topLeft().scale(scale, scale);\n const scaledSize = groupBox.size[groupsSizeField] * scale;\n const newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n const transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n }\n\n _initGroups() {\n const { options, children } = this;\n const { lineSpacing, wrap, spacing } = options;\n const sizeField = this._fieldMap.sizeField;\n let group = this._newGroup();\n const groups = [];\n const addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n let groupsSize = -lineSpacing;\n\n for (let idx = 0; idx < children.length; idx++) {\n let element = children[idx];\n let bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this._addToGroup(group, bbox, element);\n addGroup();\n group = this._newGroup();\n } else {\n addGroup();\n group = this._newGroup();\n this._addToGroup(group, bbox, element);\n }\n } else {\n this._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n }\n\n _addToGroup(group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n }\n\n _newGroup() {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n }\n}\n\nexport default Layout;","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\n\nexport class Path extends paintable(measurable(Element)) {\n static parse(str, options) {\n return MultiPath.parse(str, options);\n }\n\n get nodeType() {\n return \"Path\";\n }\n\n constructor(options) {\n super(options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set(\"stroke.lineJoin\", \"miter\");\n }\n }\n }\n\n moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n }\n\n lineTo(x, y) {\n const point = defined(y) ? new Point(x, y) : x;\n const segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const start = rad(startAngle);\n const center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n const arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n }\n\n _addArcSegments(arc) {\n this.suspend();\n\n const curvePoints = arc.curvePoints();\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n this.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n }\n\n close() {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n }\n\n rawBBox() {\n return this._bbox();\n }\n\n _containsPoint(point) {\n const segments = this.segments;\n const length = segments.length;\n let intersectionsCount = 0;\n let previous, current;\n\n for (let idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n }\n\n _isOnPath(point, width) {\n const segments = this.segments;\n const length = segments.length;\n const pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, \"start\")) {\n return true;\n }\n\n for (let idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, \"end\")) {\n return true;\n }\n }\n return false;\n }\n\n _bbox(matrix) {\n const segments = this.segments;\n const length = segments.length;\n let boundingBox;\n\n if (length === 1) {\n let anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (let i = 1; i < length; i++) {\n let segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n }\n\n static fromRect(rect, options) {\n const path = new Path(options);\n let [ rx, ry ] = rect.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n const origin = rect.origin;\n const { x, y } = origin;\n const width = rect.width();\n const height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n }\n\n static fromPoints(points, options) {\n if (points) {\n const path = new Path(options);\n\n for (let i = 0; i < points.length; i++) {\n let point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n }\n\n static fromArc(arc, options) {\n const path = new Path(options);\n const startAngle = arc.startAngle;\n const start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n }\n}\n\nexport class MultiPath extends paintable(measurable(Element)) {\n static parse(str, options) {\n const instance = new MultiPath(options);\n return parsePath(instance, str);\n }\n\n get nodeType() {\n return \"MultiPath\";\n }\n\n constructor(options) {\n super(options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n moveTo(x, y) {\n const path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n }\n\n lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n }\n\n close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n }\n\n _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n }\n\n rawBBox() {\n return elementsBoundingBox(this.paths, false);\n }\n\n _containsPoint(point) {\n const paths = this.paths;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n }\n\n _isOnPath(point) {\n const paths = this.paths;\n const width = this.options.stroke.width;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n}\n\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nclass Rect extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(geometry = new GeometryRect(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _containsPoint(point) {\n return this._geometry.containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Rect;\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nconst DEFAULT_FONT = \"12px sans-serif\";\nconst DEFAULT_FILL = \"#000\";\n\nclass Text extends paintable(withPoints(Element, [ \"position\" ])) {\n get nodeType() {\n return \"Text\";\n }\n\n constructor(content, position = new Point(), options = {}) {\n super(options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n content(value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n }\n\n measure() {\n const metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n }\n\n rect() {\n const size = this.measure();\n const pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this.rect().bbox();\n }\n\n _containsPoint(point) {\n return this.rect().containsPoint(point);\n }\n}\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nlet instance;\nlet support;\n\nconst hasDocument = () => typeof document !== \"undefined\";\n\nconst supportsCanvas = () => hasDocument() &&\n document.createElement(\"canvas\").getContext;\n\nconst supportsSVG = () => hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\");\n\nclass SurfaceFactory extends Class {\n static get support() {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n }\n\n static get current() {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n create(element, options) {\n const items = this._items;\n let match = items[0];\n\n if (options && options.type) {\n const preferred = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n `- The browser does not support SVG and Canvas. User agent: ${ navigator.userAgent }`);\n }\n}\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nclass Surface extends BaseSurface {\n static get support() {\n return SurfaceFactory.support;\n }\n\n static create(element, options) {\n return SurfaceFactory.current.create(element, options);\n }\n}\n\nexport default Surface;\n\n","export { default as Surface } from './svg/surface';\n\nexport { default as RootNode } from './svg/root-node';\nexport { default as Node } from './svg/node';\nexport { default as GroupNode } from './svg/group-node';\nexport { default as ArcNode } from './svg/arc-node';\nexport { default as CircleNode } from './svg/circle-node';\nexport { default as RectNode } from './svg/rect-node';\nexport { default as ImageNode } from './svg/image-node';\nexport { default as TextNode } from './svg/text-node';\nexport { default as PathNode } from './svg/path-node';\nexport { default as MultiPathNode } from './svg/multi-path-node';\n\nexport { default as DefinitionNode } from './svg/definition-node';\nexport { default as ClipNode } from './svg/clip-node';\nexport { default as GradientStopNode } from './svg/gradient-stop-node';\nexport { default as LinearGradientNode } from './svg/linear-gradient-node';\nexport { default as RadialGradientNode } from './svg/radial-gradient-node';\n\nexport { default as exportGroup } from './svg/export-group';","import PathNode from './path-node';\n\nclass ArcNode extends PathNode {\n renderData() {\n return this.printPath(this.srcElement.toPath());\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n\n geometryChange() {\n const center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n }\n\n center() {\n return this.srcElement.geometry().center;\n }\n\n radius() {\n return this.srcElement.geometry().radius;\n }\n\n template() {\n return ``;\n }\n}\n\nexport default CircleNode;\n","import Node from './node';\n\nclass ClipNode extends Node {\n constructor(srcElement) {\n super();\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n}\n\nexport default ClipNode;","const SVG_NS = \"http://www.w3.org/2000/svg\";\nconst NONE = \"none\";\n\nexport { SVG_NS, NONE };","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nclass DefinitionNode extends Node {\n constructor() {\n super();\n this.definitionMap = {};\n }\n\n attachTo(domElement) {\n this.element = domElement;\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n\n definitionChange(e) {\n const { definitions, action } = e;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n }\n\n createDefinition(type, item) {\n let nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n }\n\n addDefinitions(definitions) {\n for (let field in definitions) {\n this.addDefinition(field, definitions[field]);\n }\n }\n\n addDefinition(type, srcElement) {\n const { element, definitionMap } = this;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n if (!mapItem) {\n const node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n }\n\n removeDefinitions(definitions) {\n for (let field in definitions) {\n this.removeDefinition(definitions[field]);\n }\n }\n\n removeDefinition(srcElement) {\n const definitionMap = this.definitionMap;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n }\n}\n\nexport default DefinitionNode;","import RootNode from './root-node';\nimport { Group } from '../shapes';\nimport { transform } from '../geometry';\nimport { SVG_NS } from './constants';\n\nexport default function exportGroup(group) {\n const root = new RootNode({\n skipBaseHref: true\n });\n const bbox = group.clippedBBox();\n let rootGroup = group;\n\n if (bbox) {\n const origin = bbox.getOrigin();\n const exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n const svg = `${ root.render() }`;\n\n root.destroy();\n\n return svg;\n}","import { createPromise, encodeBase64 } from '../util';\nimport exportGroup from './export-group';\n\nexport default function exportSVG(group, options) {\n let svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n}\n","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nclass GradientNode extends Node {\n constructor(srcElement) {\n super(srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n loadStops() {\n const stops = this.srcElement.stops;\n const element = this.element;\n\n for (let idx = 0; idx < stops.length; idx++) {\n let stopNode = new GradientStopNode(stops[idx]);\n this.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n }\n\n optionsChange(e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n }\n\n renderCoordinates() {\n return renderAllAttr(this.mapCoordinates());\n }\n\n mapSpace() {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n }\n}\n\nexport default GradientNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass GradientStopNode extends Node {\n template() {\n return ``;\n }\n\n renderOffset() {\n return renderAttr(\"offset\", this.srcElement.offset());\n }\n\n mapStyle() {\n const srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n }\n\n optionsChange(e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n }\n}\n\nexport default GradientStopNode;","import Node from './node';\n\nclass GroupNode extends Node {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n optionsChange(e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n super.optionsChange(e);\n }\n}\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nclass ImageNode extends PathNode {\n\n geometryChange() {\n this.allAttr(this.mapPosition());\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n super.optionsChange(e);\n }\n\n mapPosition() {\n const rect = this.srcElement.rect();\n const tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n }\n\n renderPosition() {\n return renderAllAttr(this.mapPosition());\n }\n\n mapSource(encode) {\n let src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n }\n\n renderSource() {\n return renderAllAttr(this.mapSource(true));\n }\n\n template() {\n return `` +\n ``;\n }\n}\n\nexport default ImageNode;\n","import GradientNode from './gradient-node';\n\nclass LinearGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const start = srcElement.start();\n const end = srcElement.end();\n const attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n }\n}\n\nexport default LinearGradientNode;","import PathNode from './path-node';\n\nclass MultiPathNode extends PathNode {\n renderData() {\n const paths = this.srcElement.paths;\n\n if (paths.length > 0) {\n const result = [];\n\n for (let i = 0; i < paths.length; i++) {\n result.push(this.printPath(paths[i]));\n }\n\n return result.join(\" \");\n }\n }\n}\n\nexport default MultiPathNode;\n","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nconst TRANSFORM = \"transform\";\nconst DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n const base = document.getElementsByTagName(\"base\")[0];\n let href = document.location.href;\n let url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n const hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nclass Node extends BaseNode {\n\n constructor(srcElement, options) {\n super(srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n destroy() {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n super.destroy();\n }\n\n load(elements, pos) {\n for (let i = 0; i < elements.length; i++) {\n const srcElement = elements[i];\n const children = srcElement.children;\n\n const childNode = new NODE_MAP[srcElement.nodeType](srcElement, this.options);\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n const element = this.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n }\n\n root() {\n let root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n }\n\n attachTo(domElement, pos) {\n const container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n const element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n }\n\n setElement(element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n const nodes = this.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n let childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n }\n\n clear() {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n }\n\n removeSelf() {\n if (this.element) {\n const parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n super.removeSelf();\n }\n\n template() {\n return this.renderChildren();\n }\n\n render() {\n return this.template();\n }\n\n renderChildren() {\n const nodes = this.childNodes;\n let output = \"\";\n\n for (let i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n }\n\n optionsChange(e) {\n const { field, value } = e;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n super.optionsChange(e);\n }\n\n attr(name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n }\n\n allAttr(attrs) {\n for (let i = 0; i < attrs.length; i++) {\n this.attr(attrs[i][0], attrs[i][1]);\n }\n }\n\n css(name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n }\n\n allCss(styles) {\n for (let i = 0; i < styles.length; i++) {\n this.css(styles[i][0], styles[i][1]);\n }\n }\n\n removeAttr(name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n }\n\n mapTransform(transform) {\n const attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n }\n\n renderTransform() {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n }\n\n transformChange(value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n }\n\n mapStyle() {\n const options = this.srcElement.options;\n const style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n }\n\n renderStyle() {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n }\n\n renderOpacity() {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n }\n\n renderId() {\n return renderAttr(\"id\", this.srcElement.options.id);\n }\n\n createDefinitions() {\n const srcElement = this.srcElement;\n const definitions = this.definitions;\n if (srcElement) {\n const options = srcElement.options;\n let hasDefinitions;\n\n for (let field in DefinitionMap) {\n let definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n }\n\n definitionChange(e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n }\n\n updateDefinition(type, value) {\n const definitions = this.definitions;\n const current = definitions[type];\n const attr = DefinitionMap[type];\n const definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n }\n\n clearDefinitions() {\n const definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n }\n\n renderDefinitions() {\n return renderAllAttr(this.mapDefinitions());\n }\n\n mapDefinitions() {\n const definitions = this.definitions;\n const attrs = [];\n\n for (let field in definitions) {\n attrs.push([ DefinitionMap[field], this.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n }\n\n refUrl(id) {\n const skipBaseHref = (this.options || {}).skipBaseHref;\n const baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n const base = skipBaseHref ? '' : baseHref;\n return `url(${ base }#${ id })`;\n }\n\n baseUrl() {\n return baseUrl();\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nconst ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\nconst SPACE = \" \";\n\nclass PathNode extends Node {\n\n geometryChange() {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n }\n\n optionsChange(e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n const name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n super.optionsChange(e);\n }\n\n content() {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n }\n\n renderData() {\n return this.printPath(this.srcElement);\n }\n\n printPath(path) {\n const segments = path.segments;\n const length = segments.length;\n if (length > 0) {\n const parts = [];\n let output, currentType;\n\n for (let i = 1; i < length; i++) {\n let segmentType = this.segmentType(segments[i - 1], segments[i]);\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n\n if (segmentType === \"L\") {\n parts.push(this.printPoints(segments[i].anchor()));\n } else {\n parts.push(this.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n\n output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (path.options.closed) {\n output += \"Z\";\n }\n\n return output;\n }\n }\n\n printPoints() {\n const points = arguments;\n const length = points.length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n\n return result.join(\" \");\n }\n\n segmentType(segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\n }\n\n mapStroke(stroke) {\n const attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n }\n\n renderStroke() {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n }\n\n renderDashType(stroke) {\n const { dashType, width = 1 } = stroke;\n\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n const result = [];\n\n for (let i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n }\n\n renderLinecap(stroke) {\n const { dashType, lineCap } = stroke;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n }\n\n mapFill(fill) {\n const attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n }\n\n renderFill() {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n }\n\n template() {\n return ``;\n }\n}\n\nexport default PathNode;\n","import GradientNode from './gradient-node';\n\nclass RadialGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const center = srcElement.center();\n const radius = srcElement.radius();\n const attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n }\n}\n\nexport default RadialGradientNode;","import PathNode from './path-node';\n\nclass RectNode extends PathNode {\n\n geometryChange() {\n const geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n }\n\n size() {\n return this.srcElement.geometry().size;\n }\n\n origin() {\n return this.srcElement.geometry().origin;\n }\n\n rx() {\n return this.srcElement.geometry().cornerRadius[0];\n }\n\n ry() {\n return this.srcElement.geometry().cornerRadius[1];\n }\n\n template() {\n return ``;\n }\n}\n\nexport default RectNode;\n","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nclass RootNode extends Node {\n constructor(options) {\n super();\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n attachTo(domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n }\n\n clear() {\n BaseNode.prototype.clear.call(this);\n }\n\n template() {\n return this.defs.render() + this.renderChildren();\n }\n\n definitionChange(e) {\n this.defs.definitionChange(e);\n }\n}\n\nexport default RootNode;","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nconst RTL = 'rtl';\n\nfunction alignToScreen(element) {\n let ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n const left = - ctm.e % 1;\n const top = - ctm.f % 1;\n const style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nclass Surface extends BaseSurface {\n get type() {\n return \"svg\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template());\n\n this._rootElement = this.element.firstElementChild;\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n destroy() {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n super.destroy();\n }\n\n translate(offset) {\n const viewBox = `${ Math.round(offset.x) } ${ Math.round(offset.y) } ${ this._size.width } ${ this._size.height }`;\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ]);\n }\n\n clear() {\n super.clear();\n this._root.clear();\n }\n\n svg() {\n return \"\" + this._template();\n }\n\n exportVisual() {\n let { _visual: visual, _offset: offset } = this;\n\n if (offset) {\n const wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n }\n\n _resize() {\n if (this._offset) {\n this.translate(this._offset);\n }\n }\n\n _template() {\n return `${ this._root.render() }`;\n }\n}\n\nexport default Surface;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nconst ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n const element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, (match) => {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nclass TextNode extends PathNode {\n\n geometryChange() {\n const pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n super.content(this.srcElement.content());\n }\n\n super.optionsChange(e);\n }\n\n mapStyle(encode) {\n const style = super.mapStyle(encode);\n let font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n }\n\n pos() {\n const pos = this.srcElement.position();\n const size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n }\n\n renderContent() {\n let content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n }\n\n renderTextAnchor() {\n let anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n }\n\n template() {\n return `${ this.renderContent() }`;\n }\n}\n\nexport default TextNode;\n","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? ` ${ name }=\"${ value }\" ` : \"\";\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n let value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","import { SVG_NS } from '../constants';\n\nlet renderSVG = function(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n const testFragment = \"\";\n const testContainer = document.createElement(\"div\");\n const hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n const parser = new DOMParser();\n const chartDoc = parser.parseFromString(svg, \"text/xml\");\n const importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","export { default as LRUCache } from './text-metrics/lru-cache';\nexport { default as TextMetrics } from './text-metrics/text-metrics';\nexport { default as measureText } from './text-metrics/measure-text';\n\nexport * from './text-metrics/util';","import { Class } from '../common';\n\nclass LRUCache extends Class {\n constructor(size) {\n super();\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n put(key, value) {\n const map = this._map;\n const entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n }\n\n get(key) {\n const entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n}\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nconst DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nlet defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nclass TextMetrics extends Class {\n constructor(options) {\n super();\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n measure(text, style, options = {}) {\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n const styleKey = objectKey(style);\n const cacheKey = hashKey(text + styleKey);\n const cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n const size = zeroSize();\n const measureBox = options.box || defaultMeasureBox;\n const baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (let key in style) {\n let value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n const textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n }\n\n _baselineMarker() {\n const marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n}\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","const REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nconst SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n const parts = [];\n for (let key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n let hash = 0x811C9DC5;\n\n for (let i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export { default as append } from './util/append';\nexport { default as arabicToRoman } from './util/arabic-to-roman';\nexport { default as createPromise } from './util/create-promise';\nexport { default as defined } from './util/defined';\nexport { default as definitionId } from './util/definition-id';\nexport { default as deg } from './util/deg';\nexport { default as encodeBase64 } from './util/encode-base64';\nexport { default as eventCoordinates } from './util/event-coordinates';\nexport { default as eventElement } from './util/event-element';\nexport { default as isTransparent } from './util/is-transparent';\nexport { default as last } from './util/last';\nexport { default as limitValue } from './util/limit-value';\nexport { default as mergeSort } from './util/merge-sort';\nexport { default as now } from './util/now';\nexport { default as promiseAll } from './util/promise-all';\nexport { default as rad } from './util/rad';\nexport { default as round } from './util/round';\nexport { default as valueOrDefault } from './util/value-or-default';\nexport { default as bindEvents } from './util/bind-events';\nexport { default as elementOffset } from './util/element-offset';\nexport { default as elementSize } from './util/element-size';\nexport { default as elementStyles } from './util/element-styles';\nexport { default as unbindEvents } from './util/unbind-events';\nexport { default as elementPadding } from './util/element-padding';\nexport { default as elementScale } from './util/element-scale';\n\nexport * from './util/constants';\nexport * from './text-metrics';\n","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nconst literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n const values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n let roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","export default function bindEvents(element, events) {\n for (let eventName in events) {\n const eventNames = eventName.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","const DEG_TO_RAD = Math.PI / 180;\nconst MAX_NUM = Number.MAX_VALUE;\nconst MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = () => promise._state;\n\n return promise;\n}\n","const UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","let defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","export default function elementOffset(element) {\n const box = element.getBoundingClientRect();\n\n const documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n const { paddingLeft, paddingTop } = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import Matrix from '../geometry/matrix';\n\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n const { width, height } = size;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n const size = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size.width, 10),\n height: parseInt(size.height, 10)\n };\n }\n}","export default function elementStyles(element, styles) {\n const result = {};\n const style = window.getComputedStyle(element) || {};\n const stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import { encodeUTF8 } from './encode-utf';\n\nconst KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n let output = \"\";\n let i = 0;\n\n const utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n let chr1 = utfInput.charCodeAt(i++);\n let chr2 = utfInput.charCodeAt(i++);\n let chr3 = utfInput.charCodeAt(i++);\n\n let enc1 = chr1 >> 2;\n let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n let enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","const fromCharCode = String.fromCharCode;\n\nexport const BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n let code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n const hi = code;\n const low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n const lead = ((c - 0x10000) >> 10) + 0xD800;\n const trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e = {}) {\n return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","const now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n const power = pow(precision);\n return Math.round(value * power) / power;\n}","export default function unbindEvents(element, events = {}) {\n for (let name in events) {\n const eventNames = name.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","import { blockNodes, addStyles, changeTextBlock } from './blockNode';\n/**\n * Aligning block elements in the selection.\n *\n * @returns {boolean} - Returns true if any alignment is applied.\n */\nexport const alignBlocks = (actions, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n let newAttrs = {};\n const action = actions.find(n => n.node === node.type.name);\n if (action) {\n newAttrs = addStyles(node, action.style);\n }\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\nexport const isAligned = (state, actions) => {\n const blocks = blockNodes(state);\n let result = false;\n blocks.forEach(node => {\n if (!result && node.type.isTextblock && node.attrs.style) {\n const action = actions.find(a => a.node === node.type.name);\n if (action) {\n result = action.style.every(style => {\n return !!style.value && new RegExp(`${style.name}:\\\\s?${style.value}`, 'i').test(node.attrs.style);\n });\n }\n }\n });\n return result;\n};\n","import * as tslib_1 from \"tslib\";\nimport { changeStylesString } from './utils';\nimport { ReplaceAroundStep } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection } from 'prosemirror-state';\n/**\n * @hidden\n */\nconst canChangeType = (stateDoc, pos, type) => {\n let $pos = stateDoc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n};\n/**\n * Changes the type or the attributes of the passed node.\n *\n * @example\n * See `cleanTextBlockFormatting` or `formatBlockElements` function.\n */\nexport const changeTextBlock = (tr, node, nodeType, attrs) => {\n if (!nodeType.isTextblock) {\n return false;\n }\n const { ranges } = tr.selection;\n ranges.forEach(range => {\n const mapFrom = tr.steps.length;\n const from = range.$from.pos;\n const to = range.$to.pos;\n tr.doc.nodesBetween(from, to, (currNode, pos) => {\n if (currNode.eq(node) &&\n currNode.isTextblock &&\n !currNode.hasMarkup(nodeType, attrs) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), nodeType)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), nodeType);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + currNode.nodeSize, 1);\n let slice = new Slice(Fragment.from(nodeType.create(attrs, null, currNode.marks)), 0, 0);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, slice, 1, true));\n return false; // this will skip the node children\n }\n });\n });\n};\n/**\n * Traverses the selection and returns the block nodes in it.\n *\n * @example\n * See `cleanTextBlockFormatting` function.\n */\nexport const blockNodes = (state, options = { blocksInSelection: false }) => {\n const { doc, selection } = state;\n let { $from, ranges } = selection;\n const { blocksInSelection } = options;\n const result = [];\n const selNode = selection instanceof NodeSelection ? selection.node : undefined;\n if (selNode) {\n if (selNode.isBlock) {\n result.push(selNode);\n selNode.nodesBetween(0, selNode.content.size, node => {\n if (node.isBlock) {\n result.push(node);\n }\n });\n }\n else if (!blocksInSelection && $from.parent && $from.parent.isBlock) {\n result.push($from.parent);\n }\n }\n else {\n ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n doc.nodesBetween(from, to, (node, pos, _parent, _index) => {\n if (node.isBlock && (!blocksInSelection || (pos >= from && pos + node.content.size + 2 <= to))) {\n result.push(node);\n }\n });\n });\n }\n return result;\n};\nexport const formatBlockElements = (value, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', { value });\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n if (value === 'p') {\n const _a = node.attrs, { level } = _a, attrs = tslib_1.__rest(_a, [\"level\"]);\n changeTextBlock(tr, node, nodes.paragraph, attrs);\n }\n else if (/^h[1-6]$/i.test(value)) {\n const level = parseInt(value.substr(1), 10);\n changeTextBlock(tr, node, nodes.heading, Object.assign({}, node.attrs, { level }));\n }\n else if (value === 'blockquote') {\n const _b = node.attrs, { level } = _b, attrs = tslib_1.__rest(_b, [\"level\"]);\n changeTextBlock(tr, node, nodes.blockquote, attrs);\n }\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\n/**\n * Removes the style and class attributes of text block elements.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `cleanFormatting` function.\n */\nexport const cleanTextBlockFormatting = (tr, options = { blocksInSelection: true }) => {\n const { doc, selection } = tr;\n const { blocksInSelection, blockNodeType } = options;\n const nodes = blockNodes({ doc, selection }, { blocksInSelection });\n const textBlocks = nodes.filter(node => node.isTextblock);\n textBlocks.forEach(node => {\n const _a = node.attrs || {}, { style = '', class: className = '' } = _a, attrs = tslib_1.__rest(_a, [\"style\", \"class\"]);\n const nodeType = blockNodeType || node.type;\n if (style || className || nodeType !== node.type) {\n changeTextBlock(tr, node, nodeType, attrs);\n }\n });\n};\nexport const getBlockFormats = (state) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const result = [];\n blocks.forEach((node) => {\n if (node.type === nodes.paragraph) {\n result.push('p');\n }\n else if (node.type === nodes.heading) {\n result.push(`h${node.attrs.level}`);\n }\n else if (node.type === nodes.blockquote && nodes.blockquote.isTextblock) {\n // In case the blockquote can have inline content.\n result.push('blockquote');\n }\n });\n return result;\n};\nexport const addStyles = (node, stylesToApply) => {\n let currentStyles = node.attrs.style, changedStyleResult, toChange;\n if (currentStyles) {\n stylesToApply.forEach(style => {\n toChange = { style: style.name, value: /^.+$/, newValue: style.value };\n changedStyleResult = changeStylesString(currentStyles, toChange);\n currentStyles = changedStyleResult.changed ? changedStyleResult.style : currentStyles;\n });\n }\n const reducer = (acc, curr) => ((acc && curr.value ? acc + ' ' : '') + curr.value ? `${curr.name}: ${curr.value};` : '');\n currentStyles = currentStyles || stylesToApply.reduce(reducer, '');\n return Object.assign({}, node.attrs, { style: currentStyles || null });\n};\nexport const hasNode = (state, nodeType) => {\n let { from, to } = state.selection;\n let result = false;\n state.doc.nodesBetween(from, to, node => {\n result = result || node.type === nodeType;\n return !result;\n });\n return result;\n};\nexport const parentBlockFormat = (state) => {\n const formats = getBlockFormats(state);\n return new Set(formats).size === 1 ? formats[0] : null;\n};\n/**\n * **Deprecated.** Use `parentBlockFormat` function instead.\n */\nexport const activeNode = (state) => {\n return { tag: parentBlockFormat(state) || '' };\n};\n","import { wrapIn } from 'prosemirror-commands';\nexport const blockquote = (state, dispatch) => {\n return wrapIn(state.schema.nodes.blockquote)(state, dispatch);\n};\nexport const liftBlockquote = (state, dispatch) => {\n const { $from, $to } = state.selection;\n const nodeType = state.schema.nodes.blockquote;\n const doc = state.doc;\n let target = -1;\n const range = $from.blockRange($to);\n if (range) {\n doc.nodesBetween(range.start, range.end, (node, pos, _parent, _index) => {\n if (node.type === nodeType) {\n target = pos;\n }\n });\n }\n const result = target !== -1;\n if (dispatch && result) {\n dispatch(state.tr.lift(range, doc.resolve(target).depth));\n }\n return result;\n};\n","import { cleanTextBlockFormatting } from './blockNode';\nimport { cleanMarks } from './mark';\n/**\n * A command which removes the inline formatting, class and style attributes of paragraph and heading elements in the selection.\n */\nexport const cleanFormatting = (options = { blocksInSelection: true }) => (state, dispatch) => {\n const tr = state.tr;\n const { blocksInSelection, blockNodeType, exceptMarks } = options;\n const except = (exceptMarks || [state.schema.marks.link]).filter(Boolean);\n cleanMarks(tr, { except });\n cleanTextBlockFormatting(tr, { blocksInSelection, blockNodeType });\n const result = tr.docChanged;\n if (result && dispatch) {\n dispatch(tr);\n }\n return result;\n};\n","const style = (name, value) => {\n return { name: name, value: value };\n};\nexport const alignLeftRules = [\n { node: 'paragraph', style: [style('text-align', 'left')] },\n { node: 'heading', style: [style('text-align', 'left')] }\n];\nexport const alignRightRules = [\n { node: 'paragraph', style: [style('text-align', 'right')] },\n { node: 'heading', style: [style('text-align', 'right')] }\n];\nexport const alignCenterRules = [\n { node: 'paragraph', style: [style('text-align', 'center')] },\n { node: 'heading', style: [style('text-align', 'center')] }\n];\nexport const alignJustifyRules = [\n { node: 'paragraph', style: [style('text-align', 'justify')] },\n { node: 'heading', style: [style('text-align', 'justify')] }\n];\nexport const alignRemoveRules = [\n { node: 'paragraph', style: [style('text-align', '')] },\n { node: 'heading', style: [style('text-align', '')] }\n];\n","/**\n * The object of the Bold command.\n */\nexport const bold = {\n mark: 'strong',\n altMarks: ['b'],\n altStyle: { name: 'font-weight', value: /^(bold(er)?|[5-9]\\d{2,})$/ }\n};\n/**\n * The object of the Italic command.\n */\nexport const italic = {\n mark: 'em',\n altMarks: ['i'],\n altStyle: { name: 'font-style', value: /^italic$/i }\n};\n/**\n * The object of the Underline command.\n */\nexport const underline = {\n mark: 'u',\n altStyle: { name: 'text-decoration', value: /^underline$/i }\n};\n/**\n * The object of the Strikethrough command.\n */\nexport const strikethrough = {\n mark: 'del',\n altStyle: { name: 'text-decoration', value: /^line-through$/i }\n};\n/**\n * The object of the Subscript command.\n */\nexport const subscript = {\n mark: 'sub'\n};\n/**\n * The object of the Superscript command.\n */\nexport const superscript = {\n mark: 'sup'\n};\n/**\n * The object of the Link tool settings.\n */\nexport const link = {\n mark: 'link'\n};\n/**\n * The object of the Unlink tool settings.\n */\nexport const unlink = {\n mark: 'link'\n};\n","export const rowTypeAttr = 'k-parent-node';\nexport const colgroupAttr = 'k-colgroup-data';\nexport const resizableAttr = 'k-resizable-node';\nexport const resizableWrap = 'k-editor-resize-wrap-element';\nexport const resizeHandle = 'k-editor-resize-handle';\nexport const dataResizeDirTable = 'data-dir-table-resize';\nexport const dataResizeDirImage = 'data-dir-image-resize';\n","import { listsTypes } from './list-settings';\n/**\n * The object of the Indent tool settings.\n */\nexport const indentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }],\n listsTypes: Object.assign({}, listsTypes)\n};\n/**\n * The object of the Outdent tool settings.\n */\nexport const outdentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }],\n listsTypes: Object.assign({}, listsTypes)\n};\n","import { chainCommands, exitCode, newlineInCode, createParagraphNear, liftEmptyBlock, splitBlockKeepMarks, deleteSelection, joinBackward, selectNodeBackward } from 'prosemirror-commands';\nimport { undo, redo } from 'prosemirror-history';\nimport { undoInputRule } from 'prosemirror-inputrules';\nimport { splitListItemKeepMarks } from '../lists';\nimport { bold, italic, underline } from './commands';\nimport { toggleInlineFormat } from './../inline-style';\nimport { expandToWordWrap } from '../utils';\nconst mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false;\n// https://github.com/ProseMirror/prosemirror-example-setup/blob/master/src/keymap.js\nexport const buildKeymap = (schema, options) => {\n const keys = {};\n const applyToWord = (options && options.applyToWord) || false;\n keys['Mod-z'] = undo;\n keys['Shift-Mod-z'] = redo;\n // tslint:disable-next-line:no-string-literal\n keys['Backspace'] = chainCommands(undoInputRule, deleteSelection, joinBackward, selectNodeBackward);\n // tslint:disable-next-line:no-string-literal\n keys['Enter'] = chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlockKeepMarks);\n if (!mac) {\n keys['Mod-y'] = redo;\n }\n if (schema.marks.strong) {\n keys['Mod-b'] = expandToWordWrap(toggleInlineFormat, Object.assign({}, bold, { applyToWord }));\n }\n if (schema.marks.em) {\n keys['Mod-i'] = expandToWordWrap(toggleInlineFormat, Object.assign({}, italic, { applyToWord }));\n }\n if (schema.marks.u) {\n keys['Mod-u'] = expandToWordWrap(toggleInlineFormat, Object.assign({}, underline, { applyToWord }));\n }\n if (schema.nodes.hard_break) {\n const br = schema.nodes.hard_break;\n const cmd = chainCommands(exitCode, (state, dispatch) => {\n dispatch(state.tr.replaceSelectionWith(br.create()).scrollIntoView());\n return true;\n });\n keys['Shift-Enter'] = cmd;\n }\n return keys;\n};\nexport const buildListKeymap = (schema) => {\n const keys = {};\n if (schema.nodes.list_item) {\n // tslint:disable-next-line:no-string-literal\n keys['Enter'] = splitListItemKeepMarks(schema.nodes.list_item);\n }\n return keys;\n};\n","export const listsTypes = {\n orderedList: 'ordered_list',\n bulletList: 'bullet_list',\n listItem: 'list_item'\n};\n/**\n * The object of the OrderedList tool settings.\n */\nexport const orderedList = {\n listType: listsTypes.orderedList,\n types: Object.assign({}, listsTypes)\n};\n/**\n * The object of the UnorderedList tool settings.\n */\nexport const bulletList = {\n listType: listsTypes.bulletList,\n types: Object.assign({}, listsTypes)\n};\n","import { Schema } from 'prosemirror-model';\nimport { tableNodes } from 'prosemirror-tables';\nimport { domToPmDoc, htmlToFragment, pmDocToFragment } from '../source';\nimport { rowTypeAttr, colgroupAttr, resizableAttr } from './constants';\nconst hole = 0;\nconst blockquoteDOM = ['blockquote', hole], hrDOM = ['hr'], preDOM = ['pre', ['code', hole]];\nconst olDOM = ['ol', 0], ulDOM = ['ul', 0], liDOM = ['li', 0];\nconst domAttributes = (dom) => {\n const result = {};\n let attributes = dom.attributes, attr;\n for (let i = 0; i < attributes.length; i++) {\n attr = attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n};\nconst defaultAttrs = (attrs) => {\n const nodeAttrs = {};\n attrs.forEach(attr => {\n nodeAttrs[attr] = { default: null };\n });\n return nodeAttrs;\n};\nconst commonAttributes = () => defaultAttrs(['style', 'class', 'id']);\nconst hasAttrs = (attrs, exclude) => {\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n return true;\n }\n }\n return false;\n};\nconst pmAttributes = (attrs, exclude = []) => {\n const result = {};\n for (let attr in attrs) {\n if (attr && attrs[attr] !== null && !exclude.find(e => e === attr)) {\n result[attr] = attrs[attr];\n }\n }\n return result;\n};\nconst tagMark = tag => {\n return {\n [tag]: {\n name: tag,\n inclusive: true,\n parseDOM: [{ tag: tag }],\n toDOM: () => [tag, hole]\n }\n };\n};\nconst marks = Object.assign({ \n // :: MarkSpec A link. Has `href` and `title` attributes. `title`\n // defaults to the empty string. Rendered and parsed as an ``\n // element.\n link: {\n attrs: Object.assign({}, commonAttributes(), { href: { default: null }, target: { default: null }, title: { default: null } }),\n inclusive: false,\n parseDOM: [{ tag: 'a', getAttrs: domAttributes }],\n toDOM: (node) => ['a', pmAttributes(node.attrs), hole]\n } }, tagMark('strong'), tagMark('b'), tagMark('em'), tagMark('i'), tagMark('u'), tagMark('del'), tagMark('sub'), tagMark('sup'), tagMark('code'), { style: {\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'span',\n getAttrs: domAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ?\n ['span', pmAttributes(node.attrs), hole] : ['span', hole]\n } });\nconst cellAttribute = (name) => {\n return {\n [name]: {\n default: null,\n getFromDOM: (cell) => cell.getAttribute(name),\n setDOMAttr: (value, attrs) => { attrs[name] = value; }\n }\n };\n};\nconst cellAttributes = Object.assign({}, cellAttribute('style'), cellAttribute('class'), cellAttribute('id'), cellAttribute('headers'));\nconst colgroupNodes = {\n doc: { content: 'colgroup*' },\n col: {\n attrs: defaultAttrs(['id', 'class', 'style', 'span']),\n parseDOM: [{ getAttrs: domAttributes, tag: 'col' }],\n toDOM: node => ['col', node.attrs]\n },\n colgroup: {\n attrs: defaultAttrs(['id', 'class', 'style', 'span']),\n content: 'col*',\n parseDOM: [{ getAttrs: domAttributes, tag: 'colgroup' }],\n toDOM: node => ['colgroup', node.attrs, 0]\n },\n text: { inline: true, group: 'inline' }\n};\nconst colgroupSchema = new Schema({ nodes: colgroupNodes, marks: {} });\n// will be removed when we implement our own columnResizing\nconst shouldSkipColgroup = (node) => {\n let shouldSkip = false;\n const row = node.child(0);\n for (let r = 0; r < row.childCount; r++) {\n const cell = row.child(r);\n if (cell.attrs.colwidth) {\n shouldSkip = true;\n break;\n }\n }\n return shouldSkip;\n};\nexport const parseStrColgroup = (colgroup) => {\n const doc = domToPmDoc(htmlToFragment(colgroup), colgroupSchema, { preserveWhitespace: false });\n const fragment = pmDocToFragment(doc);\n const colgroupEl = fragment.firstChild;\n return colgroupEl;\n};\nconst tNodes = tableNodes({ tableGroup: 'block', cellContent: 'block+', cellAttributes });\ntNodes.table_row.attrs = Object.assign({}, tNodes.table_row.attrs, defaultAttrs([rowTypeAttr, 'style', 'class', 'id']));\ntNodes.table_row.toDOM = node => ['tr', pmAttributes(node.attrs), 0];\ntNodes.table_row.parseDOM = [{ tag: 'tr', getAttrs: domAttributes }];\ntNodes.table.attrs = Object.assign({}, tNodes.table.attrs, defaultAttrs(['style', 'class', 'id', colgroupAttr, resizableAttr]));\ntNodes.table.toDOM = (node) => {\n const tableAttrs = hasAttrs(node.attrs) ? pmAttributes(node.attrs, [colgroupAttr, resizableAttr]) : {};\n let colgroup = null;\n if (node.attrs[colgroupAttr] && !shouldSkipColgroup(node)) {\n const colgroupEl = parseStrColgroup(node.attrs[colgroupAttr]);\n if (colgroupEl) {\n const cols = Array.from(colgroupEl.children).map((c) => ['col', domAttributes(c)]);\n colgroup = [\n 'colgroup',\n domAttributes(colgroupEl)\n ].concat(cols);\n }\n }\n return colgroup ? ['table', tableAttrs, colgroup, ['tbody', 0]] :\n ['table', tableAttrs, ['tbody', 0]];\n};\ntNodes.table.parseDOM = [{\n tag: 'table',\n getAttrs: (node) => {\n const attrs = domAttributes(node);\n const colgroup = Array.from(node.childNodes).find(c => c.nodeName === 'COLGROUP');\n if (colgroup) {\n attrs[colgroupAttr] = colgroup.outerHTML;\n }\n return attrs;\n }\n }];\nconst nodes = Object.assign({ \n // :: NodeSpec The top level document node.\n doc: {\n content: 'block+'\n }, \n // :: NodeSpec A plain paragraph textblock. Represented in the DOM\n // as a `

    ` element.\n paragraph: {\n content: 'inline*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'p',\n getAttrs: domAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['p', pmAttributes(node.attrs), hole] : ['p', hole]\n }, div: {\n // Uncaught SyntaxError: Mixing inline and block content (in content expression '(block | inline)*')\n // content: '(block | inline)*',\n content: 'block*',\n group: 'block',\n attrs: Object.assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'div',\n getAttrs: domAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['div', pmAttributes(node.attrs), hole] : ['div', hole]\n }, \n // :: NodeSpec A blockquote (`

    `) wrapping one or more blocks.\n blockquote: {\n attrs: Object.assign({}, commonAttributes()),\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{\n tag: 'blockquote',\n getAttrs: domAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['blockquote', pmAttributes(node.attrs), hole] : blockquoteDOM\n }, \n // :: NodeSpec A horizontal rule (`
    `).\n horizontal_rule: {\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM: () => hrDOM\n }, \n // :: NodeSpec A heading textblock, with a `level` attribute that\n // has to hold the numbers from 1 to 6. Parsed and serialized as `

    ` to\n // `

    ` elements.\n heading: {\n attrs: Object.assign({}, commonAttributes(), { level: { default: 1 } }),\n content: 'inline*',\n group: 'block',\n defining: true,\n parseDOM: [\n { tag: 'h1', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 1 })) },\n { tag: 'h2', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 2 })) },\n { tag: 'h3', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 3 })) },\n { tag: 'h4', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 4 })) },\n { tag: 'h5', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 5 })) },\n { tag: 'h6', getAttrs: node => (Object.assign({}, domAttributes(node), { level: 6 })) }\n ],\n toDOM: node => hasAttrs(node.attrs, 'level') ?\n ['h' + node.attrs.level, pmAttributes(node.attrs, ['level']), hole] :\n ['h' + node.attrs.level, hole]\n }, \n // :: NodeSpec A code listing. Disallows marks or non-text inline\n // nodes by default. Represented as a `
    ` element with a\n    // `` element inside it.\n    code_block: {\n        content: 'text*',\n        marks: '',\n        group: 'block',\n        code: true,\n        defining: true,\n        parseDOM: [{ tag: 'pre', preserveWhitespace: 'full' }],\n        toDOM: () => preDOM\n    }, \n    // :: NodeSpec The text node.\n    text: {\n        inline: true,\n        group: 'inline'\n    }, \n    // :: NodeSpec An inline image (``) node. Supports `src`,\n    // `alt`, and `href` attributes. The latter two default to an empty\n    // string.\n    image: {\n        inline: true,\n        attrs: Object.assign({ src: { default: null }, alt: { default: null }, title: { default: null }, width: { default: null }, height: { default: null } }, commonAttributes()),\n        group: 'inline',\n        draggable: true,\n        parseDOM: [{ tag: 'img', getAttrs: domAttributes }],\n        toDOM: node => hasAttrs(node.attrs) ? ['img', pmAttributes(node.attrs)] : ['img']\n    }, \n    // :: NodeSpec A hard line break represented in the DOM as a `
    ` element.\n hard_break: {\n inline: true,\n attrs: Object.assign({}, commonAttributes()),\n group: 'inline',\n selectable: false,\n parseDOM: [{\n tag: 'br',\n getAttrs: domAttributes\n }],\n toDOM: node => hasAttrs(node.attrs) ? ['br', pmAttributes(node.attrs)] : ['br']\n }, \n // :: NodeSpec\n // An ordered list [node spec](#model.NodeSpec). Has a single\n // attribute, `order`, which determines the number at which the list\n // starts counting, and defaults to 1. Represented as an `
      `\n // element.\n ordered_list: {\n content: 'list_item+',\n group: 'block',\n attrs: Object.assign({}, commonAttributes(), { type: { default: null }, order: { default: 1 } }),\n parseDOM: [{ tag: 'ol', getAttrs: (dom) => {\n return Object.assign({}, domAttributes(dom), { order: dom.hasAttribute('start') ? parseInt(dom.getAttribute('start') || '1', 10) : 1 });\n } }],\n toDOM: node => {\n return node.attrs.order === 1 ?\n (hasAttrs(node.attrs, 'order') ? ['ol', pmAttributes(node.attrs, ['order']), hole] : olDOM) :\n ['ol', Object.assign({}, pmAttributes(node.attrs, ['order']), { start: node.attrs.order }), hole];\n }\n }, \n // :: NodeSpec\n // A bullet list node specification represented in the DOM as a `
  • ' + cols.reduce((acc, cur) => acc + cur.outerHTML, '') + '' });\n }\n let width = parseFloat(col.style.width);\n const tr = view.state.tr.setMeta(key, { setDragging: { startX: event.clientX, startWidth: width } });\n if (!tableDom.style.width) {\n const widths = Array.from(col.parentNode.children).map((c) => c.style.width);\n if (widths.every(Boolean)) {\n const sum = widths.reduce((acc, cur) => acc + parseFloat(cur), 0);\n tableAttrs = setNodeStyle(tableAttrs || tableNode.attrs, 'width', sum + 'px');\n }\n }\n if (tableAttrs) {\n const tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n view.dispatch(tr);\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n let curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n const transaction = view.state.tr;\n updateColumnWidth(view, transaction, curPluginState.activeHandle, draggedWidth(curPluginState.dragging, ev, cellMinWidth));\n view.dispatch(transaction.setMeta(key, { setDragging: null }));\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n let curPluginState = key.getState(view.state);\n let dragged = draggedWidth(curPluginState.dragging, ev, cellMinWidth);\n displayColumnWidth(view, curPluginState.activeHandle, dragged, cellMinWidth);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction edgeCell(view, event, indexes) {\n let found = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!found) {\n return -1;\n }\n let $pos = view.state.doc.resolve(found.pos);\n let parentTable = parentNode($pos, n => n.type.spec.tableRole === 'table');\n if (parentTable === null) {\n return -1;\n }\n let tablePos = $pos.start(parentTable.depth);\n const tableNode = parentTable.node;\n const map = TableMap.get(tableNode);\n const cell = tablePos + map.map[(map.width * indexes.rowIndex) + indexes.cellIndex];\n return cell;\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n let offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n const tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateColumnWidth(view, tr, cell, _width) {\n let $cell = view.state.doc.resolve(cell);\n let tableNode = $cell.node(-1), start = $cell.start(-1);\n const tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n const tableDom = view.nodeDOM(start).closest('table');\n let attrs = tableNode.attrs;\n if (tableNode && attrs[colgroupAttr]) {\n const colgroup = tableDom.firstChild;\n attrs = Object.assign({}, attrs, { [colgroupAttr]: colgroup.outerHTML });\n }\n const tableDomWidth = tableDom.style.width;\n if (tableDom && tableDomWidth && parseStyle(attrs.style).width !== tableDomWidth) {\n attrs = setNodeStyle(attrs, 'width', tableDomWidth);\n tr.setNodeMarkup(tablePos, null, attrs);\n }\n}\nfunction displayColumnWidth(view, cell, width, _cellMinWidth) {\n let $cell = view.state.doc.resolve(cell);\n let table = $cell.node(-1), start = $cell.start(-1);\n let col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n let dom = view.domAtPos($cell.start(-1)).node;\n if (dom.nodeName !== 'TABLE') {\n dom = dom.closest('table');\n }\n const tableDom = dom;\n const colgroup = tableDom.firstChild;\n const cols = Array.from(colgroup.children);\n cols[col].style.width = width + 'px';\n if (tableDom.style.width) {\n const widths = cols.map(c => c.style.width);\n if (widths.every(Boolean)) {\n const sum = widths.reduce((acc, cur) => acc + parseFloat(cur), 0);\n tableDom.style.width = sum + 'px';\n }\n }\n}\nfunction handleDecorations(state, cell) {\n let decorations = [];\n let $cell = state.doc.resolve(cell);\n let table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n let col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (let row = 0; row < map.height; row++) {\n let index = col + row * map.width - 1;\n // For positions that are have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if ((col === map.width || map.map[index] !== map.map[index + 1]) &&\n (row === 0 || map.map[index - 1] !== map.map[index - 1 - map.width])) {\n let cellPos = map.map[index];\n let pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n let dom = document.createElement('div');\n dom.className = 'column-resize-handle';\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations);\n}\n","import { columnResizing } from './column-resize';\nimport { tableResizing as tableResize } from './table-resize';\nimport { rowResizing } from './row-resize';\nexport const tableResizing = () => [\n tableResize(),\n columnResizing(),\n rowResizing()\n];\nexport { tableResizeKey, tableColumnResizeKey, tableRowResizeKey } from './utils';\n","import { Plugin } from 'prosemirror-state';\nimport { TableMap, tableNodeTypes } from 'prosemirror-tables';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { domCellAround, otherResizeHandle, otherResizing, parentNode, parseStyle, setNodeStyle, tableRowResizeKey as key } from './utils';\nclass TableRowView {\n ignoreMutation(record) {\n return record.type === 'attributes' && record.attributeName === 'style' && record.target.nodeName === 'TR';\n }\n}\nexport function rowResizing() {\n const handleWidth = 5;\n let plugin = new Plugin({\n key,\n state: {\n init(_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).row.name] = (_node, _view) => new TableRowView();\n return new ResizeState(-1, null);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes(state) {\n if (otherResizeHandle(key, state)) {\n return null;\n }\n let pluginState = key.getState(state);\n return pluginState.activeHandle > -1 ? { class: 'resize-cursor-vertical' } : null;\n },\n handleDOMEvents: {\n mousemove(view, event) {\n if (!otherResizing(key, view.state)) {\n handleMouseMove(view, event, handleWidth);\n }\n return false;\n },\n mouseleave(view) {\n handleMouseLeave(view);\n return false;\n },\n mousedown(view, event) {\n return handleMouseDown(view, event);\n }\n },\n decorations(state) {\n if (otherResizing(key, state)) {\n return DecorationSet.empty;\n }\n let pluginState = key.getState(state);\n if (pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole === 'row' && $pos.nodeAfter;\n}\nclass ResizeState {\n constructor(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n apply(tr) {\n let state = this, action = tr.getMeta(key);\n if (action && action.setHandle != null) {\n return new ResizeState(action.setHandle, null);\n }\n if (action && action.setDragging !== undefined) {\n return new ResizeState(state.activeHandle, action.setDragging);\n }\n if (state.activeHandle > -1) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = null;\n }\n state = new ResizeState(handle, state.dragging);\n }\n return state;\n }\n}\nfunction handleMouseMove(view, event, handleWidth) {\n let pluginState = key.getState(view.state);\n if (!pluginState.dragging) {\n let target = domCellAround(event.target), row = -1;\n if (target) {\n const rowDom = target.parentNode;\n let domRect = rowDom.getBoundingClientRect();\n if (Math.abs(event.clientY - domRect.top) <= handleWidth && rowDom.rowIndex > 0) {\n row = edgeRow(view, event, rowDom.rowIndex - 1);\n }\n else if (domRect.bottom - event.clientY > 0 && domRect.bottom - event.clientY <= handleWidth) {\n row = edgeRow(view, event, rowDom.rowIndex);\n }\n }\n if (row !== pluginState.activeHandle) {\n updateHandle(view, row);\n }\n }\n}\nfunction handleMouseLeave(view) {\n let pluginState = key.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) {\n updateHandle(view, -1);\n }\n}\nfunction handleMouseDown(view, event) {\n let pluginState = key.getState(view.state);\n if (pluginState.activeHandle === -1 || pluginState.dragging) {\n return false;\n }\n const doc = view.state.doc;\n let $pos = doc.resolve(pluginState.activeHandle);\n let row = doc.nodeAt(pluginState.activeHandle);\n let table = $pos.parent;\n let rowHeightStr = parseStyle(row.attrs.style).height;\n let tableHeight = parseStyle(table.attrs.style).height;\n let rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;\n if (!rowHeightStr) {\n const tr = view.nodeDOM(pluginState.activeHandle);\n rowHeight = tr.offsetHeight;\n }\n view.dispatch(view.state.tr.setMeta(key, {\n setDragging: {\n startY: event.clientY,\n startHeight: { rowHeight, tableHeight }\n }\n }));\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n let curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n const tr = view.state.tr.setMeta(key, { setDragging: null });\n updateRowHeight(view, tr, curPluginState.activeHandle);\n view.dispatch(tr);\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n let curPluginState = key.getState(view.state);\n let dragged = draggedHeight(curPluginState.dragging, ev);\n let offset = ev.clientY - curPluginState.dragging.startY;\n displayRowHeight(view, curPluginState.activeHandle, dragged, offset, tableHeight);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction edgeRow(view, event, rowIndex) {\n let found = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (!found) {\n return -1;\n }\n let $pos = view.state.doc.resolve(found.pos);\n let parentTable = parentNode($pos, n => n.type.spec.tableRole === 'table');\n if (parentTable === null) {\n return -1;\n }\n let tablePos = $pos.start(parentTable.depth);\n const tableNode = parentTable.node;\n const map = TableMap.get(tableNode);\n const row = tablePos + map.map[(map.width * rowIndex)] - 1;\n return row;\n}\nfunction draggedHeight(dragging, event) {\n let offset = event.clientY - dragging.startY;\n return dragging.startHeight.rowHeight + offset;\n}\nfunction updateHandle(view, value) {\n const tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateRowHeight(view, tr, rowPos) {\n const doc = view.state.doc;\n let row = doc.nodeAt(rowPos);\n const dom = view.nodeDOM(rowPos);\n const win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;\n dom.style.height = win.getComputedStyle(dom).height;\n tr.setNodeMarkup(rowPos, null, setNodeStyle(row.attrs, 'height', dom.style.height));\n const table = dom && dom.closest('table');\n const tableHeight = table && table.style.height;\n if (tableHeight) {\n let $pos = doc.resolve(rowPos);\n let tablePos = $pos.start($pos.depth) - 1;\n tr.setNodeMarkup(tablePos, null, setNodeStyle($pos.parent.attrs, 'height', tableHeight));\n }\n}\nfunction displayRowHeight(view, rowPos, height, offset, tableHeight) {\n const dom = view.nodeDOM(rowPos);\n if (dom) {\n dom.style.height = height + 'px';\n const win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;\n dom.style.height = win.getComputedStyle(dom).height;\n const table = dom.closest('table');\n const newHeight = (parseFloat(tableHeight) + offset) + 'px';\n const current = table && table.style.height;\n if (current && current !== newHeight) {\n table.style.height = (parseFloat(tableHeight) + offset) + 'px';\n table.style.height = win.getComputedStyle(table).height;\n }\n }\n}\nfunction handleDecorations(state, pos) {\n let decorations = [];\n if (typeof pos !== 'number') {\n return DecorationSet.empty;\n }\n let $row = state.doc.resolve(pos), table = $row.parent, map = TableMap.get(table), rowIndex = $row.index($row.depth), start = $row.start($row.depth);\n for (let col = 0; col < map.width; col++) {\n let index = col + rowIndex * map.width;\n let cellPos = map.map[index];\n const cell = table.nodeAt(cellPos);\n let widgetPos = start + cellPos + (cell ? cell.nodeSize : 0) - 1;\n let dom = document.createElement('div');\n dom.className = 'row-resize-handle';\n decorations.push(Decoration.widget(widgetPos, dom));\n }\n return DecorationSet.create(state.doc, decorations);\n}\n","import { NodeSelection, Plugin } from 'prosemirror-state';\nimport { colgroupAttr, dataResizeDirTable, resizableAttr } from '../../config/constants';\nimport { getTable, parentNode, parseStyle, setNodeStyle, tableResizeKey as key } from './utils';\nimport { directions } from './../resize-utils';\nconst commonDir = {\n 'southeast': true,\n 'southwest': true,\n 'northwest': true,\n 'northeast': true\n};\nconst horizontalDir = Object.assign({ 'east': true, 'west': true }, commonDir);\nconst verticalDir = Object.assign({ 'south': true, 'north': true }, commonDir);\nclass ResizeState {\n constructor(activeHandle, dragging, nodePosition) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n this.nodePosition = nodePosition;\n }\n apply(tr) {\n let state = this, next = tr.getMeta(key);\n if (next) {\n const nextState = new ResizeState(next.activeHandle, next.setDragging, next.nodePosition);\n return nextState;\n }\n return state;\n }\n}\nconst handleMouseMove = (view, event) => {\n const state = key.getState(view.state);\n const { dragging, nodePosition, activeHandle } = state;\n if (nodePosition < 0 || !dragging) {\n return;\n }\n let tableDom = getTable(view.nodeDOM(nodePosition));\n const rect = tableDom.getBoundingClientRect();\n const dir = directions[activeHandle];\n const diffX = (event.clientX - dragging.startX) * dir.x;\n const diffY = (event.clientY - dragging.startY) * dir.y;\n const win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n const compStyles = win.getComputedStyle(tableDom);\n const nodeWidth = /px/.test(compStyles.width) ? parseFloat(compStyles.width) : tableDom.offsetWidth;\n const nodeHeight = /px/.test(compStyles.height) ? parseFloat(compStyles.height) : tableDom.offsetHeight;\n const width = dir.x ? diffX + nodeWidth : rect.width;\n const height = dir.y ? diffY + nodeHeight : rect.height;\n dragging.startX = dir.x ? event.clientX : dragging.startX;\n dragging.startY = dir.y ? event.clientY : dragging.startY;\n if (horizontalDir[activeHandle]) {\n tableDom.style.width = width + 'px';\n }\n if (verticalDir[activeHandle]) {\n tableDom.style.height = height + 'px';\n }\n};\nconst toPercents = (view, tr, tablePos) => {\n const tableNode = view.state.doc.nodeAt(tablePos);\n const tableDom = getTable(view.nodeDOM(tablePos));\n const { width, height, colsWidth, rowsHeight, offsetWidth, offsetHeight } = tableSize(tableDom);\n const colgroup = tableDom.firstChild;\n const cols = Array.from((colgroup && colgroup.children) || []);\n let widthChanged = false;\n cols.forEach((col, i) => {\n if (col.style.width && !/%$/.test(col.style.width)) {\n col.style.width = ((colsWidth[i]) * 100 / width) + '%';\n widthChanged = true;\n }\n });\n let heightChange = false;\n tableNode.forEach((row, offset, index) => {\n const rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/%$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', (rowsHeight[index] * 100 / height) + '%'));\n heightChange = true;\n }\n });\n let tableAttrs = tableNode.attrs;\n if (parseStyle(tableAttrs.style).width !== offsetWidth + 'px') {\n tableAttrs = setNodeStyle(tableAttrs, 'width', offsetWidth + 'px');\n }\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n if (heightChange) {\n tableAttrs = setNodeStyle(tableAttrs, 'height', offsetHeight + 'px');\n }\n if (widthChanged || heightChange) {\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n};\nconst toPixels = (view, tr, tablePos, attrs) => {\n const tableNode = view.state.doc.nodeAt(tablePos);\n const tableDom = getTable(view.nodeDOM(tablePos));\n const win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n const calcStyle = win.getComputedStyle;\n const rows = Array.from(tableDom.rows);\n tableNode.forEach((row, offset, index) => {\n const rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/px$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', calcStyle(rows[index]).height));\n }\n });\n const colgroup = tableDom.firstChild;\n const cols = Array.from((colgroup && colgroup.children) || []);\n let widthChanged = false;\n cols.forEach((col, i) => {\n if (col.style.width && !/px$/.test(col.style.width)) {\n col.style.width = calcStyle(cols[i]).width;\n widthChanged = true;\n }\n });\n let tableAttrs = Object.assign({}, attrs);\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n return tableAttrs;\n};\nconst tableSize = (table) => {\n const cols = Array.from(table.firstChild.children);\n const colsWidth = cols.map(c => c.offsetWidth);\n const rowsHeight = Array.from(table.rows).map(row => row.offsetHeight);\n const width = colsWidth.reduce((acc, cur) => acc + cur, 0);\n const height = rowsHeight.reduce((acc, cur) => acc + cur, 0);\n const offsetHeight = table.offsetHeight;\n const offsetWidth = table.offsetWidth;\n return { width, height, colsWidth, rowsHeight, offsetWidth, offsetHeight };\n};\nconst handleMouseUp = (view) => {\n const { dragging, nodePosition, activeHandle } = key.getState(view.state);\n if (dragging) {\n const node = view.state.doc.nodeAt(nodePosition);\n const dom = getTable(view.nodeDOM(nodePosition));\n const rect = tableSize(dom);\n if (node) {\n const width = rect.offsetWidth + 'px';\n const height = rect.offsetHeight + 'px';\n const tr = view.state.tr;\n let attrs = node.attrs;\n const parsedStyles = parseStyle(attrs.style);\n if (horizontalDir[activeHandle] && dom.style.width && parsedStyles.width !== width) {\n attrs = setNodeStyle(attrs, 'width', width);\n }\n if (verticalDir[activeHandle] && dom.style.height && parsedStyles.height !== height) {\n attrs = setNodeStyle(attrs, 'height', height);\n }\n attrs = toPixels(view, tr, nodePosition, attrs);\n tr.setNodeMarkup(nodePosition, null, attrs);\n tr.setMeta('commandName', 'node-resize');\n tr.setMeta('args', attrs);\n tr.setMeta(key, {\n setDragging: null,\n activeHandle: null,\n nodePosition\n });\n view.dispatch(tr);\n }\n }\n};\nconst handleMouseDown = (view, event) => {\n const target = event.target;\n const activeHandle = target.getAttribute(dataResizeDirTable);\n if (!activeHandle) {\n return false;\n }\n const resizeState = key.getState(view.state);\n event.preventDefault();\n const transaction = view.state.tr;\n transaction.setMeta(key, {\n setDragging: { startX: event.clientX, startY: event.clientY },\n activeHandle,\n nodePosition: resizeState.nodePosition\n });\n transaction.setMeta('addToHistory', false);\n toPercents(view, transaction, resizeState.nodePosition);\n view.dispatch(transaction);\n const curWindow = event.view || window;\n function move(e) {\n handleMouseMove(view, e);\n }\n function finish(_e) {\n curWindow.removeEventListener('mouseup', finish);\n curWindow.removeEventListener('mousemove', move);\n handleMouseUp(view);\n }\n curWindow.addEventListener('mouseup', finish);\n curWindow.addEventListener('mousemove', move);\n return true;\n};\nexport const tableResizing = (options = { node: 'table' }) => {\n return new Plugin({\n key: key,\n view: (_viewObj) => ({\n selectedNode(state, nodeType) {\n const selection = state.selection;\n const isNodeSelected = selection instanceof NodeSelection && nodeType === selection.node.type;\n if (isNodeSelected && selection instanceof NodeSelection) {\n return { node: selection.node, pos: selection.from };\n }\n const parent = parentNode(selection.$from, (n) => n.type === nodeType);\n const node = parent && parent.node;\n if (node) {\n let tableDepth = new Array(selection.$from.depth + 1).fill(0)\n .findIndex((_, i) => selection.$from.node(i).type.spec.tableRole === 'table');\n const pos = selection.$from.start(tableDepth) - 1;\n return { node, pos };\n }\n return null;\n },\n update(view, prevState) {\n const state = view.state;\n const nodeType = state.schema.nodes[options.node];\n const selected = this.selectedNode(state, nodeType);\n const prevSelected = this.selectedNode(prevState, nodeType);\n if (!selected && prevSelected && !prevState.doc.eq(view.state.doc)) {\n // selected table is deleted\n return;\n }\n if (selected || prevSelected) {\n const tr = state.tr;\n tr.setMeta('addToHistory', false);\n if (selected && prevSelected && selected.pos !== prevSelected.pos) {\n tr.setMeta(key, { nodePosition: selected.pos });\n tr.setNodeMarkup(prevSelected.pos, nodeType, Object.assign({}, prevSelected.node.attrs, { [resizableAttr]: false }));\n tr.setNodeMarkup(selected.pos, nodeType, Object.assign({}, selected.node.attrs, { [resizableAttr]: true }));\n view.dispatch(tr);\n }\n else if (selected && prevSelected && selected.pos === prevSelected.pos &&\n !selected.node.attrs[resizableAttr] && !state.selection.eq(prevState.selection)) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, Object.assign({}, selected.node.attrs, { [resizableAttr]: true })));\n }\n else if (selected && !prevSelected) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, Object.assign({}, selected.node.attrs, { [resizableAttr]: true })));\n }\n else if (!selected && prevSelected) {\n tr.setMeta(key, { nodePosition: -1 });\n view.dispatch(tr.setNodeMarkup(prevSelected.pos, nodeType, Object.assign({}, prevSelected.node.attrs, { [resizableAttr]: false })));\n }\n }\n }\n }),\n state: {\n init() {\n return new ResizeState('', null, -1);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n handleDOMEvents: {\n mousedown(view, event) {\n return handleMouseDown(view, event);\n }\n }\n }\n });\n};\n","import { colgroupAttr, dataResizeDirTable, resizableAttr, resizableWrap, resizeHandle } from '../../config/constants';\nimport { parseStrColgroup } from '../../config/schema';\nimport { handles } from './../resize-utils';\nexport class TableView {\n constructor(node, view) {\n this.node = node;\n this.view = view;\n this.dom = document.createElement('div');\n this.dom.className = resizableWrap;\n this.table = this.dom.appendChild(document.createElement('table'));\n if (node.attrs[colgroupAttr]) {\n this.renderColgroup(node.attrs[colgroupAttr]);\n }\n const tBody = this.table.appendChild(document.createElement('tbody'));\n this.setAttributes(this.table, node.attrs);\n this.resizeHandles = handles.map(dir => {\n const handle = document.createElement('span');\n handle.className = resizeHandle + ' ' + dir;\n handle.setAttribute(dataResizeDirTable, dir);\n return handle;\n });\n this.contentDOM = tBody;\n }\n update(node) {\n if (node.type !== this.node.type) {\n return false;\n }\n const prev = this.node;\n this.node = node;\n if (node.attrs[resizableAttr]) {\n this.resizeHandles.forEach(handle => {\n this.dom.appendChild(handle);\n });\n }\n else {\n Array.from(this.dom.children)\n .filter((e) => e.classList.contains(resizeHandle))\n .forEach((e) => e.remove());\n }\n this.setAttributes(this.table, node.attrs);\n if (prev.attrs[colgroupAttr] !== node.attrs[colgroupAttr]) {\n this.renderColgroup(node.attrs[colgroupAttr]);\n }\n return true;\n }\n ignoreMutation(record) {\n const result = record.type === 'attributes' &&\n (record.target === this.table ||\n record.target.firstChild === this.table ||\n (this.colgroup && this.colgroup.contains(record.target)));\n return result;\n }\n destroy() {\n this.node = undefined;\n this.view = undefined;\n this.table = undefined;\n this.colgroup = undefined;\n this.resizeHandles = undefined;\n }\n renderColgroup(colgroupStr) {\n if (this.table && this.table.firstChild && this.table.firstChild.nodeName === 'COLGROUP') {\n this.table.removeChild(this.table.firstChild);\n }\n if (colgroupStr) {\n this.colgroup = parseStrColgroup(colgroupStr);\n this.table.insertBefore(this.colgroup, this.table.firstChild);\n }\n }\n setAttributes(table, attrs) {\n const skip = [colgroupAttr, resizableAttr];\n for (let attrName in attrs) {\n if (attrName && skip.indexOf(attrName) === -1) {\n const current = table.getAttribute(attrName);\n const next = attrs[attrName];\n if (next && next !== current) {\n table.setAttribute(attrName, next);\n }\n else if (!next) {\n table.removeAttribute(attrName);\n }\n }\n }\n }\n}\n","import { PluginKey } from 'prosemirror-state';\nimport { changeStylesString } from '../../utils';\nexport const reAnyValue = /^.+$/;\nexport const parseStyle = (styleText) => {\n const styles = (styleText || '').split(/\\s*;\\s*/).filter(Boolean).map(s => {\n const nameValue = s.split(/\\s*:\\s*/);\n return { [nameValue[0]]: nameValue[1] };\n }).reduce((acc, val) => (Object.assign({}, acc, val)), {});\n return styles;\n};\nexport function setNodeStyle(nodeAttrs, styleType, value) {\n let attrs;\n if (new RegExp('[^-]?' + styleType + ':').test(nodeAttrs.style || '')) {\n const { style } = changeStylesString(nodeAttrs.style || '', { style: styleType, value: reAnyValue, newValue: value });\n attrs = Object.assign({}, nodeAttrs, { style });\n }\n else if (nodeAttrs.style) {\n attrs = Object.assign({}, nodeAttrs, { style: nodeAttrs.style.replace(/;$/, '') + '; ' + styleType + ': ' + value + ';' });\n }\n else {\n attrs = Object.assign({}, nodeAttrs, { style: styleType + ': ' + value + ';' });\n }\n return attrs;\n}\nexport const tableResizeKey = new PluginKey('table-resize');\nexport const tableColumnResizeKey = new PluginKey('table-column-resizing');\nexport const tableRowResizeKey = new PluginKey('table-row-resizing');\nexport function otherResizing(current, state) {\n let activeResize = false;\n activeResize = activeResize ||\n (current !== tableResizeKey && Boolean(tableResizeKey.get(state)) && tableResizeKey.getState(state).dragging);\n activeResize = activeResize ||\n (current !== tableColumnResizeKey && Boolean(tableColumnResizeKey.get(state)) && tableColumnResizeKey.getState(state).dragging);\n activeResize = activeResize ||\n (current !== tableRowResizeKey && Boolean(tableRowResizeKey.get(state)) && tableRowResizeKey.getState(state).dragging);\n return activeResize;\n}\nexport function otherResizeHandle(current, state) {\n let activeResize = false;\n activeResize = activeResize ||\n (current !== tableColumnResizeKey &&\n Boolean(tableColumnResizeKey.get(state)) &&\n tableColumnResizeKey.getState(state).activeHandle > -1);\n activeResize = activeResize ||\n (current !== tableRowResizeKey && Boolean(tableRowResizeKey.get(state)) && tableRowResizeKey.getState(state).activeHandle > -1);\n return activeResize;\n}\nexport function getTable(dom) {\n if (dom && dom.firstChild && dom.firstChild.nodeName === 'TABLE') {\n return dom.firstChild;\n }\n return dom;\n}\nexport function domCellAround(target) {\n while (target && target.nodeName !== 'TD' && target.nodeName !== 'TH') {\n target = target.classList.contains('ProseMirror') ? null : target.parentNode;\n }\n return target;\n}\nexport function cellIndexes(cell) {\n const row = cell.parentNode;\n return {\n cellIndex: cell.cellIndex,\n rowIndex: row.rowIndex\n };\n}\nexport function parentNode(pos, predicate) {\n for (let depth = pos.depth; depth > 0; depth--) {\n let node = pos.node(depth);\n if (predicate(node)) {\n return { node, depth };\n }\n }\n return null;\n}\n","import { DOMSerializer, DOMParser as ProseMirrorDOMParser } from 'prosemirror-model';\nimport { AllSelection } from 'prosemirror-state';\nimport { rowTypeAttr, colgroupAttr } from './config/constants';\nconst blockWrappers = [\n 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p',\n 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n];\nconst removeRowType = (table, nodeName) => {\n const wrapper = (table.ownerDocument || document).createElement(nodeName);\n Array.from(table.rows).filter(r => r.getAttribute(rowTypeAttr) === nodeName).forEach(row => {\n row.removeAttribute(rowTypeAttr);\n wrapper.appendChild(row);\n });\n if (wrapper.children.length) {\n table.appendChild(wrapper);\n }\n};\nconst restoreTables = (fragment) => {\n Array.from(fragment.querySelectorAll('table')).forEach((table) => {\n removeRowType(table, 'thead');\n removeRowType(table, 'tbody');\n removeRowType(table, 'tfoot');\n const emptyElement = Array.from(table.children).find(el => el.children.length === 0);\n if (emptyElement) {\n emptyElement.remove();\n }\n });\n};\nconst setRowType = (children, nodeName) => {\n const tag = nodeName.toUpperCase();\n children.filter(c => c.nodeName === tag).forEach(rowsWrapper => {\n Array.from(rowsWrapper.children).forEach(row => {\n row.setAttribute(rowTypeAttr, nodeName);\n if (rowsWrapper.parentNode) {\n rowsWrapper.parentNode.insertBefore(row, rowsWrapper);\n }\n });\n rowsWrapper.remove();\n });\n};\nconst validateTablesToPmSchema = (fragment) => {\n Array.from(fragment.querySelectorAll('table')).forEach((table) => {\n const children = Array.from(table.children);\n if (children.some(e => e.nodeName === 'THEAD' || e.nodeName === 'TFOOT')) {\n setRowType(children, 'thead');\n setRowType(children, 'tbody');\n setRowType(children, 'tfoot');\n }\n const colgroup = children.find(c => c.nodeName === 'COLGROUP');\n if (colgroup) {\n table.setAttribute(colgroupAttr, colgroup.outerHTML);\n colgroup.remove();\n }\n });\n};\n/**\n * Trims the whitespace around the provided block nodes.\n *\n * @param html - Input HTML content\n * @param trimAroundTags - Block elements to which trimming will be applied.\n * Defaults to block nodes of the current default schema:\n * 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p'\n * and additional table and semantic nodes from the default Angular Editor schema:\n * 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n *\n * @returns The trimmed HTML content\n */\nexport const trimWhitespace = (html, trimAroundTags = blockWrappers) => {\n const tags = trimAroundTags.join('|');\n return html.replace(new RegExp('\\\\s*(<(?:' + tags + ')(?:\\\\s[^>]*?)?>)', 'g'), '$1')\n .replace(new RegExp('(<\\\\/(?:' + tags + ')(?:\\\\s[^>]*?)?>)\\\\s*', 'g'), '$1');\n};\n/**\n * Creates a DocumentFragment from the given HTML content.\n *\n * @param html\n * @returns DocumentFragment\n */\nexport const htmlToFragment = (html) => {\n const template = document.createElement('template');\n let fragment;\n if ('content' in template) {\n template.innerHTML = html;\n fragment = template.content;\n }\n else {\n // Internet Explorer\n const parsedDocument = new DOMParser().parseFromString(html, 'text/html');\n fragment = document.createDocumentFragment();\n const dom = parsedDocument.body;\n while (dom && dom.firstChild) {\n fragment.appendChild(dom.firstChild);\n }\n }\n return fragment;\n};\n/**\n * Creates a DocumentFragment from the given ProseMirrorNode.\n * @param doc ProseMirrorNode\n * @returns DocumentFragment\n */\nexport const pmDocToFragment = (doc) => {\n const fragment = DOMSerializer.fromSchema(doc.type.schema).serializeFragment(doc.content);\n restoreTables(fragment);\n return fragment;\n};\n/**\n * Creates a ProseMirrorNode from the given DOM element.\n *\n * @param dom\n * @param schema\n * @param parseOptions\n * @returns ProseMirrorNode\n */\nexport const domToPmDoc = (dom, schema, parseOptions) => {\n return ProseMirrorDOMParser.fromSchema(schema).parse(dom, parseOptions);\n};\n/**\n * Creates a ProseMirrorNode from the given HTML content.\n *\n * @param content - The new HTML content.\n * @param schema - The document schema.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - New ProseMirrorNode instance.\n */\nexport const parseContent = (content, schema, parseOptions) => {\n const dom = htmlToFragment(content);\n validateTablesToPmSchema(dom);\n return domToPmDoc(dom, schema, parseOptions);\n};\n/**\n * A function that serializes the Editor State content as HTML string.\n *\n * @param state - The Editor State\n * @returns - The serialized content\n */\nexport const getHtml = (state) => {\n const fragment = pmDocToFragment(state.doc);\n const container = document.createElement('div');\n container.appendChild(fragment);\n return container.innerHTML;\n};\n/**\n * Replaces the content of the editor with a new one.\n *\n * @param content - The new HTML content.\n * @param commandName - The name of the command.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - Command function that takes an editor `state` and `dispatch` function.\n */\nexport const setHtml = (content, command = 'setHTML', parseOptions = { preserveWhitespace: 'full' }) => (state, dispatch) => dispatch(state.tr\n .setSelection(new AllSelection(state.doc))\n .replaceSelectionWith(parseContent(content, state.schema, parseOptions))\n .setMeta('commandName', command));\n","import { addRowAfter as pmAddRowAfter, addRowBefore as pmAddRowBefore } from 'prosemirror-tables';\nimport { rowTypeAttr } from './config/constants';\n/**\n * Creates a table.\n * @returns Node\n */\nexport const createTable = (nodes, rows, columns) => {\n const { table, table_row, table_cell } = nodes;\n const tableRows = [];\n let cells;\n for (let r = 0; r < rows + 1; r++) {\n cells = [];\n for (let c = 0; c < columns + 1; c++) {\n cells.push(table_cell.createAndFill());\n }\n tableRows.push(table_row.createAndFill(undefined, cells));\n }\n return table.createAndFill(undefined, tableRows);\n};\nconst closest = (selection, name) => {\n const pos = selection.$head;\n for (let i = pos.depth; i > 0; i--) {\n const node = pos.node(i);\n if (node.type.name === name) {\n return {\n pos: pos.before(i),\n node\n };\n }\n }\n return null;\n};\nexport const addRowBefore = (state, dispatch) => {\n const cmdDispatch = dispatch && (tr => {\n const row = closest(tr.selection, 'table_row');\n const table = closest(tr.selection, 'table');\n if (row && table && row.node.attrs[rowTypeAttr]) {\n let index = 0;\n for (let i = 0; i < table.node.nodeSize; i++) {\n if (table.node.child(i).eq(row.node)) {\n index = i;\n break;\n }\n }\n const next = table.node.child(index - 1);\n const from = row.pos - next.nodeSize;\n tr.setNodeMarkup(from, undefined, { [rowTypeAttr]: row.node.attrs[rowTypeAttr] });\n }\n return dispatch(tr);\n });\n return pmAddRowBefore(state, cmdDispatch);\n};\nexport const addRowAfter = (state, dispatch) => {\n const cmdDispatch = dispatch && (tr => {\n const row = closest(tr.selection, 'table_row');\n if (row && row.node.attrs[rowTypeAttr]) {\n const from = row.pos + row.node.nodeSize;\n tr.setNodeMarkup(from, undefined, { [rowTypeAttr]: row.node.attrs[rowTypeAttr] });\n }\n return dispatch(tr);\n });\n return pmAddRowAfter(state, cmdDispatch);\n};\nexport { pmAddRowBefore, pmAddRowAfter };\n","export const insertText = (attrs) => (state, dispatch) => {\n dispatch(state.tr.insertText(attrs.text, attrs.from, attrs.to));\n};\n","import { Node, Fragment } from 'prosemirror-model';\nimport { TextSelection, AllSelection, NodeSelection } from 'prosemirror-state';\nimport { parseContent } from './source';\nexport const changeStylesString = (styleText, newStyle) => {\n const styleToChange = newStyle.style;\n const regExp = newStyle.value;\n const newValue = newStyle.newValue;\n if (!styleText) {\n return { changed: false, style: null };\n }\n const styles = styleText.split(/\\s*;\\s*/).filter(s => Boolean(s));\n const filtered = styles.filter(s => {\n const nameValue = s.split(/\\s*:\\s*/);\n return !(nameValue[0].toLowerCase() === styleToChange && regExp.test(nameValue[1]));\n });\n if (newValue) {\n filtered.push(`${styleToChange}: ${newValue}`);\n }\n return {\n style: filtered.join('; ') + (filtered.length ? ';' : ''),\n changed: Boolean(newValue) || filtered.length !== styles.length\n };\n};\n/**\n * Determines if a given node type can be inserted at the current cursor position.\n */\nexport const canInsert = (state, nodeType) => {\n let $from = state.selection.$from;\n for (let d = $from.depth; d >= 0; d--) {\n let index = $from.index(d);\n if ($from.node(d).canReplaceWith(index, index, nodeType)) {\n return true;\n }\n }\n return false;\n};\nconst getTypeName = (n) => {\n return n instanceof Node ? n.type.name : n.name;\n};\nconst findNthParentNode = (predicate, depth = 1) => {\n return (selection) => {\n const { $from } = selection;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (predicate(node)) {\n depth = depth - 1;\n if (depth === 0) {\n return { depth: i, node };\n }\n }\n }\n };\n};\nexport const findNthParentNodeOfType = (nodeType, depth = 1) => {\n return (selection) => {\n return findNthParentNode((node) => getTypeName(node) === getTypeName(nodeType), depth)(selection);\n };\n};\n/**\n * Inserts the given node at the place of current selection.\n */\nexport const insertNode = (node, scrollIntoView) => (state, dispatch) => {\n const tr = state.tr.replaceSelectionWith(node);\n if (scrollIntoView) {\n tr.scrollIntoView();\n }\n dispatch(tr);\n};\nexport const hasSameMarkup = (dom1, dom2, schema, parseOptions) => {\n const fragment1 = Fragment.from(parseContent(dom1, schema, parseOptions));\n const fragment2 = Fragment.from(parseContent(dom2, schema, parseOptions));\n return fragment1.eq(fragment2);\n};\nexport const getSelectionText = (state) => {\n const sel = state.selection;\n if (sel instanceof TextSelection || sel instanceof AllSelection) {\n const fragment = sel.content().content;\n return fragment.textBetween(0, fragment.size);\n }\n return '';\n};\nexport const getNodeFromSelection = (state) => {\n if (state.selection instanceof NodeSelection) {\n return state.selection.node;\n }\n};\n/**\n * Returns the text from the selection if only text is selected on a single line.\n * If selection contains leaf nodes (br, image) between text elements or\n * text from multiple block nodes, the function will return empty string.\n *\n * Useful for values of the inputs of Link and Find&Replace dialogs where the inputs value has been retrieved from the selection and\n * should be single line text only.\n */\nexport const selectedLineTextOnly = (state) => {\n let result = '', hasLeafs = false;\n const { selection, doc } = state;\n const { $from, $to, from, to } = selection;\n if ($from.sameParent($to)) {\n doc.nodesBetween(from, to, (node) => {\n hasLeafs = hasLeafs || (node.isLeaf && !node.isText);\n });\n if (!hasLeafs) {\n result = getSelectionText(state);\n }\n }\n return result;\n};\n/**\n * Used by ViewHtml/ViewSource dialogs for making the HTML more readable.\n */\nexport const indentHtml = (content) => {\n return content.replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/ig, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/ig, '
    \\n')\n .replace(/\\n$/, '');\n};\nexport const shallowEqual = (object1, object2) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n return keys1.length === keys2.length &&\n keys1.every(k => object1[k] === object2[k]);\n};\nconst applyToWordDefault = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i };\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * returns modified state and dispatch.\n */\nexport const expandSelection = (state, dispatch, options) => {\n if (!options.applyToWord || !state.selection.empty) {\n return { state, dispatch };\n }\n const applyToWordOptions = options.applyToWord === true ? applyToWordDefault : options.applyToWord;\n let initialPosition = null;\n const tr = state.tr;\n const selection = state.selection;\n const before = selection.$head.nodeBefore;\n const after = selection.$head.nodeAfter;\n if (before && before.type.name === 'text' && before.text && after && after.type.name === 'text' && after.text) {\n const children = [];\n selection.$head.parent.descendants((node, pos) => {\n children.push({ node, pos });\n return false;\n });\n let cursor = selection.$head.parentOffset;\n const nodeIndex = children.findIndex(({ node, pos }) => pos <= cursor && pos + node.nodeSize >= cursor);\n let text = children[nodeIndex].node.text;\n let skip = false;\n for (let i = nodeIndex - 1; i >= 0; i--) {\n const element = children[i];\n if (!skip && element && element.node.type.name === 'text') {\n text = element.node.text + text;\n }\n else {\n skip = true;\n cursor -= element.node.nodeSize;\n }\n }\n for (let i = nodeIndex + 1; i < children.length; i++) {\n const element = children[i];\n if (element && element.node.type.name === 'text') {\n text = text + element.node.text;\n }\n else {\n break;\n }\n }\n const textBefore = text.substring(0, cursor);\n const textAfter = text.substring(cursor);\n const matchBefore = applyToWordOptions.before.exec(textBefore);\n const matchAfter = applyToWordOptions.after.exec(textAfter);\n if (matchBefore && matchAfter) {\n const extendLeft = matchBefore[0].length;\n const extendRight = matchAfter[0].length;\n const pos = initialPosition = selection.from;\n tr.setSelection(TextSelection.create(state.doc, pos - extendLeft, pos + extendRight));\n const cmdState = {\n tr,\n selection: tr.selection,\n doc: tr.doc,\n storedMarks: null,\n schema: tr.doc.type.schema\n };\n const cmdDispatch = tran => {\n tran.setSelection(TextSelection.create(tran.doc, initialPosition));\n dispatch(tran);\n };\n return { state: cmdState, dispatch: cmdDispatch };\n }\n }\n return { state, dispatch };\n};\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * use the modified state for the passed command.\n * Designed to work with toggleInlineFormat, applyInlineStyle and applyLink functions.\n *\n * Example:\n * const applyToWord: boolean|{before: RegExp, after: RegExp} = true;\n * // or applyToWord = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i }};\n *\n * const command = expandToWordWrap(toggleInlineFormat, {...bold, applyToWord );\n * command(view.state, view.dispatch);\n */\nexport const expandToWordWrap = (command, options) => {\n return (state, dispatch, _view) => {\n const { state: cmdState, dispatch: cmdDispatch } = expandSelection(state, dispatch, options);\n return command(options)(cmdState, cmdDispatch);\n };\n};\n","const KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n const input = encodeUTF8(plainText);\n let output = \"\";\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","export { saveAs } from './save-as';\nexport { encodeBase64 } from './base64';\n","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\n\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","export { default as load } from './cldr/load';\nexport { default as setData } from './cldr/set-data';\nexport { default as dateFieldName } from './cldr/date-field-name';\nexport { default as dateFormatNames } from './cldr/date-format-names';\nexport { cldr, localeInfo } from './cldr/info';\nexport { currencyDisplays, currencyDisplay, currencyFractionOptions, territoryCurrencyCode, localeCurrency } from './cldr/currency';\nexport { default as firstDay } from './cldr/first-day';\nexport { default as weekendRange } from './cldr/weekend-range';\nexport { default as numberSymbols } from './cldr/number-symbols';\n\n","\nexport const DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport const DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\n\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\n\nconst GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n const currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n const displays = [ currency ];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n const { value, currency, currencyDisplay = SYMBOL } = options;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === \"undefined\" || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n const regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n const currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n const { type, nameType, standAlone, lower } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n millisecond: {\n wide: \"millisecond\",\n short: \"ms\",\n narrow: \"ms\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData, NoFirstDay } = errors;\n\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport const cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nconst datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n\n for (let field in fields) {\n const [ fieldName, formatType = 'wide' ] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[ pathIdx ];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\n\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr } from './info';\n\nexport default function setData(data) {\n const locale = data.name;\n const info = cldr[locale] = cldr[locale] || {};\n const supplemental = cldr.supplemental = cldr.supplemental || {};\n\n if (data.likelySubtags) {\n supplemental.likelySubtags = Object.assign(supplemental.likelySubtags || {}, data.likelySubtags);\n }\n\n if (data.currencyData) {\n supplemental.currencyData = supplemental.currencyData || {};\n supplemental.currencyData.fractions = Object.assign(supplemental.currencyData.fractions || {}, data.currencyData);\n }\n\n const numbers = info.numbers;\n\n Object.assign(info, data);\n\n if (numbers && data.numbers) {\n info.numbers = Object.assign({}, numbers, data.numbers);\n }\n}","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n const length = parts.length;\n\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n const name = info.name;\n const identity = info.identity;\n let territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData } = errors;\n\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\n\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\n\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\n\nexport const POINT = \".\";\nexport const EMPTY = \"\";\n\nexport const DEFAULT_LOCALE = \"en\";\n\n","const formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n const values = arguments;\n\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","export default function isString(value) {\n return typeof value === \"string\";\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","const MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","export { default as formatDate } from './dates/format-date';\nexport { default as parseDate } from './dates/parse-date';\nexport { default as splitDateFormat } from './dates/split-date-format';\n","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\n\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\n\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\n\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nconst DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nconst specifiersRegex = {};\nconst resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n const { shortHours, optionalMinutes, separator, localizedName, zZeroOffset } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nconst formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n let formatLength = match.length;\n let result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nconst timeZoneOffsetRegExp = /([+|-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\n\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\n\nconst standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nconst FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nconst TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n let { format, idx } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n let regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n const { gmtFormat, gmtZeroFormat } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n const { shortHours, noSeparator, optionalMinutes, localizedName, zLiteral } = options;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nconst parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n const pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n const count = lookAhead(\"z\", state);\n\n const shortFormat = count < 4;\n\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n const count = lookAhead(\"Z\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n const count = lookAhead(\"x\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n const count = lookAhead(\"X\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n let { year, month, day, hours, minutes, seconds, milliseconds, pmHour, UTC, hoursOffset, minutesOffset } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return `${ leadingSpaces }${ value }${ trailingSpaces }`;\n}\n\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n let result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n const length = parseFormats.length;\n\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nconst LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n let value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n const names = NAME_TYPES[type];\n\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n const toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\n\nclass IntlError {\n constructor({ name, message }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n }\n\n formatMessage(...values) {\n const flattenValues = flatten(values);\n\n const formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return `${this.name}: ${formattedMessage}`;\n }\n\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\n\nconst flatten = function(arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\n\nconst toIntlErrors = function(errors) {\n const predicate = function(prev, name) {\n prev[name] = new IntlError({ name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nconst errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nconst formatRegExp = /\\{(\\d+)(:[^}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","export * from './numbers';\nexport * from './dates';\nexport * from './cldr';\nexport * from './format';\nexport * from './errors';\n","export { default as formatNumber } from './numbers/format-number';\nexport { default as parseNumber } from './numbers/parse-number';","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nconst SHARP = \"#\";\nconst ZERO = \"0\";\n\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${ lastZero }}[1-9]*)0+$`, 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n let { number, format } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n let precision = fraction.length;\n let trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n let { number, format } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n let end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n const { start, end, negative, negativeZero, format, decimalIndex, lastZeroIndex, hasNegativeFormat, hasGroup } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n const display = currencyDisplay(info, options);\n\n return display;\n}\n","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n const info = localeInfo(locale);\n const options = formatOptions(format);\n\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n\n let style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nconst exponentRegExp = /[eE][-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n\n const currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n const { negative: negativeCurrency, number: currencyNumber } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n let isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\n\nconst trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n let { minimumFractionDigits, maximumFractionDigits, style } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${ NUMBER_PLACEHOLDER }`);\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const { style } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n let value = number;\n let symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n const { minimumFractionDigits, maximumFractionDigits } = fractionOptions(options);\n\n value = round(value, maximumFractionDigits);\n\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n\n const parts = value.split(POINT);\n\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n let pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n const result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","var _0x3282=['AgfZ','turOExC=','zNvUy3rPB24=','z3jVDxa=','ChvIBgLZAerHDgu=','zgf0yq==','DgLTzxn0yw1W','vM5SC2O=','rejpz2u=','DfvPvvq=','D01gsvi=','u0Xdu2y=','C2nYAxb0s2v5','Dg9mB2nHBgvtDhjPBMC=','r3bNtu8=','C2v0','ChjVzhvJDe5HBwu=','BgLJzw5ZAw5Nrg9JC1vYBa==','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','DMvYC2LVBG==','C1DHyu0=','ChjVzhvJDhm=','CNfLrgK=','uKP0uwG=','CgfYC2u=','y3DYvhq=','zxHWAxj5rgf0zq==','uMLXufK=','tM8GBgLJzw5ZzsbMB3vUzc4k','tNz1Awe=','z3jVDxbfBMq=','sK1Vvey=','zMLUza==','D2fYBG==','tfDRtxq=','CgfJA2fNzu5HBwu=','Dw5KzwzPBMvK','C3niBfO=','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','ChjVzhvJDenVzgvZ','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG','uhjVz3jLC3mG','tfLwDLa=','BgvUz3rO','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','uvPnu2m=','BMfTzq==','B2jQzwn0','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','zvn3tLG=','u2vLia==','s0PPBvO=','zxbwz0u=','zg9JC1vYBa==','z2v0','DhLWzq==','y29Kzq==','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G'];(function(_0x456c2b,_0x328245){var _0x5a5cad=function(_0x97df7c){while(--_0x97df7c){_0x456c2b['push'](_0x456c2b['shift']());}};_0x5a5cad(++_0x328245);}(_0x3282,0x187));var _0x5a5c=function(_0x456c2b,_0x328245){_0x456c2b=_0x456c2b-0x0;var _0x5a5cad=_0x3282[_0x456c2b];if(_0x5a5c['IhMVZF']===undefined){var _0x97df7c=function(_0xf176a0){var _0x2f5c1a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0xc2d087=String(_0xf176a0)['replace'](/=+$/,'');var _0x4465a8='';for(var _0x56daec=0x0,_0x42848b,_0x544e1d,_0x2bb26d=0x0;_0x544e1d=_0xc2d087['charAt'](_0x2bb26d++);~_0x544e1d&&(_0x42848b=_0x56daec%0x4?_0x42848b*0x40+_0x544e1d:_0x544e1d,_0x56daec++%0x4)?_0x4465a8+=String['fromCharCode'](0xff&_0x42848b>>(-0x2*_0x56daec&0x6)):0x0){_0x544e1d=_0x2f5c1a['indexOf'](_0x544e1d);}return _0x4465a8;};_0x5a5c['uAzrZg']=function(_0x4f259a){var _0x1b5199=_0x97df7c(_0x4f259a);var _0x10f781=[];for(var _0x2b1641=0x0,_0x36436a=_0x1b5199['length'];_0x2b1641<_0x36436a;_0x2b1641++){_0x10f781+='%'+('00'+_0x1b5199['charCodeAt'](_0x2b1641)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10f781);},_0x5a5c['jhAfvh']={},_0x5a5c['IhMVZF']=!![];}var _0x49ba15=_0x5a5c['jhAfvh'][_0x456c2b];return _0x49ba15===undefined?(_0x5a5cad=_0x5a5c['uAzrZg'](_0x5a5cad),_0x5a5c['jhAfvh'][_0x456c2b]=_0x5a5cad):_0x5a5cad=_0x49ba15,_0x5a5cad;};var context={data:' {\\\"timestamp\\\":1618242872,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1646372645},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1646372645},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1646372645},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1646372645}],\\\"integrity\\\":\\\"1x8EqhNjwM2P5DHmU7/XjROaziQ=\\\"} '},cache=new Map();function setScriptKey(_0x3f7888){}function validatePackage(_0x4a1050){if(cache[_0x5a5c('0xf')](_0x4a1050[_0x5a5c('0x3')])){if(_0x5a5c('0x8')!==_0x5a5c('0x8')){function _0x153d7b(){var _0x6f019e=_0x5a5c('0x37')+_0x93d1e0[_0x5a5c('0x32')]+'\\x0a';if(_0x1d58e3[_0x5a5c('0xc')]===0x2)_0x6f019e+=_0x5a5c('0xe')+_0x3814cc[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x105281[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';else{if(_0x333263[_0x5a5c('0xc')]===0x0)_0x6f019e+=_0x5a5c('0x2b');else _0x281f6e[_0x5a5c('0xc')]===0x1&&(_0x6f019e+=_0x5a5c('0x21'));}return _0x6f019e+=_0x5a5c('0x7')+_0xaa3d77[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x6f019e;}}else return cache[_0x5a5c('0xb')](_0x4a1050[_0x5a5c('0x3')]);}var _0x5f3536=_0x4a1050[_0x5a5c('0x22')]?'\\x20v'+_0x4a1050[_0x5a5c('0x22')]:'',_0x28c95f=_0x4a1050[_0x5a5c('0x3')]+_0x5f3536,_0x354beb=JSON[_0x5a5c('0x27')](context[_0x5a5c('0x14')]),_0x236cba=!_0x354beb[_0x5a5c('0x1b')]&&!_0x354beb[_0x5a5c('0x15')],_0x1e1a8d=_0x354beb[_0x5a5c('0x1b')]&&typeof KendoLicensing===_0x5a5c('0x33'),_0x232f89=matchProduct(_0x354beb,_0x4a1050[_0x5a5c('0x36')]),_0x493c49;if(_0x236cba||_0x1e1a8d){if(_0x5a5c('0x1d')===_0x5a5c('0x1d'))_0x493c49={'type':0x0,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x38933e(){var _0x3a76ad=_0x5a5c('0x38')+_0x160df8[_0x5a5c('0x1f')],_0x46900d=typeof _0x4c5dc3[_0x5a5c('0x12')]===_0x5a5c('0x11');_0x46900d?_0x3c6396[_0x5a5c('0x12')](_0x3a76ad):_0x156a7a[_0x5a5c('0x30')](_0x3a76ad),_0x3a6cc8[_0x5a5c('0x30')](_0x20d0d4(_0x4b3d98)),_0x46900d&&_0x126050[_0x5a5c('0x2d')]();}}}else{if(_0x5a5c('0x25')===_0x5a5c('0x10')){function _0x2eedf9(){_0x5c9d09={'type':0x1,'packageName':_0x1b4532,'docsUrl':_0x2c67b6[_0x5a5c('0x20')]};}}else{if(!_0x232f89){if(_0x5a5c('0x31')!==_0x5a5c('0x31')){function _0x43e69f(){_0x2b1641={'type':0x0,'packageName':_0x36436a,'docsUrl':_0x3d5bc8[_0x5a5c('0x20')]};}}else _0x493c49={'type':0x1,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};}else{if(_0x5a5c('0x6')===_0x5a5c('0x2')){function _0x1a3b76(){_0x88b173={'type':0x2,'packageName':_0x7a4b9,'publishDate':_0x272f8c(_0x2e605a[_0x5a5c('0x13')]),'expiryDate':_0x27f75b(_0x1ae22c[_0x5a5c('0x35')]),'docsUrl':_0x493ad8[_0x5a5c('0x20')]};}}else{if(_0x232f89[_0x5a5c('0x35')]<_0x4a1050[_0x5a5c('0x13')]){if(_0x5a5c('0x2e')===_0x5a5c('0x2e'))_0x493c49={'type':0x2,'packageName':_0x28c95f,'publishDate':parseDate(_0x4a1050[_0x5a5c('0x13')]),'expiryDate':parseDate(_0x232f89[_0x5a5c('0x35')]),'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x5b1451(){return new _0x5de45c(_0x354370*0x3e8);}}}}}}}if(_0x493c49&&typeof console===_0x5a5c('0x4')){if(_0x5a5c('0x17')!==_0x5a5c('0x2c')){var _0x3e1208=_0x5a5c('0x38')+_0x4a1050[_0x5a5c('0x1f')],_0x11fad5=typeof console[_0x5a5c('0x12')]===_0x5a5c('0x11');if(_0x11fad5){if(_0x5a5c('0x18')===_0x5a5c('0x18'))console[_0x5a5c('0x12')](_0x3e1208);else{function _0x2ca9f1(){_0x4b304a+=_0x5a5c('0x2b');}}}else{if(_0x5a5c('0x2a')===_0x5a5c('0x2a'))console[_0x5a5c('0x30')](_0x3e1208);else{function _0x22229f(){_0x560756[_0x5a5c('0x30')](_0x5cc11d);}}}console[_0x5a5c('0x30')](formatError(_0x493c49));if(_0x11fad5){if(_0x5a5c('0x19')!==_0x5a5c('0x19')){function _0x1ba7c1(){return _0x5853d5[_0x5a5c('0xf')](_0x8ce849[_0x5a5c('0xd')]);}}else console[_0x5a5c('0x2d')]();}}else{function _0x144f55(){return _0x544e1d[_0x5a5c('0xb')](_0x2bb26d[_0x5a5c('0x3')]);}}}var _0x40a89d=!_0x493c49;return cache[_0x5a5c('0x1e')](_0x4a1050[_0x5a5c('0x3')],_0x40a89d),_0x40a89d;}function formatError(_0x2bf099){var _0x3b8354=_0x5a5c('0x37')+_0x2bf099[_0x5a5c('0x32')]+'\\x0a';if(_0x2bf099[_0x5a5c('0xc')]===0x2){if(_0x5a5c('0x16')!==_0x5a5c('0x16')){function _0x333f51(){_0x1cd78a+=_0x5a5c('0xe')+_0x1069cf[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x58f1d3[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}}else _0x3b8354+=_0x5a5c('0xe')+_0x2bf099[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x2bf099[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}else{if(_0x2bf099[_0x5a5c('0xc')]===0x0){if(_0x5a5c('0x28')===_0x5a5c('0x34')){function _0x2de46a(){_0x44d8f3+=_0x5a5c('0x21');}}else _0x3b8354+=_0x5a5c('0x2b');}else{if(_0x2bf099[_0x5a5c('0xc')]===0x1){if(_0x5a5c('0x9')===_0x5a5c('0x1a')){function _0x42e868(){_0x3c8674[_0x5a5c('0x12')](_0x3c7683);}}else _0x3b8354+=_0x5a5c('0x21');}}}return _0x3b8354+=_0x5a5c('0x7')+_0x2bf099[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x3b8354;}function matchProduct(_0x3be8d0,_0x22e53b){var _0x2de868=_0x3be8d0[_0x5a5c('0x24')];if(!_0x2de868||!_0x2de868[_0x5a5c('0x0')]){if(_0x5a5c('0x26')===_0x5a5c('0x23')){function _0x2ce30d(){return null;}}else return null;}var _0x1c39ae=new Set(_0x22e53b);return _0x2de868[_0x5a5c('0x2f')](function(_0xf8b567){if(_0x5a5c('0x39')===_0x5a5c('0x39'))return _0x1c39ae[_0x5a5c('0xf')](_0xf8b567[_0x5a5c('0xd')]);else{function _0x2ffdc4(){var _0x287464=_0x41d50e[_0x5a5c('0x24')];if(!_0x287464||!_0x287464[_0x5a5c('0x0')])return null;var _0x473ae4=new _0x5ba11e(_0x2ff6bd);return _0x287464[_0x5a5c('0x2f')](function(_0x54470f){return _0x473ae4[_0x5a5c('0xf')](_0x54470f[_0x5a5c('0xd')]);});}}});}function parseDate(_0x15d2db){return new Date(_0x15d2db*0x3e8);}export{setScriptKey,validatePackage};\n","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\n\nfunction defaultGroupHeaderTemplate(data) {\n return `${ data.title }: ${ data.value }`;\n}\n\nfunction createArray(length, callback) {\n const result = [];\n\n for (let idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n\n return result;\n}\n\nfunction defaultItemId(item) {\n return item.id;\n}\n\nclass ExcelExporter {\n constructor(options) {\n options.columns = this._trimColumns(options.columns || []);\n\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n this.columns = this._visibleColumns(this.allColumns);\n\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(column => column.groupHeaderColumnTemplate);\n this.collapsible = this.options.collapsible;\n }\n\n workbook() {\n const workbook = {\n sheets: [ {\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n } ]\n };\n\n return workbook;\n }\n\n _trimColumns(columns) {\n return columns.filter((column) => {\n let result = Boolean(column.field);\n\n if (!result && column.columns) {\n result = this._trimColumns(column.columns).length > 0;\n }\n\n return result;\n });\n }\n\n _leafColumns(columns) {\n let result = [];\n\n for (let idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this._leafColumns(columns[idx].columns));\n }\n }\n\n return result;\n }\n\n _prepareColumn(column) {\n if (!column.field) {\n return null;\n }\n\n let value = function(dataItem) {\n return getter(column.field, true)(dataItem);\n };\n\n let values = null;\n\n if (column.values) {\n values = {};\n\n column.values.forEach(function(item) {\n values[item.value] = item.text;\n });\n\n value = function(dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n\n return Object.assign({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n }\n\n _filter() {\n if (!this.options.filterable) {\n return null;\n }\n\n const depth = this._depth();\n\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n }\n\n _createPaddingCells(length) {\n return createArray(length, () => Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, this.options.paddingCellOptions));\n }\n\n _dataRow(dataItem, level, depth) {\n let cells = this._createPaddingCells(level);\n\n // grouped\n if (this.hasGroups && depth && dataItem.items) {\n cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n const rows = this._dataRows(dataItem.items, level + 1);\n\n rows.unshift({\n type: \"group-header\",\n cells: cells,\n level: this.collapsible ? level : null\n });\n\n return rows.concat(this._footer(dataItem, level));\n }\n\n const dataCells = [];\n\n for (let cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this._cell(dataItem, this.columns[cellIdx]);\n }\n\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n\n return [ {\n type: \"data\",\n cells: cells.concat(dataCells),\n level: this.collapsible ? level : null\n } ];\n }\n\n _groupHeaderCells(dataItem, level, depth) {\n const cells = [];\n\n const column = this.allColumns.filter(function(column) {\n return column.field === dataItem.field;\n })[0] || {};\n\n const title = column && column.title ? column.title : dataItem.field;\n const template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n const group = Object.assign({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n\n const value = template ? template(group) : `${ title }: ${ dataItem.value }`;\n\n cells.push(Object.assign({\n value: value,\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n }, column.groupHeaderCellOptions));\n\n if (this.hasGroupHeaderColumn) {\n this.columns.forEach(function(column, index) {\n if (index > 0) {\n cells.push(Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupHeaderColumnTemplate ?\n column.groupHeaderColumnTemplate(Object.assign({ group: group }, group, dataItem.aggregates[column.field])) :\n undefined\n }, column.groupHeaderCellOptions));\n }\n });\n }\n\n return cells;\n }\n\n _dataRows(dataItems, level) {\n const depth = this._depth();\n const rows = [];\n\n for (let idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this._dataRow(dataItems[idx], level, depth));\n }\n\n return rows;\n }\n\n _hierarchyRows() {\n const depth = this._depth();\n const data = this.data;\n const itemLevel = this.hierarchy.itemLevel;\n const itemId = this.hierarchy.itemId || defaultItemId;\n const hasFooter = this._hasFooterTemplate();\n const rows = [];\n const parents = [];\n let previousLevel = 0;\n let previousItemId;\n\n if (!hasFooter) {\n this.collapsible = false;\n }\n\n for (let idx = 0; idx < data.length; idx++) {\n const item = data[idx];\n const level = itemLevel(item, idx);\n\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({ id: previousItemId, level: previousLevel });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, level, depth));\n }\n\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n\n rows.push.apply(rows, this._dataRow(item, level + 1, depth));\n }\n\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n\n const rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n\n this._prependHeaderRows(rows);\n\n return rows;\n }\n\n _hierarchyFooterRows(parents, currentLevel, depth) {\n const rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n const parent = parents.pop();\n rows.push(this._hierarchyFooter(this.aggregates[parent.id], parent.level + 1, depth));\n }\n\n return rows;\n }\n\n _hasFooterTemplate() {\n const columns = this.columns;\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n }\n\n _hierarchyFooter(aggregates, level, depth) {\n const cells = this.columns.map(function(column, index) {\n const colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n const fieldAggregates = (aggregates || {})[column.field];\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan,\n value: column.footerTemplate(Object.assign({ aggregates: aggregates }, fieldAggregates))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n\n return {\n type: \"footer\",\n cells: this._createPaddingCells(level).concat(cells),\n level: this.collapsible ? level : null\n };\n }\n\n _footer(dataItem, level) {\n const rows = [];\n const footer = this.columns.some(column => column.groupFooterTemplate);\n\n let templateData, group;\n if (footer) {\n group = {\n group: { items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(key => {\n templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n });\n }\n\n const cells = this.columns.map((column) => {\n if (column.groupFooterTemplate) {\n let data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.groupFooterCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"group-footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.collapsible ? level : null\n });\n }\n\n return rows;\n }\n\n _isColumnVisible(column) {\n return this._visibleColumns([ column ]).length > 0 && (column.field || column.columns);\n }\n\n _visibleColumns(columns) {\n return columns.filter((column) => {\n let exportable = column.exportable;\n if (typeof exportable === 'object') {\n exportable = column.exportable.excel;\n }\n\n const visibleInExport = !column.hidden && exportable !== false;\n const visibleInExportOnly = column.hidden && exportable === true;\n let visible = visibleInExport || visibleInExportOnly;\n if (visible && column.columns) {\n visible = this._visibleColumns(column.columns).length > 0;\n }\n return visible;\n });\n }\n\n _headerRow(row, groups) {\n const headers = row.cells.map(function(cell) {\n return Object.assign(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n\n if (this.hierarchy && headers[0].firstCell) {\n headers[0].colSpan += this._depth();\n }\n\n return {\n type: \"header\",\n cells: createArray(groups.length, () => Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\"\n }, this.options.headerPaddingCellOptions)).concat(headers)\n };\n }\n\n _prependHeaderRows(rows) {\n const groups = this.groups;\n\n const headerRows = [ { rowSpan: 1, cells: [], index: 0 } ];\n\n this._prepareHeaderRows(headerRows, this.options.columns);\n\n for (let idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this._headerRow(headerRows[idx], groups));\n }\n }\n\n _prepareHeaderRows(rows, columns, parentCell, parentRow) {\n const row = parentRow || rows[rows.length - 1];\n let childRow = rows[row.index + 1];\n let totalColSpan = 0;\n\n for (let idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n if (this._isColumnVisible(column)) {\n\n const cell = Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\",\n value: column.title || column.field,\n colSpan: 0,\n firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n }, column.headerCellOptions);\n row.cells.push(cell);\n\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = { rowSpan: 0, cells: [], index: rows.length };\n rows.push(childRow);\n }\n cell.colSpan = this._trimColumns(this._visibleColumns(column.columns)).length;\n this._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n }\n\n _rows() {\n const rows = this._dataRows(this.data, 0);\n\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n let footer = false;\n\n const cells = this.columns.map((column) => {\n if (column.footerTemplate) {\n footer = true;\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.footerTemplate(Object.assign({}, this.aggregates, this.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.footerCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n\n return rows;\n }\n\n _headerDepth(columns) {\n const result = 1;\n let max = 0;\n\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n const temp = this._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n\n _freezePane() {\n const columns = this._visibleColumns(this.options.columns || []);\n\n const colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function(column) {\n return column.locked;\n })))).length;\n\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n }\n\n _cell(dataItem, column) {\n return Object.assign({\n value: column.value(dataItem)\n }, column.cellOptions);\n }\n\n _depth() {\n let depth = 0;\n\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n\n return depth;\n }\n\n _columns() {\n const depth = this._depth();\n const columns = createArray(depth, () => ({ width: 20 }));\n\n return columns.concat(this.columns.map(function(column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n }\n}\n\nexport default ExcelExporter;\n","export { default as ExcelExporter } from './excel-exporter';\nexport * from './services';\nexport * from './ooxml';","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nconst MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nconst DATA_URL_PREFIX = `data:${MIME_TYPE};base64,`;\nconst DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nconst BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nconst ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-arrow-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\n\nconst parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n return String(val)\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/\\'/g, \"'\");\n}\n\nfunction repeat(count, func) {\n let str = \"\";\n for (let i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\n\nfunction foreach(arr, func) {\n let str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach((key, i) => {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\n\nconst XMLHEAD = '\\r';\n\nconst RELS = `${XMLHEAD}\n \n \n \n \n `;\n\nconst CORE = ({ creator, lastModifiedBy, created, modified }) => `${XMLHEAD}\n \n ${ESC(creator)}\n ${ESC(lastModifiedBy)}\n ${ESC(created)}\n ${ESC(modified)}\n`;\n\nconst APP = ({ sheets }) => `${XMLHEAD}\n\n Microsoft Excel\n 0\n false\n \n \n \n Worksheets\n \n \n ${sheets.length}\n \n \n \n \n ${\n foreach(sheets, (sheet, i) =>\n sheet.options.title\n ? `${ESC(sheet.options.title)}`\n : `Sheet${i + 1}`\n )\n }\n \n false\n false\n false\n 14.0300\n`;\n\nconst CONTENT_TYPES = ({ sheetCount, commentFiles, drawingFiles }) => `${XMLHEAD}\n\n \n \n \n \n \n \n \n \n \n ${repeat(sheetCount, idx =>\n ``)}\n ${foreach(commentFiles, filename =>\n ``)}\n ${foreach(drawingFiles, filename =>\n ``)}\n \n \n`;\n\nconst WORKBOOK = ({ sheets, filterNames, userNames }) => `${XMLHEAD}\n\n \n \n \n \n \n \n ${foreach(sheets, ({ options }, i) => {\n const name = options.name || options.title || `Sheet${i + 1}`;\n return ``;\n })}\n \n ${filterNames.length || userNames.length ? `\n \n ${foreach(filterNames, (f) => `\n `)}\n ${foreach(userNames, (f) => `\n `)}\n ` : ''}\n \n`;\n\nconst WORKSHEET = ({\n frozenColumns,\n frozenRows,\n columns,\n defaults,\n data,\n index,\n mergeCells,\n autoFilter,\n filter,\n showGridLines,\n hyperlinks,\n validations,\n defaultCellStyleId,\n rtl,\n legacyDrawing,\n drawing,\n lastRow,\n lastCol\n}) => `${XMLHEAD}\n\n ${lastRow && lastCol ? `` : \"\"}\n\n \n \n ${frozenRows || frozenColumns ? `\n ` : ''}\n \n \n\n \n\n ${defaultCellStyleId != null || (columns && columns.length > 0) ? `\n \n ${!columns || !columns.length ? `\n
  • ` : ''}\n ${foreach(columns, (column, ci) => {\n const columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n if (column.width === 0) {\n return ``;\n }\n return ``;\n })}\n ` : ''}\n\n \n ${foreach(data, (row, ri) => {\n const rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n return `\n \n ${foreach(row.data, (cell) => `\n \n ${cell.formula != null ? writeFormula(cell.formula) : ''}\n ${cell.value != null ? `${ESC(cell.value)}` : ''}\n `)}\n \n `;})}\n \n\n ${autoFilter ? ``\n : filter ? spreadsheetFilters(filter) : ''}\n\n ${mergeCells.length ? `\n \n ${foreach(mergeCells, (ref) => ``)}\n ` : ''}\n\n ${validations.length ? `\n \n ${foreach(validations, (val) => `\n \n ${val.formula1 ? `${ESC(val.formula1)}` : ''}\n ${val.formula2 ? `${ESC(val.formula2)}` : ''}\n `)}\n ` : ''}\n\n ${hyperlinks.length ? `\n \n ${foreach(hyperlinks, (link) => `\n `)}\n ` : ''}\n\n \n ${drawing ? `` : ''}\n ${legacyDrawing ? `` : ''}\n`;\n\nconst WORKBOOK_RELS = ({ count }) => `${XMLHEAD}\n\n ${repeat(count, (idx) => `\n `)}\n \n \n`;\n\nconst WORKSHEET_RELS = ({ hyperlinks, comments, sheetIndex, drawings }) => `${XMLHEAD}\n\n ${foreach(hyperlinks, (link) => `\n `)}\n ${!comments.length ? '' : `\n \n `}\n ${!drawings.length ? '' : `\n `}\n`;\n\nconst COMMENTS_XML = ({ comments }) => `${XMLHEAD}\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n \n \n \n \n ${ESC(comment.text)}\n \n \n `)}\n \n`;\n\nconst LEGACY_DRAWING = ({ comments }) => `\\\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n ${comment.anchor}\n False\n ${comment.row}\n ${comment.col}\n \n `)}\n`;\n\nconst DRAWINGS_XML = (drawings) => `${XMLHEAD}\n\n ${foreach(drawings, (drawing, index) => `\n \n \n ${drawing.col}\n ${drawing.colOffset}\n ${drawing.row}\n ${drawing.rowOffset}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `)}\n`;\n\nconst DRAWINGS_RELS_XML = (rels) => `${XMLHEAD}\n\n ${foreach(rels, rel => `\n `)}\n`;\n\nconst SHARED_STRINGS = ({ count, uniqueCount, indexes }) => `${XMLHEAD}\n\n ${foreach(Object.keys(indexes), (index) => `\n ${ESC(index.substring(1))}`)}\n`;\n\nconst STYLES = ({\n formats,\n fonts,\n fills,\n borders,\n styles\n}) => `${XMLHEAD}\n\n \n ${foreach(formats, (format, fi) => `\n `)}\n \n \n \n \n \n \n \n \n \n ${foreach(fonts, (font) => `\n \n ${font.bold ? '' : ''}\n ${font.italic ? '' : ''}\n ${font.underline ? '' : ''}\n \n ${font.color ? `` : ''}\n ${font.fontFamily ? `\n \n \n ` : `\n \n \n \n `}\n `)}\n \n \n \n \n ${foreach(fills, (fill) => `\n ${fill.background ? `\n \n \n \n \n \n ` : ''}`)}\n \n \n \n ${foreach(borders, borderTemplate)}\n \n \n \n \n \n \n ${foreach(styles, (style) => `\n \n ${style.textAlign || style.verticalAlign || style.wrap ? `\n \n ` : ''}\n \n `)}\n \n \n \n \n \n \n`;\n\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return `${ESC(formula)}`;\n }\n // array formulas\n return `${ESC(formula.src)}`;\n}\n\nfunction numChar(colIndex) {\n const letter = Math.floor(colIndex / 26) - 1;\n\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n const frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n const maximumDigitWidth = 7;\n return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n return String(value)\n .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\n\nclass Worksheet {\n\n constructor(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(\n (link, i) => Object.assign({}, link, { rId: `link${i}` }));\n }\n\n relsToXML() {\n const hyperlinks = this._hyperlinks;\n const comments = this._comments;\n const drawings = this._drawings;\n\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks : hyperlinks,\n comments : comments,\n sheetIndex : this.options.sheetIndex,\n drawings : drawings\n });\n }\n }\n\n toXML(index) {\n const mergeCells = this.options.mergedCells || [];\n const rows = this.options.rows || [];\n const data = inflate(rows, mergeCells);\n\n this._readCells(data);\n\n let autoFilter = this.options.filter;\n let filter;\n if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n\n const validations = [];\n for (let i in this._validations) {\n if (Object.prototype.hasOwnProperty.call(this._validations, i)) {\n validations.push(this._validations[i]);\n }\n }\n\n let defaultCellStyleId = null;\n if (this.options.defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(this.options.defaultCellStyle);\n }\n\n const freezePane = this.options.freezePane || {};\n const defaults = this.options.defaults || {};\n const lastRow = this.options.rows ? this._getLastRow() : 1;\n const lastCol = this.options.rows ? this._getLastCol() : 1;\n\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? `vml${this.options.sheetIndex}` : null,\n drawing: this._drawings.length ? `drw${this.options.sheetIndex}` : null,\n lastRow: lastRow,\n lastCol: lastCol\n });\n }\n\n commentsXML() {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n }\n\n drawingsXML(images) {\n if (this._drawings.length) {\n let rels = {};\n let main = this._drawings.map(drw => {\n let ref = parseRef(drw.topLeftCell);\n let img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: `img${drw.image}`,\n target: images[drw.image].target\n };\n }\n return {\n col : ref.col,\n colOffset : pixelsToExcel(drw.offsetX),\n row : ref.row,\n rowOffset : pixelsToExcel(drw.offsetY),\n width : pixelsToExcel(drw.width),\n height : pixelsToExcel(drw.height),\n imageId : img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n }\n\n legacyDrawing() {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n }\n\n _lookupString(value) {\n const key = \"$\" + value;\n const index = this._strings.indexes[key];\n let result;\n\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount ++;\n }\n\n this._strings.count ++;\n\n return result;\n }\n\n _lookupStyle(style) {\n const json = JSON.stringify(style);\n\n if (json === \"{}\") {\n return 0;\n }\n\n let index = indexOf(json, this._styles);\n\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n }\n\n _lookupBorder(border) {\n const json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n\n let index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n }\n\n _readCells(rowData) {\n for (let i = 0; i < rowData.length; i++) {\n const row = rowData[i];\n const cells = row.cells;\n\n row.data = [];\n\n for (let j = 0; j < cells.length; j++) {\n const cellData = this._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n }\n\n _cell(data, rowIndex, cellIndex) {\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n\n let value = data.value;\n\n let border = {};\n\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n\n border = this._lookupBorder(border);\n\n const defStyle = this.options.defaultCellStyle || {};\n let style = { borderId: border };\n\n (function(add) {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n add(\"wrap\");\n add(\"indent\");\n })(\n function(prop, target) {\n let val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n }\n );\n\n const columns = this.options.columns || [];\n\n const column = columns[cellIndex];\n let type = typeof value;\n\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n let displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n\n style = this._lookupStyle(style);\n\n const cellName = ref(rowIndex, cellIndex);\n\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n\n if (data.comment) {\n let anchor = [\n cellIndex + 1, // start column\n 15, // start column offset\n rowIndex, // start row\n 10, // start row offset\n cellIndex + 3, // end column\n 15, // end column offset\n rowIndex + 3, // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref : cellName,\n text : data.comment,\n row : rowIndex,\n col : cellIndex,\n anchor : anchor.join(\", \")\n });\n }\n\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n }\n\n _addValidation(v, ref) {\n const tmp = {\n showErrorMessage : v.type === \"reject\" ? 1 : 0,\n formula1 : v.from,\n formula2 : v.to,\n type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank : v.allowNulls ? 1 : 0,\n showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n error : v.messageTemplate,\n errorTitle : v.titleTemplate\n };\n const json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n }\n\n _getLastRow() {\n return countData(this.options.rows);\n }\n\n _getLastCol() {\n let last = 0;\n this.options.rows.forEach(function(row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n }\n}\n\nfunction countData(data) {\n let last = data.length;\n data.forEach(function(el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\n\nconst MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo : \"greaterThanOrEqual\",\n lessThanOrEqualTo : \"lessThanOrEqual\"\n};\n\nconst MAP_EXCEL_TYPE = {\n number: \"decimal\"\n};\n\nconst defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\n\nfunction convertColor(value) {\n let color = value;\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function($0, $1) {\n return $1 + $1;\n });\n }\n\n color = color.substring(1).toUpperCase();\n\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n\n return color;\n}\n\nclass Workbook {\n\n constructor(options) {\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n\n this._sheets = map(this.options.sheets || [], (options, i) => {\n options.defaults = this.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this._strings, this._styles, this._borders);\n });\n }\n\n imageFilename(mimeType) {\n const id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return `image${id}.jpg`;\n case \"image/png\":\n return `image${id}.png`;\n case \"image/gif\":\n return `image${id}.gif`;\n default:\n return `image${id}.bin`; // XXX: anything better to do here?\n }\n }\n\n toZIP() {\n const zip = createZip();\n\n const docProps = zip.folder(\"docProps\");\n\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n\n const sheetCount = this._sheets.length;\n\n docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n const rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n\n const xl = zip.folder(\"xl\");\n\n const xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n if (this._images) {\n const media = xl.folder(\"media\");\n Object.keys(this._images).forEach(id => {\n const img = this._images[id];\n const filename = this.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = `../media/${filename}`;\n });\n }\n\n const sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function(sheet, index) {\n const options = sheet.options;\n const sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n sheetIds[sheetName.toLowerCase()] = index;\n const filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n let a = filter.ref.split(\":\");\n let from = parseRef(a[0]);\n let to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function(def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n\n const worksheets = xl.folder(\"worksheets\");\n const drawings = xl.folder(\"drawings\");\n const drawingsRels = drawings.folder(\"_rels\");\n const sheetRels = worksheets.folder(\"_rels\");\n const commentFiles = [];\n const drawingFiles = [];\n\n for (let idx = 0; idx < sheetCount; idx++) {\n const sheet = this._sheets[idx];\n const sheetName = `sheet${idx + 1}.xml`;\n const sheetXML = sheet.toXML(idx); // must be called before relsToXML\n const relsXML = sheet.relsToXML();\n const commentsXML = sheet.commentsXML();\n const legacyDrawing = sheet.legacyDrawing();\n const drawingsXML = sheet.drawingsXML(this._images);\n\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n let name = `comments${sheet.options.sheetIndex}.xml`;\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file(`vmlDrawing${sheet.options.sheetIndex}.vml`, legacyDrawing);\n }\n if (drawingsXML) {\n let name = `drawing${sheet.options.sheetIndex}.xml`;\n drawings.file(name, drawingsXML.main);\n drawingsRels.file(`${name}.rels`, drawingsXML.rels);\n drawingFiles.push(name);\n }\n\n worksheets.file(sheetName, sheetXML);\n }\n\n const borders = map(this._borders, parseJSON);\n\n const styles = map(this._styles, parseJSON);\n\n const hasFont = function(style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n\n const convertFontSize = function(value) {\n let fontInPx = Number(value);\n let fontInPt;\n\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n\n return fontInPt;\n };\n\n const fonts = map(styles, function(style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n\n if (style.color) {\n style.color = convertColor(style.color);\n }\n\n if (hasFont(style)) {\n return style;\n }\n });\n\n const formats = map(styles, function(style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n\n const fills = map(styles, function(style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function(style) {\n const result = {};\n\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n\n return result;\n })\n }));\n\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n\n return zip;\n }\n\n toDataURL() {\n const zip = this.toZIP();\n\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n }\n\n toBlob() {\n const zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n }\n}\n\nfunction borderStyle(width) {\n let alias = \"thin\";\n\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n\n return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n let result = \"\";\n\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"\";\n }\n result += \"\";\n }\n\n return result;\n}\n\nfunction borderTemplate(border) {\n return \"\" +\n borderSideTemplate(\"left\", border.left) +\n borderSideTemplate(\"right\", border.right) +\n borderSideTemplate(\"top\", border.top) +\n borderSideTemplate(\"bottom\", border.bottom) +\n \"\";\n}\n\nconst EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n const rowData = [];\n const rowsByIndex = [];\n\n indexRows(rows, function(row, index) {\n const data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n\n const sorted = sortByIndex(rowData).slice(0);\n const ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n\n for (let i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n\n return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) {\n continue;\n }\n\n let index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n\n callback(row, index);\n }\n}\n\nfunction sortByIndex(items) {\n return items.sort(function(a, b) {\n return a.index - b.index;\n });\n}\n\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\n\nfunction getSpan(mergedCells, ref) {\n for (let i = 0; i < mergedCells.length; ++i) {\n const range = mergedCells[i];\n const a = range.split(\":\");\n let topLeft = a[0];\n if (topLeft === ref) {\n let bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\n\nfunction parseRef(ref) {\n function getcol(str) {\n let upperStr = str.toUpperCase();\n let col = 0;\n for (let i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n\n const m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\n\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n const row = data._source;\n const rowIndex = data.index;\n const cells = row.cells;\n const cellData = data.cells;\n\n if (!cells) {\n return;\n }\n\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i] || EMPTY_CELL;\n\n let rowSpan = cell.rowSpan || 1;\n let colSpan = cell.colSpan || 1;\n\n const cellIndex = insertCell(cellData, cell);\n const topLeftRef = ref(rowIndex, cellIndex);\n\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n const tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n\n spanCell(cell, cellData, cellIndex, colSpan);\n\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells,\n topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n cellIndex + colSpan - 1));\n }\n\n if (rowSpan > 1) {\n for (let ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n let nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n ctx.rowData.push(nextRow);\n }\n\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\n\nfunction insertCell(data, cell) {\n let index;\n\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n\n return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n let index = data.length;\n\n for (let i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (let i = 1; i < colSpan; i++) {\n const tmp = {\n borderTop : cell.borderTop,\n borderRight : cell.borderRight,\n borderBottom : cell.borderBottom,\n borderLeft : cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\n\nconst SPREADSHEET_FILTERS = ({ ref, columns, generators }) => `\n\n ${foreach(columns, (col) => `\n \n ${generators[col.filter](col)}\n \n `)}\n`;\n\nconst SPREADSHEET_CUSTOM_FILTER = ({ logic, criteria }) => `\n\n${foreach(criteria, (f) => {\n let op = spreadsheetFilters.customOperator(f);\n let val = spreadsheetFilters.customValue(f);\n return ``;\n})}\n`;\n\nconst SPREADSHEET_DYNAMIC_FILTER = ({ type }) =>\n``;\n\nconst SPREADSHEET_TOP_FILTER = ({ type, value }) =>\n``;\n\nconst SPREADSHEET_VALUE_FILTER = ({ blanks, values }) =>\n `\n ${foreach(values, (value) => `\n `)}\n `;\n\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom : SPREADSHEET_CUSTOM_FILTER,\n dynamic : SPREADSHEET_DYNAMIC_FILTER,\n top : SPREADSHEET_TOP_FILTER,\n value : SPREADSHEET_VALUE_FILTER\n }\n });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n return {\n eq : \"equal\",\n gt : \"greaterThan\",\n gte : \"greaterThanOrEqual\",\n lt : \"lessThan\",\n lte : \"lessThanOrEqual\",\n ne : \"notEqual\",\n\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n\n default:\n return f.value;\n }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n return {\n quarter1 : \"Q1\",\n quarter2 : \"Q2\",\n quarter3 : \"Q3\",\n quarter4 : \"Q4\",\n january : \"M1\",\n february : \"M2\",\n march : \"M3\",\n april : \"M4\",\n may : \"M5\",\n june : \"M6\",\n july : \"M7\",\n august : \"M8\",\n september : \"M9\",\n october : \"M10\",\n november : \"M11\",\n december : \"M12\"\n }[type.toLowerCase()] || type;\n};\n\nexport {\n Workbook,\n Worksheet\n};\n","export { default as IntlService } from './services/intl-service';\nexport { default as TemplateService } from './services/template-service';\n","let current = {\n toString: (value) => value\n};\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static toString(value, format) {\n return current.toString(value, format);\n }\n}\n\nexport default IntlService;","let current = {\n compile: function(template) {\n return template;\n }\n};\n\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static compile(template) {\n return current.compile(template);\n }\n}\n\nexport default TemplateService;","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\n}\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\nconst UNDEFINED = 'undefined';\n\ngetterCache[UNDEFINED] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(typeof index !== UNDEFINED ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function map(array, func) {\n return array.reduce((result, el, i) => {\n const val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nconst BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n const time = packTime(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n const serial = packDate(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","/* eslint-disable arrow-body-style */\n\nimport utils from './utils';\nimport domUtils from \"./dom-utils\";\n\nconst absoluteRect = (anchor, element, offset, scale) => {\n const scrollPos = elementScrollPosition(anchor, element);\n const rect = utils.eitherRect(domUtils.offset(anchor), offset);\n const stackScale = 2 * scale;\n\n const stackScroll = domUtils.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n\n const stackOffset = domUtils.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n\n return domUtils.removeScroll(\n domUtils.addScroll(\n utils.removeStackingOffset(\n utils.scaleRect(rect, scale),\n stackOffset\n ),\n stackScroll\n ),\n scrollPos\n );\n};\n\nconst relativeRect = (anchor, element, offset, scale) => {\n const rect = utils.eitherRect(domUtils.position(anchor, element, scale), offset);\n return utils.scaleRect(rect, scale);\n};\n\nconst elementScrollPosition = (anchor, element) => {\n return anchor ? { x: 0, y: 0 } : domUtils.scrollPosition(element);\n};\n\nconst alignElement = (settings) => {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode, scale } = settings;\n\n const currentScale = scale || 1;\n const fixedMode = positionMode === 'fixed' || !domUtils.hasOffsetParent(element);\n const anchorRect = fixedMode ? absoluteRect(anchor, element, offset, currentScale) : relativeRect(anchor, element, offset, currentScale);\n const elementRect = utils.scaleRect(domUtils.offset(element), currentScale);\n\n const result = domUtils.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n\n return result;\n};\n\nexport default alignElement;\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nconst align = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, margin = {} } = options;\n const anchorHorizontal = anchorAlign.horizontal;\n const anchorVertical = anchorAlign.vertical;\n const elementHorizontal = elementAlign.horizontal;\n const elementVertical = elementAlign.vertical;\n\n let horizontalMargin = margin.horizontal || 0;\n let verticalMargin = margin.vertical || 0;\n\n let top = anchorRect.top;\n let left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default function applyLocationOffset(rect, location, isOffsetBody) {\n let { top, left } = rect;\n\n if (isOffsetBody) {\n left = 0;\n top = 0;\n }\n\n return {\n top: top + location.top,\n left: left + location.left,\n height: rect.height,\n width: rect.width\n };\n}\n","import windowViewport from './window-viewport';\n\nconst boundingOffset = (element) => {\n if (!element.getBoundingClientRect) {\n const viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n const { bottom, left, right, top } = element.getBoundingClientRect();\n\n return {\n bottom,\n left,\n right,\n top\n };\n};\n\nexport default boundingOffset;\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import ownerDocument from './owner-document';\n\nconst getDocument = (element) => ownerDocument(element).documentElement;\n\nexport default getDocument;\n","/* eslint-disable arrow-body-style */\nimport addScroll from \"./add-scroll\";\nimport align from './align';\nimport boundingOffset from './bounding-offset';\nimport utils from './utils';\nimport removeScroll from './remove-scroll';\nimport restrictToView from './restrict-to-view';\nimport scrollPosition from './scroll-position';\nimport offsetBase from './offset';\nimport positionWithScroll from './position-with-scroll';\nimport windowViewPort from './window-viewport';\nimport siblingContainer from './sibling-container';\nimport parents from './parents';\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n\nconst addOffset = (current, addition) => {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n};\n\nconst getWindow = () => {\n return utils.canUseDOM() ? window : null;\n};\n\nconst getFontStyles = (el) => {\n const window = getWindow();\n\n if (!window || !el) { return []; }\n\n const computedStyles = window.getComputedStyle(el);\n\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n};\n\nconst hasOffsetParent = (el) => {\n if (!el) { return false; }\n\n return Boolean(el.offsetParent);\n};\n\nconst offset = (el) => {\n if (!el) { return null; }\n\n return offsetBase(el);\n};\n\nconst offsetAtPoint = (element, currentLocation) => {\n if (!element) { return null; }\n\n const { left, top, transition } = element.style;\n\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n\n const currentOffset = offsetBase(element);\n\n element.style.left = left;\n element.style.top = top;\n\n // prevents elements with transition to be animated because of the change\n // tslint:disable-next-line:no-unused-expression\n element.offsetHeight;\n\n element.style.transition = transition;\n\n return currentOffset;\n};\n\nconst position = (element, popupElement, scale) => {\n if (!element || !popupElement) { return null; }\n\n const currentScale = scale || 1;\n\n return positionWithScroll(element, popupElement, currentScale);\n};\n\nconst OVERFLOW_REGEXP = /auto|scroll/;\n\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\n\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\n\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n\nconst scrollableParents = (element) => {\n const parentElements = [];\n\n if (!utils.canUseDOM()) { return parentElements; }\n\n let parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n\n return parentElements;\n};\n\nconst getRelativeContextElement = (el) => {\n if (!el || !utils.hasRelativeStackingContext()) { return null; }\n\n let parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst stackingElementOffset = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return offsetBase(relativeContextElement);\n};\n\nconst stackingElementScroll = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return { x: 0, y: 0 }; }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n};\n\nconst stackingElementViewPort = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n};\n\nconst useRelativePosition = (el) => {\n return Boolean(getRelativeContextElement(el));\n};\n\nconst zoomLevel = () => {\n if (!utils.canUseDOM()) { return 1; }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n};\n\nconst isZoomed = () => {\n return zoomLevel() > 1;\n};\n\nconst zIndex = (anchor, container) => {\n if (!anchor || !utils.canUseDOM()) { return null; }\n\n const sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n const result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n (index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n};\n\nconst domUtils = {\n addOffset,\n addScroll,\n align,\n boundingOffset,\n getFontStyles,\n getWindow,\n hasOffsetParent,\n offset,\n offsetAtPoint,\n position,\n removeScroll,\n restrictToView,\n scrollPosition,\n scrollableParents,\n getRelativeContextElement,\n stackingElementOffset,\n stackingElementScroll,\n stackingElementViewPort,\n useRelativePosition,\n windowViewPort,\n zoomLevel,\n isZoomed,\n zIndex\n};\n\nexport default domUtils;\n","import scrollPosition from './scroll-position';\n\nexport default (element) => {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import offsetParent from './offset-parent';\n\nconst isBodyOffset = (element) => (offsetParent(element) === element.ownerDocument.body);\n\nexport default isBodyOffset;\n","export { default as align } from './align';\nexport { default as addScroll } from './add-scroll';\nexport { default as applyLocationOffset } from './apply-location-offset';\nexport { default as boundingOffset } from './bounding-offset';\nexport { default as isBodyOffset } from './is-body-offset';\nexport { default as offsetParent } from './offset-parent';\nexport { default as offset } from './offset';\nexport { default as parents } from './parents';\nexport { default as parentScrollPosition } from './parent-scroll-position';\nexport { default as position } from './position';\nexport { default as positionWithScroll } from './position-with-scroll';\nexport { default as removeScroll } from './remove-scroll';\nexport { default as restrictToView } from './restrict-to-view';\nexport { default as scrollPosition } from './scroll-position';\nexport { default as siblingContainer } from './sibling-container';\nexport { default as siblings } from './siblings';\nexport { default as zIndex } from './z-index';\n\nexport { default as alignElement } from './align-element';\nexport { default as domUtils } from './dom-utils';\nexport { default as utils } from './utils';\nexport { default as positionElement } from './position-element';\n\nexport { default as getDocumentElement } from './document';\nexport { default as getWindow } from './window';\nexport { default as getWindowViewPort } from './window-viewport';\n\nexport { default as AlignPoint } from './align-point';\nexport { default as Collision } from './collision';\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default (offsetParentElement, element) => ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n);\n","import documentElement from './document';\n\nconst offsetParent = (element) => {\n let offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","const rectOfHiddenElement = (element) => {\n const { display, left, position } = element.style;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n const rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nconst offset = (element) => {\n let rect = element.getBoundingClientRect();\n let { left, top } = rect;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n const parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","export default (element, until) => {\n const result = [];\n let next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nconst positionElement = (settings) => {\n const {\n anchor,\n currentLocation,\n element,\n anchorAlign,\n elementAlign,\n collisions,\n margin,\n scale\n } = settings;\n\n const currentScale = scale || 1;\n const elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n const elementRect = utils.scaleRect(elementOffset, currentScale);\n const anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n const anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n const viewPort = settings.viewPort || domUtils.windowViewPort(element);\n viewPort.width = viewPort.width / currentScale;\n viewPort.height = viewPort.height / currentScale;\n\n const result = domUtils.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n\n const offset = domUtils.addOffset(currentLocation, result.offset);\n\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n};\n\nexport default positionElement;","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default (element, parent, scale = 1) => {\n const offsetParentElement = parent ? offsetParent(parent) : null;\n const { top, left, height, width } = position(element, offsetParentElement);\n const { x, y } = offsetParentScrollPosition(offsetParentElement, element);\n const ownerDocument = element.ownerDocument;\n const positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nconst position = (element, parent) => {\n const win = wnd(element);\n const elementStyles = win.getComputedStyle(element);\n const offset = offsetRect(element);\n const parentElement = parent || offsetParent(element);\n\n const ownerDocument = element.ownerDocument;\n const useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n let parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n const parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nconst fit = function(position, size, viewPortSize) {\n let output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nconst flip = function({ offset, size, anchorSize, viewPortSize, anchorAlignPoint, elementAlignPoint, margin }) {\n let output = 0;\n\n const isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n const isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n const marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n const isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nconst restrictToView = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, collisions, viewPort, margin = {} } = options;\n const { top: elementTop, left: elementLeft, height: elementHeight, width: elementWidth } = elementRect;\n const { height: viewPortHeight, width: viewPortWidth } = viewPort;\n const horizontalMargin = margin.horizontal || 0;\n const verticalMargin = margin.vertical || 0;\n\n let left = 0;\n let top = 0;\n\n const isVerticalFit = collisions.vertical === collision.fit;\n const isHorizontalFit = collisions.horizontal === collision.fit;\n const isVerticalFlip = collisions.vertical === collision.flip;\n const isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n const flippedVertical = isVerticalFlip && top !== 0;\n const flippedHorizontal = isHorizontalFlip && left !== 0;\n const fittedVertical = isVerticalFit && top !== 0;\n const fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n const documentElement = docElement(element);\n const win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","let cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n const div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default (anchor, container) => {\n const parentElements = parents(anchor);\n let containerElement = container;\n let siblingElements;\n let result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n (list, p) => list.concat(siblingElements.filter(s => s === p)),\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","export default (element) => {\n const result = [];\n\n let sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) { return rect; }\n\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n let result;\n let called = false;\n\n return (...args) => {\n if (called) {\n return result;\n }\n\n result = fun(...args);\n called = true;\n return result;\n };\n}\n\nconst hasRelativeStackingContext = memoize((elementSource) => {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n const currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n const top = 10;\n const parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n\n currentDocument.body.appendChild(parent);\n\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nconst canUseDOM = () => Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst utils = {\n eitherRect,\n scaleRect,\n removeStackingOffset,\n hasRelativeStackingContext,\n canUseDOM\n};\n\nexport default utils;","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n const win = wnd(element);\n const document = getDocument(element);\n const result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import ownerDocument from './owner-document';\n\nconst getWindow = (element) => ownerDocument(element).defaultView;\n\nexport default getWindow;\n","import parents from './parents';\nimport siblingContainer from './sibling-container';\n\nexport default function zIndex(anchor, container) {\n if (!anchor || !container) { return null; }\n\n const sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n const result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n (index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n}","import { MS_PER_HOUR, MS_PER_MINUTE, ZonedDate } from '@progress/kendo-date-math';\nimport { DailyFrequency, HourlyFrequency, MonthlyFrequency, WeeklyFrequency, YearlyFrequency } from './frequencies';\nimport { duration, setDayOfWeek } from './utils';\nconst frequencies = {\n 'hourly': new HourlyFrequency(),\n 'daily': new DailyFrequency(),\n 'weekly': new WeeklyFrequency(),\n 'monthly': new MonthlyFrequency(),\n 'yearly': new YearlyFrequency()\n};\n// Normally, ZonedDate will allow creating an instance at the\n// missing DST hour in the time zone.\n// This is useful during recurrence calculations.\n//\n// By doing a round-trip through toLocalDate(), the missing\n// DST hour is replaced with a valid time.\nconst normalizeDST = (date) => {\n return ZonedDate.fromLocalDate(date.toLocalDate(), date.timezone);\n};\nconst getTimeAfterMidnight = (date) => date.getHours() * MS_PER_HOUR +\n date.getMinutes() * MS_PER_MINUTE +\n date.getSeconds() * 1000 +\n date.getMilliseconds();\nconst isException = (exceptions, date) => {\n if (!exceptions) {\n return false;\n }\n const dateTime = date.getTime() - date.getMilliseconds();\n const length = exceptions.length;\n for (let idx = 0; idx < length; idx++) {\n if (exceptions[idx].getTime() === dateTime) {\n return true;\n }\n }\n return false;\n};\nconst startPeriodByFreq = (start, rule) => {\n const date = start.toUTCDate();\n switch (rule.freq) {\n case 'yearly':\n date.setUTCFullYear(date.getFullYear(), 0, 1);\n break;\n case 'monthly':\n date.setUTCFullYear(date.getFullYear(), date.getMonth(), 1);\n break;\n case 'weekly':\n setDayOfWeek(date, rule.weekStart, -1);\n break;\n default:\n break;\n }\n if (rule.byHour) {\n date.setUTCHours(0);\n }\n if (rule.byMinute) {\n date.setUTCMinutes(0);\n }\n if (rule.bySecond) {\n date.setUTCSeconds(0);\n }\n return ZonedDate.fromUTCDate(date, start.timezone);\n};\nconst endPeriodByFreq = (start, rule) => {\n const date = start.toUTCDate();\n switch (rule.freq) {\n case 'yearly':\n date.setUTCFullYear(date.getUTCFullYear(), 11, 31);\n break;\n case 'monthly':\n date.setUTCFullYear(date.getUTCFullYear(), date.getUTCMonth() + 1, 0);\n break;\n case 'weekly':\n setDayOfWeek(date, rule.weekStart, -1);\n date.setUTCDate(date.getUTCDate() + 6);\n break;\n default:\n break;\n }\n if (rule.byHour) {\n date.setUTCHours(23);\n }\n if (rule.byMinute) {\n date.setUTCMinutes(59);\n }\n if (rule.bySecond) {\n date.setUTCSeconds(59);\n }\n return ZonedDate.fromUTCDate(date, start.timezone);\n};\nconst eventsByPosition = (periodEvents, start, positions) => {\n const periodEventsLength = periodEvents.length;\n const events = [];\n let position;\n for (let idx = 0, length = positions.length; idx < length; idx++) {\n position = positions[idx];\n if (position < 0) {\n position = periodEventsLength + position;\n }\n else {\n position -= 1; //convert to zero based index\n }\n const event = periodEvents[position];\n if (event && event.start >= start) {\n events.push(event);\n }\n }\n return events;\n};\nconst removeExceptionDates = (periodEvents, exceptionDates) => {\n const events = [];\n for (let idx = 0; idx < periodEvents.length; idx++) {\n const event = periodEvents[idx];\n if (event && !isException(exceptionDates, event.start)) {\n events.push(event);\n }\n }\n return events;\n};\n/**\n * Expands a recurrence rule into individual events in the specified time range.\n *\n * @param rule The recurrence rule to expand.\n * @param options Configuration options for the expand operation.\n * @return ExpandResult The result of the operation. If successful, the events field will contain the events.\n */\nexport function expand(rule, options) {\n const { rangeStart, rangeEnd } = options;\n if (!rule) {\n return {\n success: true,\n errorMessage: '',\n events: []\n };\n }\n const freqName = rule.freq;\n const freq = frequencies[freqName];\n const eventStart = rule.start;\n const eventDuration = duration(rule.start, rule.end);\n let endPeriod;\n if (rule.start.getTime() > rule.end.getTime()) {\n return {\n success: false,\n errorMessage: `Invalid recurrence rule: Start date (${rule.start})` +\n `is greater than End date ${rule.start}`,\n events: []\n };\n }\n if (!freq) {\n return {\n success: false,\n errorMessage: `Invalid recurrence frequency \"${freqName}\"`,\n events: []\n };\n }\n let events = [];\n const positions = rule.bySetPosition;\n let currentIdx = positions ? 0 : 1;\n const exceptionDates = rule.exceptionDates;\n let start = rangeStart.toTimezone(eventStart.timezone);\n const startPeriod = start;\n let end = rangeEnd.toTimezone(eventStart.timezone);\n const count = rule.count;\n if (rule.until && rule.until.getTime() < end.getTime()) {\n end = rule.until.clone();\n }\n let hours = start.getHours();\n let minutes = start.getMinutes();\n let seconds = start.getSeconds();\n const useEventStart = freqName === 'yearly' || freqName === 'monthly' || freqName === 'weekly';\n if (start.getTime() < eventStart.getTime() || count || rule.interval > 1 || useEventStart) {\n start = eventStart.clone();\n }\n else {\n if (!rule.byHour) {\n hours = eventStart.getHours();\n }\n if (!rule.byMinute) {\n minutes = eventStart.getMinutes();\n }\n if (!rule.bySecond) {\n seconds = eventStart.getSeconds();\n }\n const startAdj = start.toUTCDate();\n startAdj.setUTCHours(hours, minutes, seconds, eventStart.getMilliseconds());\n start = ZonedDate.fromUTCDate(startAdj, start.timezone);\n }\n rule._startPeriod = start.clone();\n if (positions) {\n start = startPeriodByFreq(start, rule);\n end = endPeriodByFreq(end, rule);\n const diff = getTimeAfterMidnight(end) - getTimeAfterMidnight(start);\n if (diff < 0) {\n const endAdj = end.toUTCDate();\n endAdj.setUTCHours(start.getHours(), start.getMinutes(), start.getSeconds(), start.getMilliseconds());\n end = ZonedDate.fromUTCDate(endAdj, end.timezone);\n }\n rule._startPeriod = start.clone();\n endPeriod = endPeriodByFreq(start, rule);\n }\n let startTime = getTimeAfterMidnight(start);\n rule._startTime = new Date(startTime);\n let next = start.toUTCDate();\n if (freq.setup) {\n freq.setup(rule, eventStart, next);\n start = ZonedDate.fromUTCDate(next, start.timezone);\n }\n next = start.toUTCDate();\n freq.limit(next, end.toUTCDate(), rule);\n start = ZonedDate.fromUTCDate(next, start.timezone);\n while (start <= end) {\n const endDate = start.addTime(eventDuration);\n const inPeriod = start >= startPeriod || endDate > startPeriod;\n if (inPeriod && !isException(exceptionDates, start) || positions) {\n events.push({\n start: normalizeDST(start),\n end: normalizeDST(endDate)\n });\n if (freqName === 'hourly' || freqName === 'minutely' || freqName === 'secondly') {\n // Use the DST-adjusted time to maintain duration between occurrences\n startTime = getTimeAfterMidnight(normalizeDST(start));\n rule._startTime = new Date(startTime);\n }\n }\n if (positions) {\n next = start.toUTCDate();\n freq.next(next, rule);\n freq.limit(next, end.toUTCDate(), rule);\n start = ZonedDate.fromUTCDate(next, start.timezone);\n if (start > endPeriod) {\n let periodEvents = eventsByPosition(events.slice(currentIdx), eventStart, positions);\n periodEvents = removeExceptionDates(periodEvents, exceptionDates);\n events = events.slice(0, currentIdx).concat(periodEvents);\n endPeriod = endPeriodByFreq(start, rule);\n currentIdx = events.length;\n }\n if (count && count === currentIdx) {\n break;\n }\n }\n else {\n if (count && count === currentIdx) {\n break;\n }\n currentIdx += 1;\n next = start.toUTCDate();\n freq.next(next, rule);\n freq.limit(next, end.toUTCDate(), rule);\n start = ZonedDate.fromUTCDate(next, start.timezone);\n }\n }\n return {\n success: true,\n errorMessage: '',\n events\n };\n}\n","import { MS_PER_DAY, MS_PER_HOUR } from '@progress/kendo-date-math';\nimport * as limitations from './limitations';\nimport { setDayOfWeek, normalizeDayIndex, hasModifiers } from './utils';\nconst RULE_NAMES = ['byMonth', 'byWeekNumber', 'byYearDay', 'byMonthDay', 'byWeekDay', 'byHour', 'byMinute', 'bySecond'];\nconst RULE_NAMES_LENGTH = RULE_NAMES.length;\nconst intervalExcess = (diff, interval) => {\n let excess;\n if (diff !== 0 && diff < interval) {\n excess = interval - diff;\n }\n else {\n excess = diff % interval;\n if (excess) {\n excess = interval - excess;\n }\n }\n return excess;\n};\nconst addTime = (date, time) => {\n date.setTime(date.getTime() + time);\n};\n/** @hidden */\nexport class BaseFrequency {\n next(date, rule) {\n const startTime = rule._startTime;\n let minutes, seconds;\n if (rule.bySecond) {\n seconds = date.getUTCSeconds() + 1;\n date.setUTCSeconds(seconds);\n startTime.setUTCSeconds(seconds);\n }\n else if (rule.byMinute) {\n minutes = date.getUTCMinutes() + 1;\n date.setUTCMinutes(minutes);\n startTime.setUTCMinutes(minutes);\n }\n else {\n return false;\n }\n return true;\n }\n normalize(options) {\n const rule = options.rule;\n if (options.idx === 4 && rule.byHour) {\n rule._startTime.setUTCHours(0);\n this._hour(options.date, rule);\n }\n }\n limit(date, end, rule) {\n const interval = rule.interval || 1;\n let idx;\n while (date <= end) {\n let modified = undefined;\n let firstRule = undefined;\n const day = date.getUTCDate();\n for (idx = 0; idx < RULE_NAMES_LENGTH; idx++) {\n const ruleName = RULE_NAMES[idx];\n if (rule[ruleName]) {\n modified = limitations[ruleName](date, end, rule);\n if (firstRule !== undefined && modified) {\n break;\n }\n else {\n firstRule = modified;\n }\n }\n if (modified) {\n this.normalize({ date: date, rule: rule, day: day, idx: idx });\n }\n }\n if ((interval === 1 || !this.interval(rule, date)) && idx === RULE_NAMES_LENGTH) {\n break;\n }\n }\n }\n interval(rule, current) {\n const start = rule._startPeriod.toUTCDate();\n const hours = current.getUTCHours();\n const weekStart = rule.weekStart;\n const interval = rule.interval;\n const frequency = rule.freq;\n let date = new Date(current);\n let modified = false;\n let excess = 0;\n let month = 0;\n let day = 1;\n let diff;\n let startTimeHours;\n if (frequency === 'hourly') {\n startTimeHours = rule._startTime.getUTCHours();\n date = date.getTime();\n if (hours !== startTimeHours) {\n date += (startTimeHours - hours) * MS_PER_HOUR;\n }\n date -= start.getTime();\n diff = Math.floor(date / MS_PER_HOUR);\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n this._hour(current, rule, excess);\n modified = true;\n }\n }\n else if (frequency === 'daily') {\n addTime(date, -start);\n diff = Math.round(date / MS_PER_DAY);\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n this._date(current, rule, excess);\n modified = true;\n }\n }\n else if (frequency === 'weekly') {\n excess = this.getNumberOfWeeksBetweenDates(start, current);\n const normalizedCurrentIndex = normalizeDayIndex(current.getUTCDay(), weekStart);\n const normalizedStartIndex = normalizeDayIndex(start.getUTCDay(), weekStart);\n if (normalizedCurrentIndex < normalizedStartIndex) {\n excess += 1;\n }\n excess = intervalExcess(excess, interval);\n if (excess !== 0) {\n setDayOfWeek(current, rule.weekStart, -1);\n current.setUTCDate(current.getUTCDate() + (excess * 7));\n modified = true;\n }\n }\n else if (frequency === 'monthly') {\n diff = current.getUTCFullYear() - start.getUTCFullYear();\n diff = current.getUTCMonth() - start.getUTCMonth() + (diff * 12);\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n day = hasModifiers(rule) ? 1 : current.getDate();\n current.setUTCFullYear(current.getUTCFullYear(), current.getUTCMonth() + excess, day);\n modified = true;\n }\n }\n else if (frequency === 'yearly') {\n diff = current.getUTCFullYear() - start.getUTCFullYear();\n excess = intervalExcess(diff, interval);\n if (!rule.byMonth) {\n month = current.getUTCMonth();\n }\n if (!rule.byYearDay && !rule.byMonthDay && !rule.byWeekDay) {\n day = current.getUTCDate();\n }\n if (excess !== 0) {\n current.setUTCFullYear(current.getUTCFullYear() + excess, month, day);\n modified = true;\n }\n }\n return modified;\n }\n _hour(date, rule, interval) {\n const startTime = rule._startTime;\n let hours = startTime.getUTCHours();\n if (interval) {\n hours += interval;\n }\n date.setUTCHours(hours);\n hours = hours % 24;\n startTime.setUTCHours(hours);\n }\n _date(date, rule, interval) {\n date.setUTCDate(date.getUTCDate() + interval);\n }\n getNumberOfWeeksBetweenDates(first, second) {\n const weeks = (second.getTime() - first.getTime()) / 604800000;\n let exactWeeks = Math.floor(weeks);\n // DST change occurrs in week?\n if (weeks - exactWeeks > 0.99) {\n exactWeeks = Math.round(weeks);\n }\n return exactWeeks;\n }\n}\n/** @hidden */\nexport class HourlyFrequency extends BaseFrequency {\n next(date, rule) {\n if (!BaseFrequency.prototype.next.call(this, date, rule)) {\n this._hour(date, rule, 1);\n }\n return false;\n }\n normalize(options) {\n const rule = options.rule;\n if (options.idx === 4) {\n rule._startTime.setUTCHours(0);\n this._hour(options.date, rule);\n }\n }\n}\n/** @hidden */\nexport class DailyFrequency extends BaseFrequency {\n next(date, rule) {\n if (!BaseFrequency.prototype.next.call(this, date, rule)) {\n this[rule.byHour ? '_hour' : '_date'](date, rule, 1);\n }\n return false;\n }\n}\n/** @hidden */\nexport class WeeklyFrequency extends DailyFrequency {\n setup(rule, eventStartDate) {\n if (!rule.byWeekDay) {\n rule.byWeekDay = [{\n day: eventStartDate.getUTCDay(),\n offset: 0\n }];\n }\n }\n}\n/** @hidden */\nexport class MonthlyFrequency extends BaseFrequency {\n next(date, rule) {\n let day;\n if (!BaseFrequency.prototype.next.call(this, date, rule)) {\n if (rule.byHour) {\n this._hour(date, rule, 1);\n }\n else if (rule.byMonthDay || rule.byWeekDay || rule.byYearDay || rule.byWeekNumber) {\n this._date(date, rule, 1);\n }\n else {\n day = date.getUTCDate();\n date.setUTCMonth(date.getUTCMonth() + 1);\n while (date.getUTCDate() !== day) {\n date.setUTCDate(day);\n }\n this._hour(date, rule);\n }\n }\n return false;\n }\n normalize(options) {\n const rule = options.rule, date = options.date;\n if (options.idx === 0 && !rule.byMonthDay && !rule.byWeekDay) {\n date.setUTCDate(options.day);\n }\n else {\n super.normalize(options);\n }\n }\n setup(rule, eventStartDate, date) {\n if (!rule.byMonthDay && !rule.byWeekDay) {\n date.setUTCDate(eventStartDate.getUTCDate());\n }\n }\n}\n/** @hidden */\nexport class YearlyFrequency extends MonthlyFrequency {\n next(date, rule) {\n let day;\n if (!BaseFrequency.prototype.next.call(this, date, rule)) {\n if (rule.byHour) {\n this._hour(date, rule, 1);\n }\n else if (rule.byMonthDay || rule.byWeekDay || rule.byYearDay || rule.byWeekNumber) {\n this._date(date, rule, 1);\n }\n else if (rule.byMonth) {\n day = date.getUTCDate();\n date.setUTCMonth(date.getUTCMonth() + 1);\n while (date.getUTCDate() !== day) {\n date.setUTCDate(day);\n }\n this._hour(date, rule);\n }\n else {\n date.setUTCFullYear(date.getUTCFullYear() + 1);\n this._hour(date, rule);\n }\n }\n return false;\n }\n setup() {\n // No-op\n }\n}\n","import { cloneDate, firstDayOfMonth, Day } from '@progress/kendo-date-math';\nimport { setDayOfWeek, toUTCDateTime, normalizeDayIndex } from './utils';\nconst numberSortPredicate = (a, b) => a - b;\nconst weekInMonth = (date, weekStart) => {\n const firstWeekDay = toUTCDateTime(firstDayOfMonth(date)).getUTCDay();\n let firstWeekLength = 7 - (firstWeekDay + 7 - (weekStart || 7)) || 7;\n if (firstWeekLength < 0) {\n firstWeekLength += 7;\n }\n return Math.ceil((date.getUTCDate() - firstWeekLength) / 7) + 1;\n};\nconst weekInYear = (date, weekStart) => {\n date = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));\n let year = date.getUTCFullYear();\n if (weekStart !== undefined) {\n setDayOfWeek(date, weekStart, -1);\n date.setUTCDate(date.getUTCDate() + 4);\n }\n else {\n date.setUTCDate(date.getUTCDate() + (4 - (date.getUTCDay() || 7)));\n }\n let days = Math.floor((date.getTime() - Date.UTC(year, 0, 1, -6)) / 86400000);\n return 1 + Math.floor(days / 7);\n};\nconst normalizeOffset = (date, rule, weekStart) => {\n let offset = rule.offset;\n if (!offset) {\n return weekInMonth(date, weekStart);\n }\n const lastDate = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 0));\n let weeksInMonth = weekInMonth(lastDate, weekStart);\n const day = normalizeDayIndex(rule.day, weekStart);\n const skipFirst = day < normalizeDayIndex(new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1)).getUTCDay(), weekStart);\n const skipLast = day > normalizeDayIndex(lastDate.getUTCDay(), weekStart);\n if (offset < 0) {\n offset = weeksInMonth + (offset + 1 - (skipLast ? 1 : 0));\n }\n else if (skipFirst) {\n offset += 1;\n }\n weeksInMonth -= (skipLast ? 1 : 0);\n if (offset < (skipFirst ? 1 : 0) || offset > weeksInMonth) {\n return null;\n }\n return offset;\n};\nconst isInWeek = (date, rule, weekStart) => {\n return weekInMonth(date, weekStart) === normalizeOffset(date, rule, weekStart);\n};\nconst numberOfWeeks = (date, weekStart) => {\n return weekInMonth(new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 0)), weekStart);\n};\nconst DAYS_IN_LEAPYEAR = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nconst DAYS_IN_YEAR = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nconst leapYear = (year) => {\n year = year.getUTCFullYear();\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n};\nconst dayInYear = (date) => {\n const month = date.getUTCMonth();\n const days = leapYear(date) ? DAYS_IN_LEAPYEAR[month] : DAYS_IN_YEAR[month];\n return days + date.getUTCDate();\n};\nconst MONTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst getMonthLength = (date) => {\n const month = date.getUTCMonth();\n if (month === 1) {\n if (new Date(Date.UTC(date.getUTCFullYear(), 1, 29)).getUTCMonth() === 1) {\n return 29;\n }\n return 28;\n }\n return MONTHS[month];\n};\nconst ruleValues = (rules, value, normalize) => {\n const length = rules.length;\n const availableRules = [];\n for (let idx = 0; idx < length; idx++) {\n let ruleValue = rules[idx];\n if (normalize) {\n ruleValue = normalize(ruleValue);\n }\n if (value === ruleValue) {\n return null;\n }\n else if (value < ruleValue) {\n availableRules.push(ruleValue);\n }\n }\n return availableRules;\n};\nconst ruleWeekValues = (days, date, weekStart) => {\n const currentDay = normalizeDayIndex(date.getUTCDay(), weekStart);\n const length = days.length;\n let ruleWeekOffset;\n let weekDay, day;\n let weekNumber;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n weekDay = days[idx];\n weekNumber = weekInMonth(date, weekStart);\n ruleWeekOffset = normalizeOffset(date, weekDay, weekStart);\n if (ruleWeekOffset === null) {\n continue;\n }\n if (weekNumber < ruleWeekOffset) {\n result.push(weekDay);\n }\n else if (weekNumber === ruleWeekOffset) {\n day = normalizeDayIndex(weekDay.day, weekStart);\n if (currentDay < day) {\n result.push(weekDay);\n }\n else if (currentDay === day) {\n return null;\n }\n }\n }\n return result;\n};\n/** @hidden */\nexport const byMonth = (date, end, rule) => {\n const monthRules = rule.byMonth;\n const monthRuleValues = ruleValues(monthRules, date.getUTCMonth() + 1);\n let changed = false;\n if (monthRuleValues !== null) {\n if (monthRuleValues.length) {\n date.setUTCMonth(monthRuleValues[0] - 1, 1);\n }\n else {\n date.setUTCFullYear(date.getUTCFullYear() + 1, monthRules[0] - 1, 1);\n }\n changed = true;\n }\n return changed;\n};\n/** @hidden */\nexport const byMonthDay = (date, end, rule) => {\n let monthLength;\n let changed = false;\n function normalize(monthDay) {\n if (monthDay < 0) {\n monthDay = monthLength + monthDay + 1;\n }\n return monthDay;\n }\n while (date <= end) {\n let month = date.getUTCMonth();\n monthLength = getMonthLength(date);\n let days = ruleValues(rule.byMonthDay, date.getUTCDate(), normalize);\n if (days === null) {\n return changed;\n }\n changed = true;\n if (days.length) {\n date.setUTCMonth(month, days.sort(numberSortPredicate)[0]);\n if (month === date.getUTCMonth()) {\n break;\n }\n }\n else {\n date.setUTCMonth(month + 1, 1);\n }\n }\n return changed;\n};\n/** @hidden */\nexport const byYearDay = (date, end, rule) => {\n let year;\n let changed = false;\n function normalize(yearDay) {\n if (yearDay < 0) {\n yearDay = year + yearDay;\n }\n return yearDay;\n }\n while (date < end) {\n year = leapYear(date) ? 366 : 365;\n let days = ruleValues(rule.byYearDay, dayInYear(date), normalize);\n if (days === null) {\n return changed;\n }\n changed = true;\n year = date.getUTCFullYear();\n if (days.length) {\n date.setUTCFullYear(year, 0, days.sort(numberSortPredicate)[0]);\n break;\n }\n else {\n date.setUTCFullYear(year + 1, 0, 1);\n }\n }\n return changed;\n};\n/** @hidden */\nexport const byWeekNumber = (date, end, rule) => {\n const weekStart = rule.weekStart || Day.Monday;\n let changed = false;\n function normalize(week) {\n if (week < 0) {\n week = 53 + week;\n }\n return week;\n }\n while (date < end) {\n const weekRuleValues = ruleValues(rule.byWeekNumber, weekInYear(date, weekStart), normalize);\n if (weekRuleValues === null) {\n return changed;\n }\n changed = true;\n const year = date.getUTCFullYear();\n if (weekRuleValues.length) {\n const day = (weekRuleValues.sort(numberSortPredicate)[0] * 7) - 1;\n date.setUTCFullYear(year, 0, day);\n setDayOfWeek(date, weekStart, -1);\n break;\n }\n else {\n date.setUTCFullYear(year + 1, 0, 1);\n }\n }\n return changed;\n};\n/** @hidden */\nexport const byWeekDay = (startDate, end, rule) => {\n const ruleValue = rule.byWeekDay;\n const weekStart = rule.weekStart || Day.Monday;\n let weekDayRules = ruleWeekValues(ruleValue, startDate, weekStart);\n if (weekDayRules === null) {\n return false;\n }\n if (!weekDayRules[0]) {\n weekDayRules = ruleValue;\n setDayOfWeek(startDate, weekStart);\n }\n const results = weekDayRules.map((weekDayRule) => {\n let date = cloneDate(startDate);\n let day = weekDayRule.day;\n if (weekDayRule.offset) {\n while (date <= end && !isInWeek(date, weekDayRule, weekStart)) {\n if (weekInMonth(date, weekStart) === numberOfWeeks(date, weekStart)) {\n date.setUTCMonth(date.getUTCMonth() + 1, 1);\n }\n else {\n date.setUTCDate(date.getUTCDate() + 7);\n setDayOfWeek(date, weekStart, -1);\n }\n }\n }\n if (date.getUTCDay() !== day) {\n setDayOfWeek(date, day);\n }\n return date;\n }).sort((a, b) => a.getTime() - b.getTime());\n const firstDate = results[0];\n if (firstDate) {\n startDate.setTime(firstDate);\n }\n return true;\n};\n/** @hidden */\nexport const byHour = (date, end, rule) => {\n let hourRules = rule.byHour;\n let changed = false;\n let startTime = rule._startTime;\n const startHours = startTime.getUTCHours();\n let hourValues = ruleValues(hourRules, startHours);\n if (hourValues !== null) {\n changed = true;\n date.setUTCHours(startHours);\n if (hourValues.length) {\n hourValues = hourValues[0];\n date.setUTCHours(hourValues);\n }\n else {\n hourValues = date.getUTCHours();\n date.setUTCDate(date.getUTCDate() + 1);\n hourValues = hourRules[0];\n date.setUTCHours(hourValues);\n }\n if (rule.byMinute) {\n date.setUTCMinutes(0);\n }\n startTime.setUTCHours(hourValues, date.getUTCMinutes());\n }\n return changed;\n};\n/** @hidden */\nexport const byMinute = (date, end, rule) => {\n const minuteRules = rule.byMinute;\n const currentMinutes = date.getUTCMinutes();\n let minuteValues = ruleValues(minuteRules, currentMinutes);\n let startHours = rule._startTime.getUTCHours();\n let changed = false;\n if (minuteValues !== null) {\n changed = true;\n if (minuteValues.length) {\n minuteValues = minuteValues[0];\n }\n else {\n startHours += 1;\n minuteValues = minuteRules[0];\n }\n if (rule.bySecond) {\n date.setUTCSeconds(0);\n }\n date.setUTCHours(startHours, minuteValues);\n startHours = startHours % 24;\n rule._startTime.setUTCHours(startHours, minuteValues, date.getUTCSeconds());\n }\n return changed;\n};\n/** @hidden */\nexport const bySecond = (date, _end, rule) => {\n const secondRules = rule.bySecond;\n const secondsValues = ruleValues(secondRules, date.getUTCSeconds());\n let startHours = rule._startTime.getUTCHours();\n let dateMinutes = date.getUTCMinutes();\n let changed = false;\n if (secondsValues !== null) {\n changed = true;\n if (secondsValues.length) {\n date.setUTCSeconds(secondsValues[0]);\n }\n else {\n dateMinutes += 1;\n date.setUTCMinutes(dateMinutes, secondRules[0]);\n if (dateMinutes > 59) {\n dateMinutes = dateMinutes % 60;\n startHours = (startHours + 1) % 24;\n }\n }\n rule._startTime.setUTCHours(startHours, dateMinutes, date.getUTCSeconds());\n }\n return changed;\n};\n","export { expand } from './expand';\nexport { parseRule } from './parse-rule';\nexport { serializeRule } from './serialize-rule';\n","import { parseArray, parseDateTime, parseDateTimeList, parseISODate, parseWeekDayList, parseWeekDay, hasModifiers } from './utils';\nconst normalizeWeekDay = (day, weekStart) => (day + (day < weekStart ? 7 : 0));\nconst daySortPredicate = (weekStart) => (a, b) => (normalizeWeekDay(a.day, weekStart) - normalizeWeekDay(b.day, weekStart));\nconst sortDays = (rrule) => {\n const { byWeekDay, weekStart } = rrule;\n if (!byWeekDay) {\n return;\n }\n byWeekDay.sort(daySortPredicate(weekStart));\n};\n/**\n * @hidden\n *\n * Internal method for parsing of iCal recurrence rule string.\n */\nexport const parseRule = (options) => {\n if (!options) {\n return null;\n }\n const { recurrenceRule, weekStart = 0 } = options;\n const rule = {};\n let splits, value;\n let idx = 0, length;\n let parts;\n let property;\n if (!recurrenceRule) {\n return null;\n }\n let lines = recurrenceRule.split('\\n');\n if (!lines[1] && (recurrenceRule.indexOf('DTSTART') !== -1 ||\n recurrenceRule.indexOf('DTEND') !== -1 ||\n recurrenceRule.indexOf('EXDATE') !== -1)) {\n lines = recurrenceRule.split(' ');\n }\n for (idx = 0, length = lines.length; idx < length; idx++) {\n let line = (lines[idx] || '').trim();\n if (line.indexOf('DTSTART') !== -1) {\n rule.start = parseDateTime(line);\n }\n else if (line.indexOf('DTEND') !== -1) {\n rule.end = parseDateTime(line);\n }\n else if (line.indexOf('EXDATE') !== -1) {\n rule.exceptionDates = parseDateTimeList(line);\n }\n else if (line.indexOf('RRULE') !== -1) {\n parts = line.substring(6);\n }\n else if (line.trim()) {\n parts = line;\n }\n }\n parts = parts.split(';');\n for (idx = 0, length = parts.length; idx < length; idx++) {\n property = parts[idx];\n splits = property.split('=');\n value = (splits[1] || '').trim().split(',');\n switch (splits[0].trim().toUpperCase()) {\n case 'FREQ':\n rule.freq = value[0].toLowerCase();\n break;\n case 'UNTIL':\n rule.until = parseISODate(value[0]);\n break;\n case 'COUNT':\n rule.count = parseInt(value[0], 10);\n break;\n case 'INTERVAL':\n rule.interval = parseInt(value[0], 10);\n break;\n case 'BYSECOND':\n rule.bySecond = parseArray(value, { start: 0, end: 60 });\n break;\n case 'BYMINUTE':\n rule.byMinute = parseArray(value, { start: 0, end: 59 });\n break;\n case 'BYHOUR':\n rule.byHour = parseArray(value, { start: 0, end: 23 });\n break;\n case 'BYMONTHDAY':\n rule.byMonthDay = parseArray(value, { start: -31, end: 31 });\n break;\n case 'BYYEARDAY':\n rule.byYearDay = parseArray(value, { start: -366, end: 366 });\n break;\n case 'BYMONTH':\n rule.byMonth = parseArray(value, { start: 1, end: 12 });\n break;\n case 'BYDAY':\n rule.byWeekDay = parseWeekDayList(value);\n break;\n case 'BYWEEKNO':\n rule.byWeekNumber = parseArray(value, { start: -53, end: 53 });\n break;\n case 'BYSETPOS':\n rule.bySetPosition = parseArray(value, { start: -366, end: 366 });\n break;\n case 'WKST':\n rule.weekStart = parseWeekDay(value[0]);\n break;\n default:\n break;\n }\n }\n if (rule.freq === undefined || (rule.count !== undefined && rule.until)) {\n return null;\n }\n if (rule.weekStart === undefined) {\n rule.weekStart = weekStart;\n }\n if (!rule.interval) {\n rule.interval = 1;\n }\n if (rule.bySetPosition && !hasModifiers(rule)) {\n rule.bySetPosition = [];\n }\n sortDays(rule);\n return rule;\n};\n","import { toString } from '@telerik/kendo-intl';\nimport { serializeDates } from './utils';\nconst WEEK_DAYS = {\n 0: 'SU',\n 1: 'MO',\n 2: 'TU',\n 3: 'WE',\n 4: 'TH',\n 5: 'FR',\n 6: 'SA'\n};\nconst serializeWeekDayList = (list) => {\n const length = list.length;\n const result = [];\n let valueString;\n for (let idx = 0; idx < length; idx++) {\n let value = list[idx];\n if (typeof value === 'string') {\n valueString = value;\n }\n else {\n valueString = '' + WEEK_DAYS[value.day];\n if (value.offset) {\n valueString = value.offset + valueString;\n }\n }\n result.push(valueString);\n }\n return result.toString();\n};\n/**\n * @hidden\n *\n * Internal method for serializing a RecurrenceRule instance to string.\n */\nexport const serializeRule = (rrule, timezone) => {\n if (!rrule || !rrule.freq) {\n return null;\n }\n let weekStart = rrule.weekStart;\n let rruleString = 'FREQ=' + rrule.freq.toUpperCase();\n let exdates = '';\n let start = '';\n let end = '';\n let until = rrule.until;\n if (rrule.interval > 1) {\n rruleString += ';INTERVAL=' + rrule.interval;\n }\n if (rrule.count) {\n rruleString += ';COUNT=' + rrule.count;\n }\n if (until) {\n rruleString += ';UNTIL=' + toString(until.toTimezone('Etc/UTC'), 'yyyyMMddTHHmmss') + 'Z';\n }\n if (rrule.byMonth) {\n rruleString += ';BYMONTH=' + rrule.byMonth;\n }\n if (rrule.byWeekNumber) {\n rruleString += ';BYWEEKNO=' + rrule.byWeekNumber;\n }\n if (rrule.byYearDay) {\n rruleString += ';BYYEARDAY=' + rrule.byYearDay;\n }\n if (rrule.byMonthDay) {\n rruleString += ';BYMONTHDAY=' + rrule.byMonthDay;\n }\n if (rrule.byWeekDay) {\n rruleString += ';BYDAY=' + serializeWeekDayList(rrule.byWeekDay);\n }\n if (rrule.byHour) {\n rruleString += ';BYHOUR=' + rrule.byHour;\n }\n if (rrule.byMinute) {\n rruleString += ';BYMINUTE=' + rrule.byMinute;\n }\n if (rrule.bySecond) {\n rruleString += ';BYSECOND=' + rrule.bySecond;\n }\n if (rrule.bySetPosition) {\n rruleString += ';BYSETPOS=' + rrule.bySetPosition;\n }\n if (weekStart !== undefined) {\n rruleString += ';WKST=' + WEEK_DAYS[weekStart];\n }\n if (rrule.start) {\n start = 'DTSTART' + serializeDates([rrule.start]);\n }\n if (rrule.end) {\n end = 'DTEND' + serializeDates([rrule.end]);\n }\n if (rrule.exceptionDates) {\n exdates = 'EXDATE' + serializeDates(rrule.exceptionDates);\n }\n if (start || end || exdates) {\n rruleString = start + end + exdates + 'RRULE:' + rruleString;\n }\n return rruleString;\n};\n","export * from './utils/has-modifiers';\nexport * from './utils/parse-date-time';\nexport * from './utils/serialize-date-time';\nexport * from './utils/duration';\nimport { Day, ZonedDate } from '@progress/kendo-date-math';\nimport { parseDate } from '@telerik/kendo-intl';\nconst isOutOfRange = (value, range) => {\n if (!range) {\n return false;\n }\n const { start, end } = range;\n return value < start || value > end || (value === 0 && start < 0);\n};\n/**\n * @hidden\n */\nexport const acsendingComparer = (a, b) => a - b;\n/**\n * @hidden\n */\nexport const parseArray = (list, range) => {\n const result = [];\n for (let idx = 0; idx < list.length; idx++) {\n const value = parseInt(list[idx], 10);\n if (isNaN(value) || isOutOfRange(value, range)) {\n return [];\n }\n result.push(value);\n }\n return result.sort(acsendingComparer);\n};\nconst DATE_FORMATS = [\n 'yyyyMMddTHHmmssSSSXXX',\n 'yyyyMMddTHHmmssXXX',\n 'yyyyMMddTHHmmss',\n 'yyyyMMddTHHmm',\n 'yyyyMMddTHH',\n 'yyyyMMdd'\n];\n/** @hidden */\nexport function toUTCDateTime(localDate) {\n return new Date(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), localDate.getHours(), localDate.getMinutes(), localDate.getSeconds(), localDate.getMilliseconds()));\n}\n/**\n * @hidden\n */\nexport const parseISODate = (value, timezone) => {\n const parsed = parseDate(value) || parseDate(value, DATE_FORMATS);\n if (!parsed) {\n return null;\n }\n const utcDate = timezone ? toUTCDateTime(parsed) : parsed;\n return ZonedDate.fromUTCDate(utcDate, timezone || 'Etc/UTC');\n};\nconst WEEK_DAYS_IDX = {\n 'SU': Day.Sunday,\n 'MO': Day.Monday,\n 'TU': Day.Tuesday,\n 'WE': Day.Wednesday,\n 'TH': Day.Thursday,\n 'FR': Day.Friday,\n 'SA': Day.Saturday\n};\n/**\n * @hidden\n */\nexport const parseWeekDay = (weekDay) => WEEK_DAYS_IDX[weekDay];\n/**\n * @hidden\n */\nexport const parseWeekDayList = (weekDays) => {\n const result = [];\n for (let idx = 0; idx < weekDays.length; idx++) {\n const value = weekDays[idx];\n const day = parseWeekDay(value.substring(value.length - 2).toUpperCase());\n if (day === undefined) {\n return [];\n }\n result.push({\n offset: parseInt(value.substring(0, value.length - 2), 10) || 0,\n day\n });\n }\n return result;\n};\n/**\n * @hidden\n * Sets week day with mutation.\n *\n * XXX: Remove once the recurrence engine is refactored\n */\nexport const setDayOfWeek = (date, day, dir = 1) => {\n day = ((day - date.getUTCDay()) + (7 * dir)) % 7;\n date.setUTCDate(date.getUTCDate() + day);\n};\n/**\n * @hidden\n */\nexport const normalizeDayIndex = (weekDay, weekStart) => {\n return weekDay + (weekDay < weekStart ? 7 : 0);\n};\n","/**\n * Returns a duration between start and end dates.\n *\n * @hidden\n */\nexport const duration = (start, end) => {\n return end.getTime() - start.getTime();\n};\n","const some = (arr) => arr instanceof Array && arr.length > 0;\n/**\n * Returns true if the Recurrence Rule has limit/expand modifiers.\n *\n * Modifiers include BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY,\n * BYHOUR, BYMINUTE and BYSECOND.\n *\n * See also: https://tools.ietf.org/html/rfc5545#section-3.3.10\n *\n * @hidden\n */\nexport const hasModifiers = (rule) => some(rule.bySecond) || some(rule.byMinute) || some(rule.byHour) ||\n some(rule.byYearDay) || some(rule.byMonthDay) || some(rule.byWeekDay) ||\n some(rule.byMonth) || some(rule.byWeekNumber);\n","import { parseISODate } from '../utils';\n/**\n * @hidden\n */\nexport const parseDateTimeList = (rule) => {\n const pairs = rule.split(';');\n let values = [];\n let timezone = null;\n for (let idx = 0; idx < pairs.length; idx++) {\n const [property, val = ''] = pairs[idx].split(':');\n const tzIndex = property.indexOf('TZID');\n if (tzIndex !== -1) {\n timezone = property.substring(tzIndex).split('=')[1];\n }\n values = val.split(',').map(v => parseISODate(v, timezone));\n }\n if (!values.length || values[0] === null) {\n return null;\n }\n return values;\n};\n/**\n * @hidden\n */\nexport const parseDateTime = (rule) => {\n const list = parseDateTimeList(rule);\n if (list === null) {\n return null;\n }\n return list[0];\n};\n","import { formatDate } from '@telerik/kendo-intl';\n/**\n * @hidden\n */\nexport const serializeDates = (values) => {\n if (!values || values.length === 0) {\n return '';\n }\n const timezone = values[0].timezone;\n const isUTC = timezone === 'Etc/UTC';\n const suffix = isUTC ? 'Z' : '';\n const parts = values.map(val => formatDate(val, 'yyyyMMddTHHmmss') + suffix);\n const header = timezone && !isUTC ? ';TZID=' + timezone : '';\n return header + ':' + parts.join(',') + ' ';\n};\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nlet typedOK = () => {\n const supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = () => supported;\n return supported;\n};\n\nlet arraySet = (dest, src, src_offs, len, dest_offs) => {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nlet flattenChunks = (chunks) => {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nlet Buf8 = (size) => {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nlet Buf16 = (size) => {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nlet Buf32 = (size) => {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nlet strApplyOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = () => result;\n return result;\n};\n\nlet strApplyUintOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = () => result;\n return result;\n};\n\nlet utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = arg => table[arg];\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nlet crcTable = function() {\n const table = makeTable();\n crcTable = () => table;\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nclass Inflate {\n constructor(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nlet configurationTable = function() {\n const table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = () => table;\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n const table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nclass Deflate {\n constructor(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","export { default as load } from './cldr/load';\nexport { default as setData } from './cldr/set-data';\nexport { default as dateFieldName } from './cldr/date-field-name';\nexport { default as dateFormatNames } from './cldr/date-format-names';\nexport { cldr, localeInfo } from './cldr/info';\nexport { currencyDisplays, currencyDisplay, currencyFractionOptions, territoryCurrencyCode, localeCurrency } from './cldr/currency';\nexport { default as firstDay } from './cldr/first-day';\nexport { default as weekendRange } from './cldr/weekend-range';\nexport { default as numberSymbols } from './cldr/number-symbols';\n\n","\nexport const DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport const DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\n\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\n\nconst GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n const currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n const displays = [ currency ];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n const { value, currency, currencyDisplay = SYMBOL } = options;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === undefined || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n const regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n const currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n const { type, nameType, standAlone, lower } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n millisecond: {\n wide: \"millisecond\",\n short: \"ms\",\n narrow: \"ms\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData, NoFirstDay } = errors;\n\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport const cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nconst datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n\n for (let field in fields) {\n const [ fieldName, formatType = 'wide' ] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[ pathIdx ];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\n\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr } from './info';\n\nexport default function setData(data) {\n const locale = data.name;\n const info = cldr[locale] = cldr[locale] || {};\n const supplemental = cldr.supplemental = cldr.supplemental || {};\n\n if (data.likelySubtags) {\n supplemental.likelySubtags = Object.assign(supplemental.likelySubtags || {}, data.likelySubtags);\n }\n\n if (data.currencyData) {\n supplemental.currencyData = supplemental.currencyData || {};\n supplemental.currencyData.fractions = Object.assign(supplemental.currencyData.fractions || {}, data.currencyData);\n }\n\n const numbers = info.numbers;\n\n Object.assign(info, data);\n\n if (numbers && data.numbers) {\n info.numbers = Object.assign({}, numbers, data.numbers);\n }\n}","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n const length = parts.length;\n\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n const name = info.name;\n const identity = info.identity;\n let territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData } = errors;\n\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\n\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\n\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\n\nexport const POINT = \".\";\nexport const EMPTY = \"\";\n\nexport const DEFAULT_LOCALE = \"en\";\n\n","const formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n const values = arguments;\n\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","export default function isString(value) {\n return typeof value === \"string\";\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","const MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","export { default as formatDate } from './dates/format-date';\nexport { default as parseDate } from './dates/parse-date';\nexport { default as splitDateFormat } from './dates/split-date-format';\n","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\n\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\n\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\n\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nconst DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nconst specifiersRegex = {};\nconst resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n const { shortHours, optionalMinutes, separator, localizedName, zZeroOffset } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nconst formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n let formatLength = match.length;\n let result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nconst timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\n\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\n\nconst standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nconst FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nconst TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n let { format, idx } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n let regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n const { gmtFormat, gmtZeroFormat } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n const { shortHours, noSeparator, optionalMinutes, localizedName, zLiteral } = options;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nconst parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n const pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n const count = lookAhead(\"z\", state);\n\n const shortFormat = count < 4;\n\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n const count = lookAhead(\"Z\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n const count = lookAhead(\"x\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n const count = lookAhead(\"X\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n let { year, month, day, hours, minutes, seconds, milliseconds, pmHour, UTC, hoursOffset, minutesOffset } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return `${ leadingSpaces }${ value }${ trailingSpaces }`;\n}\n\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n let result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n const length = parseFormats.length;\n\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nconst LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n let value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n const names = NAME_TYPES[type];\n\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n const toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\n\nclass IntlError {\n constructor({ name, message }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n }\n\n formatMessage(...values) {\n const flattenValues = flatten(values);\n\n const formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return `${this.name}: ${formattedMessage}`;\n }\n\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\n\nconst flatten = function(arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\n\nconst toIntlErrors = function(errors) {\n const predicate = function(prev, name) {\n prev[name] = new IntlError({ name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nconst errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nconst formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","export * from './numbers';\nexport * from './dates';\nexport * from './cldr';\nexport * from './format';\nexport * from './errors';\n","export { default as formatNumber } from './numbers/format-number';\nexport { default as parseNumber } from './numbers/parse-number';","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nconst SHARP = \"#\";\nconst ZERO = \"0\";\n\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${ lastZero }}[1-9]*)0+$`, 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n let { number, format } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n let precision = fraction.length;\n let trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n let { number, format } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n let end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n const { start, end, negative, negativeZero, format, decimalIndex, lastZeroIndex, hasNegativeFormat, hasGroup } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n const display = currencyDisplay(info, options);\n\n return display;\n}\n","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n const info = localeInfo(locale);\n const options = formatOptions(format);\n\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n\n let style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nconst exponentRegExp = /[eE][\\-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n\n const currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n const { negative: negativeCurrency, number: currencyNumber } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n let isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\n\nconst trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n let { minimumFractionDigits, maximumFractionDigits, style } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${ NUMBER_PLACEHOLDER }`);\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const { style } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n let value = number;\n let symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n const { minimumFractionDigits, maximumFractionDigits } = fractionOptions(options);\n\n value = round(value, maximumFractionDigits);\n\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n\n const parts = value.split(POINT);\n\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n let pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n const result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","import { liftTarget, replaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, AllSelection, TextSelection } from 'prosemirror-state';\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Delete the selection, if there is one.\nfunction deleteSelection(state, dispatch) {\n if (state.selection.empty) { return false }\n if (dispatch) { dispatch(state.tr.deleteSelection().scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and at the start of a textblock, try to\n// reduce the distance between that block and the one before it—if\n// there's a block directly before it that can be joined, join them.\n// If not, try to move the selected block closer to the next one in\n// the document structure by lifting it out of its parent or moving it\n// into a parent of the previous block. Will use the view for accurate\n// (bidi-aware) start-of-textblock detection if given.\nfunction joinBackward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n { return false }\n\n var $cut = findCutBefore($cursor);\n\n // If there is no node before this, try to lift\n if (!$cut) {\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n var before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n { return true }\n\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n var delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n var tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n }\n\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\nfunction textblockAt(node, side, only) {\n for (; node; node = (side == \"start\" ? node.firstChild : node.lastChild)) {\n if (node.isTextblock) { return true }\n if (only && node.childCount != 1) { return false }\n }\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the start of a textblock, select\n// the node before that textblock, if possible. This is intended to be\n// bound to keys like backspace, after\n// [`joinBackward`](#commands.joinBackward) or other deleting\n// commands, as a fall-back behavior when the schema doesn't allow\n// deletion at the selected point.\nfunction selectNodeBackward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0) { return false }\n $cut = findCutBefore($head);\n }\n var node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView()); }\n return true\n}\n\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0) { return $pos.doc.resolve($pos.before(i + 1)) }\n if ($pos.node(i).type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and the cursor is at the end of a\n// textblock, try to reduce or remove the boundary between that block\n// and the one after it, either by joining them or by moving the other\n// block closer to this one in the tree structure. Will use the view\n// for accurate start-of-textblock detection if given.\nfunction joinForward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n { return false }\n\n var $cut = findCutAfter($cursor);\n\n // If there is no node after this, there's nothing to do\n if (!$cut) { return false }\n\n var after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch)) { return true }\n\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n var delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n var tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n }\n\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the end of a textblock, select\n// the node coming after that textblock, if possible. This is intended\n// to be bound to keys like delete, after\n// [`joinForward`](#commands.joinForward) and similar deleting\n// commands, to provide a fall-back behavior when the schema doesn't\n// allow deletion at the selected point.\nfunction selectNodeForward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n { return false }\n $cut = findCutAfter($head);\n }\n var node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView()); }\n return true\n}\n\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n var parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount) { return $pos.doc.resolve($pos.after(i + 1)) }\n if (parent.type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block or, if there is a text selection, the\n// closest ancestor block of the selection that can be joined, with\n// the sibling above it.\nfunction joinUp(state, dispatch) {\n var sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from)) { return false }\n point = sel.from;\n } else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null) { return false }\n }\n if (dispatch) {\n var tr = state.tr.join(point);\n if (nodeSel) { tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize)); }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block, or the closest ancestor of the selection\n// that can be joined, with the sibling after it.\nfunction joinDown(state, dispatch) {\n var sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to)) { return false }\n point = sel.to;\n } else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null) { return false }\n }\n if (dispatch)\n { dispatch(state.tr.join(point).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Lift the selected block, or the closest ancestor block of the\n// selection that can be lifted, out of its parent node.\nfunction lift(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the selection is in a node whose type has a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, replace the\n// selection with a newline character.\nfunction newlineInCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n if (dispatch) { dispatch(state.tr.insertText(\"\\n\").scrollIntoView()); }\n return true\n}\n\nfunction defaultBlockAt(match) {\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n if (type.isTextblock && !type.hasRequiredAttrs()) { return type }\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// When the selection is in a node with a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, create a\n// default block after the code block, and move the cursor there.\nfunction exitCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n var above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!above.canReplaceWith(after, after, type)) { return false }\n if (dispatch) {\n var pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If a block node is selected, create an empty paragraph before (if\n// it is its parent's first child) or after it.\nfunction createParagraphNear(state, dispatch) {\n var sel = state.selection;\n var $from = sel.$from;\n var $to = sel.$to;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent) { return false }\n var type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock) { return false }\n if (dispatch) {\n var side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n var tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the cursor is in an empty textblock that can be lifted, lift the\n// block.\nfunction liftEmptyBlock(state, dispatch) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || $cursor.parent.content.size) { return false }\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n var before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch) { dispatch(state.tr.split(before).scrollIntoView()); }\n return true\n }\n }\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Split the parent block of the selection. If the selection is a text\n// selection, also delete its content.\nfunction splitBlock(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos)) { return false }\n if (dispatch) { dispatch(state.tr.split($from.pos).scrollIntoView()); }\n return true\n }\n\n if (!$from.parent.isBlock) { return false }\n\n if (dispatch) {\n var atEnd = $to.parentOffset == $to.parent.content.size;\n var tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection) { tr.deleteSelection(); }\n var deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n var types = atEnd && deflt ? [{type: deflt}] : null;\n var can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt && [{type: deflt}])) {\n types = [{type: deflt}];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n var first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n { tr.setNodeMarkup(tr.mapping.map($from.before()), deflt); }\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Acts like [`splitBlock`](#commands.splitBlock), but without\n// resetting the set of active marks at the cursor.\nfunction splitBlockKeepMarks(state, dispatch) {\n return splitBlock(state, dispatch && (function (tr) {\n var marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) { tr.ensureMarks(marks); }\n dispatch(tr);\n }))\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Move the selection to the node wrapping the current selection, if\n// any. (Will not select the document node.)\nfunction selectParentNode(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var to = ref.to;\n var pos;\n var same = $from.sharedDepth(to);\n if (same == 0) { return false }\n pos = $from.before(same);\n if (dispatch) { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos))); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Select the whole document.\nfunction selectAll(state, dispatch) {\n if (dispatch) { dispatch(state.tr.setSelection(new AllSelection(state.doc))); }\n return true\n}\n\nfunction joinMaybeClear(state, $pos, dispatch) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type)) { return false }\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch) { dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView()); }\n return true\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n { return false }\n if (dispatch)\n { dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView()); }\n return true\n}\n\nfunction deleteBarrier(state, $cut, dispatch) {\n var before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating) { return false }\n if (joinMaybeClear(state, $cut, dispatch)) { return true }\n\n var canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n var end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (var i = conn.length - 1; i >= 0; i--)\n { wrap = Fragment.from(conn[i].create(null, wrap)); }\n wrap = Fragment.from(before.copy(wrap));\n var tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n var joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt)) { tr.join(joinAt); }\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n var selAfter = Selection.findFrom($cut, 1);\n var range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n var at = before, wrap$1 = [];\n for (;;) {\n wrap$1.push(at);\n if (at.isTextblock) { break }\n at = at.lastChild;\n }\n var afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild) { afterDepth++; }\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n var end$1 = Fragment.empty;\n for (var i$1 = wrap$1.length - 1; i$1 >= 0; i$1--) { end$1 = Fragment.from(wrap$1[i$1].copy(end$1)); }\n var tr$1 = state.tr.step(new ReplaceAroundStep($cut.pos - wrap$1.length, $cut.pos + after.nodeSize,\n $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth,\n new Slice(end$1, wrap$1.length, 0), 0, true));\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n }\n\n return false\n}\n\nfunction selectTextblockSide(side) {\n return function(state, dispatch) {\n var sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n var depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth) { return false }\n depth--;\n }\n if (!$pos.node(depth).isTextblock) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(TextSelection.create(\n state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth)))); }\n return true\n }\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Moves the cursor to the start of current text block.\nvar selectTextblockStart = selectTextblockSide(-1);\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Moves the cursor to the end of current text block.\nvar selectTextblockEnd = selectTextblockSide(1);\n\n// Parameterized commands\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Wrap the selection in a node of the given type with the given\n// attributes.\nfunction wrapIn(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return false }\n if (dispatch) { dispatch(state.tr.wrap(range, wrapping).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that tries to set the selected textblocks to the\n// given node type with the given attributes.\nfunction setBlockType(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var from = ref.from;\n var to = ref.to;\n var applicable = false;\n state.doc.nodesBetween(from, to, function (node, pos) {\n if (applicable) { return false }\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) { return }\n if (node.type == nodeType) {\n applicable = true;\n } else {\n var $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n if (!applicable) { return false }\n if (dispatch) { dispatch(state.tr.setBlockType(from, to, nodeType, attrs).scrollIntoView()); }\n return true\n }\n}\n\nfunction markApplies(doc, ranges, type) {\n var loop = function ( i ) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var can = $from.depth == 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, function (node) {\n if (can) { return false }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) { return { v: true } }\n };\n\n for (var i = 0; i < ranges.length; i++) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\n// :: (MarkType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command function that toggles the given mark with the\n// given attributes. Will return `false` when the current selection\n// doesn't support that mark. This will remove the mark if any marks\n// of that type exist in the selection, or add it otherwise. If the\n// selection is empty, this applies to the [stored\n// marks](#state.EditorState.storedMarks) instead of a range of the\n// document.\nfunction toggleMark(markType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var empty = ref.empty;\n var $cursor = ref.$cursor;\n var ranges = ref.ranges;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) { return false }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n { dispatch(state.tr.removeStoredMark(markType)); }\n else\n { dispatch(state.tr.addStoredMark(markType.create(attrs))); }\n } else {\n var has = false, tr = state.tr;\n for (var i = 0; !has && i < ranges.length; i++) {\n var ref$1 = ranges[i];\n var $from = ref$1.$from;\n var $to = ref$1.$to;\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref$2 = ranges[i$1];\n var $from$1 = ref$2.$from;\n var $to$1 = ref$2.$to;\n if (has) {\n tr.removeMark($from$1.pos, $to$1.pos, markType);\n } else {\n var from = $from$1.pos, to = $to$1.pos, start = $from$1.nodeAfter, end = $to$1.nodeBefore;\n var spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n var spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) { from += spaceStart; to -= spaceEnd; }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true\n }\n}\n\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return function (tr) {\n if (!tr.isGeneric) { return dispatch(tr) }\n\n var ranges = [];\n for (var i = 0; i < tr.mapping.maps.length; i++) {\n var map = tr.mapping.maps[i];\n for (var j = 0; j < ranges.length; j++)\n { ranges[j] = map.map(ranges[j]); }\n map.forEach(function (_s, _e, from, to) { return ranges.push(from, to); });\n }\n\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n var joinable = [];\n for (var i$1 = 0; i$1 < ranges.length; i$1 += 2) {\n var from = ranges[i$1], to = ranges[i$1 + 1];\n var $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (var index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n var after = parent.maybeChild(index);\n if (!after) { break }\n if (index && joinable.indexOf(pos) == -1) {\n var before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n { joinable.push(pos); }\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort(function (a, b) { return a - b; });\n for (var i$2 = joinable.length - 1; i$2 >= 0; i$2--) {\n if (canJoin(tr.doc, joinable[i$2])) { tr.join(joinable[i$2]); }\n }\n dispatch(tr);\n }\n}\n\n// :: ((state: EditorState, ?(tr: Transaction)) → bool, union<(before: Node, after: Node) → bool, [string]>) → (state: EditorState, ?(tr: Transaction)) → bool\n// Wrap a command so that, when it produces a transform that causes\n// two joinable nodes to end up next to each other, those are joined.\n// Nodes are considered joinable when they are of the same type and\n// when the `isJoinable` predicate returns true for them or, if an\n// array of strings was passed, if their node type name is in that\n// array.\nfunction autoJoin(command, isJoinable) {\n if (Array.isArray(isJoinable)) {\n var types = isJoinable;\n isJoinable = function (node) { return types.indexOf(node.type.name) > -1; };\n }\n return function (state, dispatch, view) { return command(state, dispatch && wrapDispatchForJoin(dispatch, isJoinable), view); }\n}\n\n// :: (...[(EditorState, ?(tr: Transaction), ?EditorView) → bool]) → (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// Combine a number of command functions into a single function (which\n// calls them one by one until one returns true).\nfunction chainCommands() {\n var commands = [], len = arguments.length;\n while ( len-- ) commands[ len ] = arguments[ len ];\n\n return function(state, dispatch, view) {\n for (var i = 0; i < commands.length; i++)\n { if (commands[i](state, dispatch, view)) { return true } }\n return false\n }\n}\n\nvar backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nvar del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n\n// :: Object\n// A basic keymap containing bindings not specific to any schema.\n// Binds the following keys (when multiple commands are listed, they\n// are chained with [`chainCommands`](#commands.chainCommands)):\n//\n// * **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n// * **Mod-Enter** to `exitCode`\n// * **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n// * **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-a** to `selectAll`\nvar pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n\n// :: Object\n// A copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n// **Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n// **Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\n// Ctrl-Delete.\nvar macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (var key in pcBaseKeymap) { macBaseKeymap[key] = pcBaseKeymap[key]; }\n\n// declare global: os, navigator\nvar mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n : typeof os != \"undefined\" ? os.platform() == \"darwin\" : false;\n\n// :: Object\n// Depending on the detected platform, this will hold\n// [`pcBasekeymap`](#commands.pcBaseKeymap) or\n// [`macBaseKeymap`](#commands.macBaseKeymap).\nvar baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n// :: (options: ?Object) → Plugin\n// Create a plugin that, when added to a ProseMirror instance,\n// causes a decoration to show up at the drop position when something\n// is dragged over the editor.\n//\n// Nodes may add a `disableDropCursor` property to their spec to\n// control the showing of a drop cursor inside them. This may be a\n// boolean or a function, which will be called with a view and a\n// position, and should return a boolean.\n//\n// options::- These options are supported:\n//\n// color:: ?string\n// The color of the cursor. Defaults to `black`.\n//\n// width:: ?number\n// The precise width of the cursor in pixels. Defaults to 1.\n//\n// class:: ?string\n// A CSS class name to add to the cursor element.\nfunction dropCursor(options) {\n if ( options === void 0 ) options = {};\n\n return new Plugin({\n view: function view(editorView) { return new DropCursorView(editorView, options) }\n })\n}\n\nvar DropCursorView = function DropCursorView(editorView, options) {\n var this$1 = this;\n\n this.editorView = editorView;\n this.width = options.width || 1;\n this.color = options.color || \"black\";\n this.class = options.class;\n this.cursorPos = null;\n this.element = null;\n this.timeout = null;\n\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(function (name) {\n var handler = function (e) { return this$1[name](e); };\n editorView.dom.addEventListener(name, handler);\n return {name: name, handler: handler}\n });\n};\n\nDropCursorView.prototype.destroy = function destroy () {\n var this$1 = this;\n\n this.handlers.forEach(function (ref) {\n var name = ref.name;\n var handler = ref.handler;\n\n return this$1.editorView.dom.removeEventListener(name, handler);\n });\n};\n\nDropCursorView.prototype.update = function update (editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size) { this.setCursor(null); }\n else { this.updateOverlay(); }\n }\n};\n\nDropCursorView.prototype.setCursor = function setCursor (pos) {\n if (pos == this.cursorPos) { return }\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n } else {\n this.updateOverlay();\n }\n};\n\nDropCursorView.prototype.updateOverlay = function updateOverlay () {\n var $pos = this.editorView.state.doc.resolve(this.cursorPos), rect;\n if (!$pos.parent.inlineContent) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n var nodeRect = this.editorView.nodeDOM(this.cursorPos - (before ?before.nodeSize : 0)).getBoundingClientRect();\n var top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n { top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2; }\n rect = {left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2};\n }\n }\n if (!rect) {\n var coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = {left: coords.left - this.width / 2, right: coords.left + this.width / 2, top: coords.top, bottom: coords.bottom};\n }\n\n var parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class) { this.element.className = this.class; }\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none; background-color: \" + this.color;\n }\n var parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n } else {\n var rect$1 = parent.getBoundingClientRect();\n parentLeft = rect$1.left - parent.scrollLeft;\n parentTop = rect$1.top - parent.scrollTop;\n }\n this.element.style.left = (rect.left - parentLeft) + \"px\";\n this.element.style.top = (rect.top - parentTop) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"px\";\n};\n\nDropCursorView.prototype.scheduleRemoval = function scheduleRemoval (timeout) {\n var this$1 = this;\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () { return this$1.setCursor(null); }, timeout);\n};\n\nDropCursorView.prototype.dragover = function dragover (event) {\n if (!this.editorView.editable) { return }\n var pos = this.editorView.posAtCoords({left: event.clientX, top: event.clientY});\n\n var node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n var disableDropCursor = node && node.type.spec.disableDropCursor;\n var disabled = typeof disableDropCursor == \"function\" ? disableDropCursor(this.editorView, pos) : disableDropCursor;\n\n if (pos && !disabled) {\n var target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n target = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (target == null) { return this.setCursor(null) }\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n};\n\nDropCursorView.prototype.dragend = function dragend () {\n this.scheduleRemoval(20);\n};\n\nDropCursorView.prototype.drop = function drop () {\n this.scheduleRemoval(20);\n};\n\nDropCursorView.prototype.dragleave = function dragleave (event) {\n if (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n { this.setCursor(null); }\n};\n\nexport { dropCursor };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { NodeSelection, Selection, Plugin, TextSelection } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n// ::- Gap cursor selections are represented using this class. Its\n// `$anchor` and `$head` properties both point at the cursor position.\nvar GapCursor = /*@__PURE__*/(function (Selection) {\n function GapCursor($pos) {\n Selection.call(this, $pos, $pos);\n }\n\n if ( Selection ) GapCursor.__proto__ = Selection;\n GapCursor.prototype = Object.create( Selection && Selection.prototype );\n GapCursor.prototype.constructor = GapCursor;\n\n GapCursor.prototype.map = function map (doc, mapping) {\n var $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n };\n\n GapCursor.prototype.content = function content () { return Slice.empty };\n\n GapCursor.prototype.eq = function eq (other) {\n return other instanceof GapCursor && other.head == this.head\n };\n\n GapCursor.prototype.toJSON = function toJSON () {\n return {type: \"gapcursor\", pos: this.head}\n };\n\n GapCursor.fromJSON = function fromJSON (doc, json) {\n if (typeof json.pos != \"number\") { throw new RangeError(\"Invalid input for GapCursor.fromJSON\") }\n return new GapCursor(doc.resolve(json.pos))\n };\n\n GapCursor.prototype.getBookmark = function getBookmark () { return new GapBookmark(this.anchor) };\n\n GapCursor.valid = function valid ($pos) {\n var parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos)) { return false }\n var override = parent.type.spec.allowGapCursor;\n if (override != null) { return override }\n var deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock\n };\n\n GapCursor.findFrom = function findFrom ($pos, dir, mustMove) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos)) { return $pos }\n var pos = $pos.pos, next = null;\n // Scan up from this position\n for (var d = $pos.depth;; d--) {\n var parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break\n } else if (d == 0) {\n return null\n }\n pos += dir;\n var $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur)) { return $cur }\n }\n\n // And then down into the next node\n for (;;) {\n var inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search\n }\n break\n }\n next = inside;\n pos += dir;\n var $cur$1 = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur$1)) { return $cur$1 }\n }\n\n return null\n }\n };\n\n return GapCursor;\n}(Selection));\n\nGapCursor.prototype.visible = false;\n\nSelection.jsonID(\"gapcursor\", GapCursor);\n\nvar GapBookmark = function GapBookmark(pos) {\n this.pos = pos;\n};\nGapBookmark.prototype.map = function map (mapping) {\n return new GapBookmark(mapping.map(this.pos))\n};\nGapBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n};\n\nfunction closedBefore($pos) {\n for (var d = $pos.depth; d >= 0; d--) {\n var index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating) { return true }\n continue\n }\n // See if the node before (or its first ancestor) is closed\n for (var before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating) { return true }\n if (before.inlineContent) { return false }\n }\n }\n // Hit start of document\n return true\n}\n\nfunction closedAfter($pos) {\n for (var d = $pos.depth; d >= 0; d--) {\n var index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating) { return true }\n continue\n }\n for (var after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating) { return true }\n if (after.inlineContent) { return false }\n }\n }\n return true\n}\n\n// :: () → Plugin\n// Create a gap cursor plugin. When enabled, this will capture clicks\n// near and arrow-key-motion past places that don't have a normally\n// selectable position nearby, and create a gap cursor selection for\n// them. The cursor is drawn as an element with class\n// `ProseMirror-gapcursor`. You can either include\n// `style/gapcursor.css` from the package's directory or add your own\n// styles to make it visible.\nvar gapCursor = function() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n\n createSelectionBetween: function createSelectionBetween(_view, $anchor, $head) {\n if ($anchor.pos == $head.pos && GapCursor.valid($head)) { return new GapCursor($head) }\n },\n\n handleClick: handleClick,\n handleKeyDown: handleKeyDown,\n handleDOMEvents: {beforeinput: beforeinput}\n }\n })\n};\n\nvar handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\n\nfunction arrow(axis, dir) {\n var dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function(state, dispatch, view) {\n var sel = state.selection;\n var $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0) { return false }\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n var $found = GapCursor.findFrom($start, dir, mustMove);\n if (!$found) { return false }\n if (dispatch) { dispatch(state.tr.setSelection(new GapCursor($found))); }\n return true\n }\n}\n\nfunction handleClick(view, pos, event) {\n if (!view.editable) { return false }\n var $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos)) { return false }\n var ref = view.posAtCoords({left: event.clientX, top: event.clientY});\n var inside = ref.inside;\n if (inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(inside))) { return false }\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true\n}\n\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor)) { return false }\n\n var ref = view.state.selection;\n var $from = ref.$from;\n var insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert) { return false }\n\n var frag = Fragment.empty;\n for (var i = insert.length - 1; i >= 0; i--) { frag = Fragment.from(insert[i].createAndFill(null, frag)); }\n var tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false\n}\n\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor)) { return null }\n var node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, {key: \"gapcursor\"})])\n}\n\nexport { GapCursor, gapCursor };\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n\n// Used to schedule history compression\nvar max_empty_items = 500;\n\nvar Branch = function Branch(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n};\n\n// : (EditorState, bool) → ?{transform: Transform, selection: ?SelectionBookmark, remaining: Branch}\n// Pop the latest event off the branch's history and apply it\n// to a document transform.\nBranch.prototype.popEvent = function popEvent (state, preserveItems) {\n var this$1 = this;\n\n if (this.eventCount == 0) { return null }\n\n var end = this.items.length;\n for (;; end--) {\n var next = this.items.get(end - 1);\n if (next.selection) { --end; break }\n }\n\n var remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n var transform = state.tr;\n var selection, remaining;\n var addAfter = [], addBefore = [];\n\n this.items.forEach(function (item, i) {\n if (!item.step) {\n if (!remap) {\n remap = this$1.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return\n }\n\n if (remap) {\n addBefore.push(new Item(item.map));\n var step = item.step.map(remap.slice(mapFrom)), map;\n\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, null, null, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map) { remap.appendMap(map, mapFrom); }\n } else {\n transform.maybeStep(item.step);\n }\n\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this$1.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this$1.eventCount - 1);\n return false\n }\n }, this.items.length, 0);\n\n return {remaining: remaining, transform: transform, selection: selection}\n};\n\n// : (Transform, ?SelectionBookmark, Object) → Branch\n// Create a new branch with the given transform added.\nBranch.prototype.addTransform = function addTransform (transform, selection, histOptions, preserveItems) {\n var newItems = [], eventCount = this.eventCount;\n var oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n\n for (var i = 0; i < transform.steps.length; i++) {\n var step = transform.steps[i].invert(transform.docs[i]);\n var item = new Item(transform.mapping.maps[i], step, selection), merged = (void 0);\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i) { newItems.pop(); }\n else { oldItems = oldItems.slice(0, oldItems.length - 1); }\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = null;\n }\n if (!preserveItems) { lastItem = item; }\n }\n var overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount)\n};\n\nBranch.prototype.remapping = function remapping (from, to) {\n var maps = new Mapping;\n this.items.forEach(function (item, i) {\n var mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : null;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps\n};\n\nBranch.prototype.addMaps = function addMaps (array) {\n if (this.eventCount == 0) { return this }\n return new Branch(this.items.append(array.map(function (map) { return new Item(map); })), this.eventCount)\n};\n\n// : (Transform, number)\n// When the collab module receives remote changes, the history has\n// to know about those, so that it can adjust the steps that were\n// rebased on top of the remote changes, and include the position\n// maps for the remote changes in its array of items.\nBranch.prototype.rebased = function rebased (rebasedTransform, rebasedCount) {\n if (!this.eventCount) { return this }\n\n var rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n\n var mapping = rebasedTransform.mapping;\n var newUntil = rebasedTransform.steps.length;\n var eventCount = this.eventCount;\n this.items.forEach(function (item) { if (item.selection) { eventCount--; } }, start);\n\n var iRebased = rebasedCount;\n this.items.forEach(function (item) {\n var pos = mapping.getMirror(--iRebased);\n if (pos == null) { return }\n newUntil = Math.min(newUntil, pos);\n var map = mapping.maps[pos];\n if (item.step) {\n var step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n var selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection) { eventCount++; }\n rebasedItems.push(new Item(map, step, selection));\n } else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n\n var newMaps = [];\n for (var i = rebasedCount; i < newUntil; i++)\n { newMaps.push(new Item(mapping.maps[i])); }\n var items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n var branch = new Branch(items, eventCount);\n\n if (branch.emptyItemCount() > max_empty_items)\n { branch = branch.compress(this.items.length - rebasedItems.length); }\n return branch\n};\n\nBranch.prototype.emptyItemCount = function emptyItemCount () {\n var count = 0;\n this.items.forEach(function (item) { if (!item.step) { count++; } });\n return count\n};\n\n// Compressing a branch means rewriting it to push the air (map-only\n// items) out. During collaboration, these naturally accumulate\n// because each remote change adds one. The `upto` argument is used\n// to ensure that only the items below a given level are compressed,\n// because `rebased` relies on a clean, untouched set of items in\n// order to associate old items with rebased steps.\nBranch.prototype.compress = function compress (upto) {\n if ( upto === void 0 ) upto = this.items.length;\n\n var remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n var items = [], events = 0;\n this.items.forEach(function (item, i) {\n if (i >= upto) {\n items.push(item);\n if (item.selection) { events++; }\n } else if (item.step) {\n var step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map) { remap.appendMap(map, mapFrom); }\n if (step) {\n var selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection) { events++; }\n var newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n { items[last] = merged; }\n else\n { items.push(newItem); }\n }\n } else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events)\n};\n\nBranch.empty = new Branch(RopeSequence.empty, 0);\n\nfunction cutOffEvents(items, n) {\n var cutPoint;\n items.forEach(function (item, i) {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false\n }\n });\n return items.slice(cutPoint)\n}\n\nvar Item = function Item(map, step, selection, mirrorOffset) {\n // The (forward) step map for this item.\n this.map = map;\n // The inverted step\n this.step = step;\n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n this.selection = selection;\n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n this.mirrorOffset = mirrorOffset;\n};\n\nItem.prototype.merge = function merge (other) {\n if (this.step && other.step && !other.selection) {\n var step = other.step.merge(this.step);\n if (step) { return new Item(step.getMap().invert(), step, this.selection) }\n }\n};\n\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nvar HistoryState = function HistoryState(done, undone, prevRanges, prevTime) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n};\n\nvar DEPTH_OVERFLOW = 20;\n\n// : (HistoryState, EditorState, Transaction, Object)\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n var historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr) { return historyTr.historyState }\n\n if (tr.getMeta(closeHistoryKey)) { history = new HistoryState(history.done, history.undone, null, 0); }\n\n var appended = tr.getMeta(\"appendedTransaction\");\n\n if (tr.steps.length == 0) {\n return history\n } else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n { return new HistoryState(history.done.addTransform(tr, null, options, mustPreserveItems(state)),\n history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime) }\n else\n { return new HistoryState(history.done, history.undone.addTransform(tr, null, options, mustPreserveItems(state)),\n null, history.prevTime) }\n } else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n var newGroup = history.prevTime == 0 || !appended && (history.prevTime < (tr.time || 0) - options.newGroupDelay ||\n !isAdjacentTo(tr, history.prevRanges));\n var prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : null,\n options, mustPreserveItems(state)),\n Branch.empty, prevRanges, tr.time)\n } else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased),\n history.undone.rebased(tr, rebased),\n mapRanges(history.prevRanges, tr.mapping), history.prevTime)\n } else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps),\n history.undone.addMaps(tr.mapping.maps),\n mapRanges(history.prevRanges, tr.mapping), history.prevTime)\n }\n}\n\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges) { return false }\n if (!transform.docChanged) { return true }\n var adjacent = false;\n transform.mapping.maps[0].forEach(function (start, end) {\n for (var i = 0; i < prevRanges.length; i += 2)\n { if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n { adjacent = true; } }\n });\n return adjacent\n}\n\nfunction rangesFor(map) {\n var result = [];\n map.forEach(function (_from, _to, from, to) { return result.push(from, to); });\n return result\n}\n\nfunction mapRanges(ranges, mapping) {\n if (!ranges) { return null }\n var result = [];\n for (var i = 0; i < ranges.length; i += 2) {\n var from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to) { result.push(from, to); }\n }\n return result\n}\n\n// : (HistoryState, EditorState, (tr: Transaction), bool)\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n var preserveItems = mustPreserveItems(state), histOptions = historyKey.get(state).spec.config;\n var pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop) { return }\n\n var selection = pop.selection.resolve(pop.transform.doc);\n var added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(),\n histOptions, preserveItems);\n\n var newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0);\n dispatch(pop.transform.setSelection(selection).setMeta(historyKey, {redo: redo, historyState: newHist}).scrollIntoView());\n}\n\nvar cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n var plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (var i = 0; i < plugins.length; i++) { if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break\n } }\n }\n return cachedPreserveItems\n}\n\n// :: (Transaction) → Transaction\n// Set a flag on the given transaction that will prevent further steps\n// from being appended to an existing history event (so that they\n// require a separate undo command to undo).\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true)\n}\n\nvar historyKey = new PluginKey(\"history\");\nvar closeHistoryKey = new PluginKey(\"closeHistory\");\n\n// :: (?Object) → Plugin\n// Returns a plugin that enables the undo history for an editor. The\n// plugin will track undo and redo stacks, which can be used with the\n// [`undo`](#history.undo) and [`redo`](#history.redo) commands.\n//\n// You can set an `\"addToHistory\"` [metadata\n// property](#state.Transaction.setMeta) of `false` on a transaction\n// to prevent it from being rolled back by undo.\n//\n// config::-\n// Supports the following configuration options:\n//\n// depth:: ?number\n// The amount of history events that are collected before the\n// oldest events are discarded. Defaults to 100.\n//\n// newGroupDelay:: ?number\n// The delay between changes after which a new group should be\n// started. Defaults to 500 (milliseconds). Note that when changes\n// aren't adjacent, a new group is always started.\nfunction history(config) {\n config = {depth: config && config.depth || 100,\n newGroupDelay: config && config.newGroupDelay || 500};\n return new Plugin({\n key: historyKey,\n\n state: {\n init: function init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0)\n },\n apply: function apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config)\n }\n },\n\n config: config,\n\n props: {\n handleDOMEvents: {\n beforeinput: function beforeinput(view, e) {\n var handled = e.inputType == \"historyUndo\" ? undo(view.state, view.dispatch) :\n e.inputType == \"historyRedo\" ? redo(view.state, view.dispatch) : false;\n if (handled) { e.preventDefault(); }\n return handled\n }\n }\n }\n })\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// A command function that undoes the last change, if any.\nfunction undo(state, dispatch) {\n var hist = historyKey.getState(state);\n if (!hist || hist.done.eventCount == 0) { return false }\n if (dispatch) { histTransaction(hist, state, dispatch, false); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// A command function that redoes the last undone change, if any.\nfunction redo(state, dispatch) {\n var hist = historyKey.getState(state);\n if (!hist || hist.undone.eventCount == 0) { return false }\n if (dispatch) { histTransaction(hist, state, dispatch, true); }\n return true\n}\n\n// :: (EditorState) → number\n// The amount of undoable events available in a given state.\nfunction undoDepth(state) {\n var hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0\n}\n\n// :: (EditorState) → number\n// The amount of redoable events available in a given editor state.\nfunction redoDepth(state) {\n var hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0\n}\n\nexport { HistoryState, closeHistory, history, redo, redoDepth, undo, undoDepth };\n","import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n// ::- Input rules are regular expressions describing a piece of text\n// that, when typed, causes something to happen. This might be\n// changing two dashes into an emdash, wrapping a paragraph starting\n// with `\"> \"` into a blockquote, or something entirely different.\nvar InputRule = function InputRule(match, handler) {\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n};\n\nfunction stringHandler(string) {\n return function(state, match, start, end) {\n var insert = string;\n if (match[1]) {\n var offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n var cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end)\n }\n}\n\nvar MAX_MATCH = 500;\n\n// :: (config: {rules: [InputRule]}) → Plugin\n// Create an input rules plugin. When enabled, it will cause text\n// input that matches any of the given rules to trigger the rule's\n// action.\nfunction inputRules(ref) {\n var rules = ref.rules;\n\n var plugin = new Plugin({\n state: {\n init: function init() { return null },\n apply: function apply(tr, prev) {\n var stored = tr.getMeta(this);\n if (stored) { return stored }\n return tr.selectionSet || tr.docChanged ? null : prev\n }\n },\n\n props: {\n handleTextInput: function handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin)\n },\n handleDOMEvents: {\n compositionend: function (view) {\n setTimeout(function () {\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n if ($cursor) { run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin); }\n });\n }\n }\n },\n\n isInputRules: true\n });\n return plugin\n}\n\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing) { return false }\n var state = view.state, $from = state.doc.resolve(from);\n if ($from.parent.type.spec.code) { return false }\n var textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset,\n null, \"\\ufffc\") + text;\n for (var i = 0; i < rules.length; i++) {\n var match = rules[i].match.exec(textBefore);\n var tr = match && rules[i].handler(state, match, from - (match[0].length - text.length), to);\n if (!tr) { continue }\n view.dispatch(tr.setMeta(plugin, {transform: tr, from: from, to: to, text: text}));\n return true\n }\n return false\n}\n\n// :: (EditorState, ?(Transaction)) → bool\n// This is a command that will undo an input rule, if applying such a\n// rule was the last thing that the user did.\nfunction undoInputRule(state, dispatch) {\n var plugins = state.plugins;\n for (var i = 0; i < plugins.length; i++) {\n var plugin = plugins[i], undoable = (void 0);\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n var tr = state.tr, toUndo = undoable.transform;\n for (var j = toUndo.steps.length - 1; j >= 0; j--)\n { tr.step(toUndo.steps[j].invert(toUndo.docs[j])); }\n if (undoable.text) {\n var marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n } else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true\n }\n }\n return false\n}\n\n// :: InputRule Converts double dashes to an emdash.\nvar emDash = new InputRule(/--$/, \"—\");\n// :: InputRule Converts three dots to an ellipsis character.\nvar ellipsis = new InputRule(/\\.\\.\\.$/, \"…\");\n// :: InputRule “Smart” opening double quotes.\nvar openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"“\");\n// :: InputRule “Smart” closing double quotes.\nvar closeDoubleQuote = new InputRule(/\"$/, \"”\");\n// :: InputRule “Smart” opening single quotes.\nvar openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"‘\");\n// :: InputRule “Smart” closing single quotes.\nvar closeSingleQuote = new InputRule(/'$/, \"’\");\n\n// :: [InputRule] Smart-quote related input rules.\nvar smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n// :: (RegExp, NodeType, ?union, ?([string], Node) → bool) → InputRule\n// Build an input rule for automatically wrapping a textblock when a\n// given string is typed. The `regexp` argument is\n// directly passed through to the `InputRule` constructor. You'll\n// probably want the regexp to start with `^`, so that the pattern can\n// only occur at the start of a textblock.\n//\n// `nodeType` is the type of node to wrap in. If it needs attributes,\n// you can either pass them directly, or pass a function that will\n// compute them from the regular expression match.\n//\n// By default, if there's a node with the same type above the newly\n// wrapped node, the rule will try to [join](#transform.Transform.join) those\n// two nodes. You can pass a join predicate, which takes a regular\n// expression match and the node before the wrapped node, and can\n// return a boolean to indicate whether a join should happen.\nfunction wrappingInputRule(regexp, nodeType, getAttrs, joinPredicate) {\n return new InputRule(regexp, function (state, match, start, end) {\n var attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n var tr = state.tr.delete(start, end);\n var $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return null }\n tr.wrap(range, wrapping);\n var before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n { tr.join(start - 1); }\n return tr\n })\n}\n\n// :: (RegExp, NodeType, ?union) → InputRule\n// Build an input rule that changes the type of a textblock when the\n// matched text is typed into it. You'll usually want to start your\n// regexp with `^` to that it is only matched at the start of a\n// textblock. The optional `getAttrs` parameter can be used to compute\n// the new node's attributes, and works the same as in the\n// `wrappingInputRule` function.\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs) {\n return new InputRule(regexp, function (state, match, start, end) {\n var $start = state.doc.resolve(start);\n var attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType)) { return null }\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs)\n })\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\n// declare global: navigator\n\nvar mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\n\nfunction normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\") { result = \" \"; }\n var alt, ctrl, shift, meta;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { meta = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else if (/^mod$/i.test(mod)) { if (mac) { meta = true; } else { ctrl = true; } }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { result = \"Alt-\" + result; }\n if (ctrl) { result = \"Ctrl-\" + result; }\n if (meta) { result = \"Meta-\" + result; }\n if (shift) { result = \"Shift-\" + result; }\n return result\n}\n\nfunction normalize(map) {\n var copy = Object.create(null);\n for (var prop in map) { copy[normalizeKeyName(prop)] = map[prop]; }\n return copy\n}\n\nfunction modifiers(name, event, shift) {\n if (event.altKey) { name = \"Alt-\" + name; }\n if (event.ctrlKey) { name = \"Ctrl-\" + name; }\n if (event.metaKey) { name = \"Meta-\" + name; }\n if (shift !== false && event.shiftKey) { name = \"Shift-\" + name; }\n return name\n}\n\n// :: (Object) → Plugin\n// Create a keymap plugin for the given set of bindings.\n//\n// Bindings should map key names to [command](#commands)-style\n// functions, which will be called with `(EditorState, dispatch,\n// EditorView)` arguments, and should return true when they've handled\n// the key. Note that the view argument isn't part of the command\n// protocol, but can be used as an escape hatch if a binding needs to\n// directly interact with the UI.\n//\n// Key names may be strings like `\"Shift-Ctrl-Enter\"`—a key\n// identifier prefixed with zero or more modifiers. Key identifiers\n// are based on the strings that can appear in\n// [`KeyEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\n// Use lowercase letters to refer to letter keys (or uppercase letters\n// if you want shift to be held). You may use `\"Space\"` as an alias\n// for the `\" \"` name.\n//\n// Modifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n// `a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n// `Meta-`) are recognized. For characters that are created by holding\n// shift, the `Shift-` prefix is implied, and should not be added\n// explicitly.\n//\n// You can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\n// other platforms.\n//\n// You can add multiple keymap plugins to an editor. The order in\n// which they appear determines their precedence (the ones early in\n// the array get to dispatch first).\nfunction keymap(bindings) {\n return new Plugin({props: {handleKeyDown: keydownHandler(bindings)}})\n}\n\n// :: (Object) → (view: EditorView, event: dom.Event) → bool\n// Given a set of bindings (using the same format as\n// [`keymap`](#keymap.keymap)), return a [keydown\n// handler](#view.EditorProps.handleKeyDown) that handles them.\nfunction keydownHandler(bindings) {\n var map = normalize(bindings);\n return function(view, event) {\n var name = keyName(event), isChar = name.length == 1 && name != \" \", baseName;\n var direct = map[modifiers(name, event, !isChar)];\n if (direct && direct(view.state, view.dispatch, view)) { return true }\n if (isChar && (event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n var fromCode = map[modifiers(baseName, event, true)];\n if (fromCode && fromCode(view.state, view.dispatch, view)) { return true }\n } else if (isChar && event.shiftKey) {\n // Otherwise, if shift is active, also try the binding with the\n // Shift- prefix enabled. See #997\n var withShift = map[modifiers(name, event, true)];\n if (withShift && withShift(view.state, view.dispatch, view)) { return true }\n }\n return false\n }\n}\n\nexport { keydownHandler, keymap };\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (var i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n { return a.childCount == b.childCount ? null : pos }\n\n var childA = a.child(i), childB = b.child(i);\n if (childA == childB) { pos += childA.nodeSize; continue }\n\n if (!childA.sameMarkup(childB)) { return pos }\n\n if (childA.isText && childA.text != childB.text) {\n for (var j = 0; childA.text[j] == childB.text[j]; j++)\n { pos++; }\n return pos\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null) { return inner }\n }\n pos += childA.nodeSize;\n }\n}\n\nfunction findDiffEnd(a, b, posA, posB) {\n for (var iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n { return iA == iB ? null : {a: posA, b: posB} }\n\n var childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size; posB -= size;\n continue\n }\n\n if (!childA.sameMarkup(childB)) { return {a: posA, b: posB} }\n\n if (childA.isText && childA.text != childB.text) {\n var same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++; posA--; posB--;\n }\n return {a: posA, b: posB}\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner) { return inner }\n }\n posA -= size; posB -= size;\n }\n}\n\n// ::- A fragment represents a node's collection of child nodes.\n//\n// Like nodes, fragments are persistent data structures, and you\n// should not mutate them or their content. Rather, you create new\n// instances whenever needed. The API tries to make this easy.\nvar Fragment = function Fragment(content, size) {\n this.content = content;\n // :: number\n // The size of the fragment, which is the total of the size of its\n // content nodes.\n this.size = size || 0;\n if (size == null) { for (var i = 0; i < content.length; i++)\n { this.size += content[i].nodeSize; } }\n};\n\nvar prototypeAccessors = { firstChild: { configurable: true },lastChild: { configurable: true },childCount: { configurable: true } };\n\n// :: (number, number, (node: Node, start: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes between the given two\n// positions (relative to start of this fragment). Doesn't descend\n// into a node when the callback returns `false`.\nFragment.prototype.nodesBetween = function nodesBetween (from, to, f, nodeStart, parent) {\n if ( nodeStart === void 0 ) nodeStart = 0;\n\n for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent, i) !== false && child.content.size) {\n var start = pos + 1;\n child.nodesBetween(Math.max(0, from - start),\n Math.min(child.content.size, to - start),\n f, nodeStart + start);\n }\n pos = end;\n }\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. The callback\n// may return `false` to prevent traversal of a given node's children.\nFragment.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.size, f);\n};\n\n// :: (number, number, ?string, ?union) → string\n// Extract the text between `from` and `to`. See the same method on\n// [`Node`](#model.Node.textBetween).\nFragment.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n var text = \"\", separated = true;\n this.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n } else if (node.isLeaf && leafText) {\n text += typeof leafText === 'function' ? leafText(node): leafText;\n separated = !blockSeparator;\n } else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text\n};\n\n// :: (Fragment) → Fragment\n// Create a new fragment containing the combined content of this\n// fragment and the other.\nFragment.prototype.append = function append (other) {\n if (!other.size) { return this }\n if (!this.size) { return other }\n var last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++) { content.push(other.content[i]); }\n return new Fragment(content, this.size + other.size)\n};\n\n// :: (number, ?number) → Fragment\n// Cut out the sub-fragment between the two given positions.\nFragment.prototype.cut = function cut (from, to) {\n if (to == null) { to = this.size; }\n if (from == 0 && to == this.size) { return this }\n var result = [], size = 0;\n if (to > from) { for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n { child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos)); }\n else\n { child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1)); }\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n } }\n return new Fragment(result, size)\n};\n\nFragment.prototype.cutByIndex = function cutByIndex (from, to) {\n if (from == to) { return Fragment.empty }\n if (from == 0 && to == this.content.length) { return this }\n return new Fragment(this.content.slice(from, to))\n};\n\n// :: (number, Node) → Fragment\n// Create a new fragment in which the node at the given index is\n// replaced by the given node.\nFragment.prototype.replaceChild = function replaceChild (index, node) {\n var current = this.content[index];\n if (current == node) { return this }\n var copy = this.content.slice();\n var size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by prepending the given node to this\n// fragment.\nFragment.prototype.addToStart = function addToStart (node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by appending the given node to this\n// fragment.\nFragment.prototype.addToEnd = function addToEnd (node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize)\n};\n\n// :: (Fragment) → bool\n// Compare this fragment to another one.\nFragment.prototype.eq = function eq (other) {\n if (this.content.length != other.content.length) { return false }\n for (var i = 0; i < this.content.length; i++)\n { if (!this.content[i].eq(other.content[i])) { return false } }\n return true\n};\n\n// :: ?Node\n// The first child of the fragment, or `null` if it is empty.\nprototypeAccessors.firstChild.get = function () { return this.content.length ? this.content[0] : null };\n\n// :: ?Node\n// The last child of the fragment, or `null` if it is empty.\nprototypeAccessors.lastChild.get = function () { return this.content.length ? this.content[this.content.length - 1] : null };\n\n// :: number\n// The number of child nodes in this fragment.\nprototypeAccessors.childCount.get = function () { return this.content.length };\n\n// :: (number) → Node\n// Get the child node at the given index. Raise an error when the\n// index is out of range.\nFragment.prototype.child = function child (index) {\n var found = this.content[index];\n if (!found) { throw new RangeError(\"Index \" + index + \" out of range for \" + this) }\n return found\n};\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nFragment.prototype.maybeChild = function maybeChild (index) {\n return this.content[index]\n};\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nFragment.prototype.forEach = function forEach (f) {\n for (var i = 0, p = 0; i < this.content.length; i++) {\n var child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n};\n\n// :: (Fragment) → ?number\n// Find the first position at which this fragment and another\n// fragment differ, or `null` if they are the same.\nFragment.prototype.findDiffStart = function findDiffStart$1 (other, pos) {\n if ( pos === void 0 ) pos = 0;\n\n return findDiffStart(this, other, pos)\n};\n\n// :: (Fragment) → ?{a: number, b: number}\n// Find the first position, searching from the end, at which this\n// fragment and the given fragment differ, or `null` if they are the\n// same. Since this position will not be the same in both nodes, an\n// object with two separate positions is returned.\nFragment.prototype.findDiffEnd = function findDiffEnd$1 (other, pos, otherPos) {\n if ( pos === void 0 ) pos = this.size;\n if ( otherPos === void 0 ) otherPos = other.size;\n\n return findDiffEnd(this, other, pos, otherPos)\n};\n\n// : (number, ?number) → {index: number, offset: number}\n// Find the index and inner offset corresponding to a given relative\n// position in this fragment. The result object will be reused\n// (overwritten) the next time the function is called. (Not public.)\nFragment.prototype.findIndex = function findIndex (pos, round) {\n if ( round === void 0 ) round = -1;\n\n if (pos == 0) { return retIndex(0, pos) }\n if (pos == this.size) { return retIndex(this.content.length, pos) }\n if (pos > this.size || pos < 0) { throw new RangeError((\"Position \" + pos + \" outside of fragment (\" + (this) + \")\")) }\n for (var i = 0, curPos = 0;; i++) {\n var cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0) { return retIndex(i + 1, end) }\n return retIndex(i, curPos)\n }\n curPos = end;\n }\n};\n\n// :: () → string\n// Return a debugging string that describes this fragment.\nFragment.prototype.toString = function toString () { return \"<\" + this.toStringInner() + \">\" };\n\nFragment.prototype.toStringInner = function toStringInner () { return this.content.join(\", \") };\n\n// :: () → ?Object\n// Create a JSON-serializeable representation of this fragment.\nFragment.prototype.toJSON = function toJSON () {\n return this.content.length ? this.content.map(function (n) { return n.toJSON(); }) : null\n};\n\n// :: (Schema, ?Object) → Fragment\n// Deserialize a fragment from its JSON representation.\nFragment.fromJSON = function fromJSON (schema, value) {\n if (!value) { return Fragment.empty }\n if (!Array.isArray(value)) { throw new RangeError(\"Invalid input for Fragment.fromJSON\") }\n return new Fragment(value.map(schema.nodeFromJSON))\n};\n\n// :: ([Node]) → Fragment\n// Build a fragment from an array of nodes. Ensures that adjacent\n// text nodes with the same marks are joined together.\nFragment.fromArray = function fromArray (array) {\n if (!array.length) { return Fragment.empty }\n var joined, size = 0;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined) { joined = array.slice(0, i); }\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text);\n } else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size)\n};\n\n// :: (?union) → Fragment\n// Create a fragment from something that can be interpreted as a set\n// of nodes. For `null`, it returns the empty fragment. For a\n// fragment, the fragment itself. For a node or array of nodes, a\n// fragment containing those nodes.\nFragment.from = function from (nodes) {\n if (!nodes) { return Fragment.empty }\n if (nodes instanceof Fragment) { return nodes }\n if (Array.isArray(nodes)) { return this.fromArray(nodes) }\n if (nodes.attrs) { return new Fragment([nodes], nodes.nodeSize) }\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"))\n};\n\nObject.defineProperties( Fragment.prototype, prototypeAccessors );\n\nvar found = {index: 0, offset: 0};\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found\n}\n\n// :: Fragment\n// An empty fragment. Intended to be reused whenever a node doesn't\n// contain anything (rather than allocating a new empty fragment for\n// each leaf node).\nFragment.empty = new Fragment([], 0);\n\nfunction compareDeep(a, b) {\n if (a === b) { return true }\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\")) { return false }\n var array = Array.isArray(a);\n if (Array.isArray(b) != array) { return false }\n if (array) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!compareDeep(a[i], b[i])) { return false } }\n } else {\n for (var p in a) { if (!(p in b) || !compareDeep(a[p], b[p])) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n }\n return true\n}\n\n// ::- A mark is a piece of information that can be attached to a node,\n// such as it being emphasized, in code font, or a link. It has a type\n// and optionally a set of attributes that provide further information\n// (such as the target of the link). Marks are created through a\n// `Schema`, which controls which types exist and which\n// attributes they have.\nvar Mark = function Mark(type, attrs) {\n // :: MarkType\n // The type of this mark.\n this.type = type;\n // :: Object\n // The attributes associated with this mark.\n this.attrs = attrs;\n};\n\n// :: ([Mark]) → [Mark]\n// Given a set of marks, create a new set which contains this one as\n// well, in the right position. If this mark is already in the set,\n// the set itself is returned. If any marks that are set to be\n// [exclusive](#model.MarkSpec.excludes) with this mark are present,\n// those are replaced by this one.\nMark.prototype.addToSet = function addToSet (set) {\n var copy, placed = false;\n for (var i = 0; i < set.length; i++) {\n var other = set[i];\n if (this.eq(other)) { return set }\n if (this.type.excludes(other.type)) {\n if (!copy) { copy = set.slice(0, i); }\n } else if (other.type.excludes(this.type)) {\n return set\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy) { copy = set.slice(0, i); }\n copy.push(this);\n placed = true;\n }\n if (copy) { copy.push(other); }\n }\n }\n if (!copy) { copy = set.slice(); }\n if (!placed) { copy.push(this); }\n return copy\n};\n\n// :: ([Mark]) → [Mark]\n// Remove this mark from the given set, returning a new set. If this\n// mark is not in the set, the set itself is returned.\nMark.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i]))\n { return set.slice(0, i).concat(set.slice(i + 1)) } }\n return set\n};\n\n// :: ([Mark]) → bool\n// Test whether this mark is in the given set of marks.\nMark.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i])) { return true } }\n return false\n};\n\n// :: (Mark) → bool\n// Test whether this mark has the same type and attributes as\n// another mark.\nMark.prototype.eq = function eq (other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs))\n};\n\n// :: () → Object\n// Convert this mark to a JSON-serializeable representation.\nMark.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n return obj\n};\n\n// :: (Schema, Object) → Mark\nMark.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Mark.fromJSON\") }\n var type = schema.marks[json.type];\n if (!type) { throw new RangeError((\"There is no mark type \" + (json.type) + \" in this schema\")) }\n return type.create(json.attrs)\n};\n\n// :: ([Mark], [Mark]) → bool\n// Test whether two sets of marks are identical.\nMark.sameSet = function sameSet (a, b) {\n if (a == b) { return true }\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++)\n { if (!a[i].eq(b[i])) { return false } }\n return true\n};\n\n// :: (?union) → [Mark]\n// Create a properly sorted mark set from null, a single mark, or an\n// unsorted array of marks.\nMark.setFrom = function setFrom (marks) {\n if (!marks || marks.length == 0) { return Mark.none }\n if (marks instanceof Mark) { return [marks] }\n var copy = marks.slice();\n copy.sort(function (a, b) { return a.type.rank - b.type.rank; });\n return copy\n};\n\n// :: [Mark] The empty set of marks.\nMark.none = [];\n\n// ReplaceError:: class extends Error\n// Error type raised by [`Node.replace`](#model.Node.replace) when\n// given an invalid replacement.\n\nfunction ReplaceError(message) {\n var err = Error.call(this, message);\n err.__proto__ = ReplaceError.prototype;\n return err\n}\n\nReplaceError.prototype = Object.create(Error.prototype);\nReplaceError.prototype.constructor = ReplaceError;\nReplaceError.prototype.name = \"ReplaceError\";\n\n// ::- A slice represents a piece cut out of a larger document. It\n// stores not only a fragment, but also the depth up to which nodes on\n// both side are ‘open’ (cut through).\nvar Slice = function Slice(content, openStart, openEnd) {\n // :: Fragment The slice's content.\n this.content = content;\n // :: number The open depth at the start.\n this.openStart = openStart;\n // :: number The open depth at the end.\n this.openEnd = openEnd;\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\n// :: number\n// The size this slice would add when inserted into a document.\nprototypeAccessors$1.size.get = function () {\n return this.content.size - this.openStart - this.openEnd\n};\n\nSlice.prototype.insertAt = function insertAt (pos, fragment) {\n var content = insertInto(this.content, pos + this.openStart, fragment, null);\n return content && new Slice(content, this.openStart, this.openEnd)\n};\n\nSlice.prototype.removeBetween = function removeBetween (from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd)\n};\n\n// :: (Slice) → bool\n// Tests whether this slice is equal to another slice.\nSlice.prototype.eq = function eq (other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd\n};\n\nSlice.prototype.toString = function toString () {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\"\n};\n\n// :: () → ?Object\n// Convert a slice to a JSON-serializable representation.\nSlice.prototype.toJSON = function toJSON () {\n if (!this.content.size) { return null }\n var json = {content: this.content.toJSON()};\n if (this.openStart > 0) { json.openStart = this.openStart; }\n if (this.openEnd > 0) { json.openEnd = this.openEnd; }\n return json\n};\n\n// :: (Schema, ?Object) → Slice\n// Deserialize a slice from its JSON representation.\nSlice.fromJSON = function fromJSON (schema, json) {\n if (!json) { return Slice.empty }\n var openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n { throw new RangeError(\"Invalid input for Slice.fromJSON\") }\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd)\n};\n\n// :: (Fragment, ?bool) → Slice\n// Create a slice from a fragment by taking the maximum possible\n// open value on both side of the fragment.\nSlice.maxOpen = function maxOpen (fragment, openIsolating) {\n if ( openIsolating === void 0 ) openIsolating=true;\n\n var openStart = 0, openEnd = 0;\n for (var n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild) { openStart++; }\n for (var n$1 = fragment.lastChild; n$1 && !n$1.isLeaf && (openIsolating || !n$1.type.spec.isolating); n$1 = n$1.lastChild) { openEnd++; }\n return new Slice(fragment, openStart, openEnd)\n};\n\nObject.defineProperties( Slice.prototype, prototypeAccessors$1 );\n\nfunction removeRange(content, from, to) {\n var ref = content.findIndex(from);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n var ref$1 = content.findIndex(to);\n var indexTo = ref$1.index;\n var offsetTo = ref$1.offset;\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText) { throw new RangeError(\"Removing non-flat range\") }\n return content.cut(0, from).append(content.cut(to))\n }\n if (index != indexTo) { throw new RangeError(\"Removing non-flat range\") }\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)))\n}\n\nfunction insertInto(content, dist, insert, parent) {\n var ref = content.findIndex(dist);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert)) { return null }\n return content.cut(0, dist).append(insert).append(content.cut(dist))\n }\n var inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner))\n}\n\n// :: Slice\n// The empty slice.\nSlice.empty = new Slice(Fragment.empty, 0, 0);\n\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n { throw new ReplaceError(\"Inserted content deeper than insertion position\") }\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n { throw new ReplaceError(\"Inconsistent open depths\") }\n return replaceOuter($from, $to, slice, 0)\n}\n\nfunction replaceOuter($from, $to, slice, depth) {\n var index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n var inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner))\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth))\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n var parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)))\n } else {\n var ref = prepareSliceForReplace(slice, $from);\n var start = ref.start;\n var end = ref.end;\n return close(node, replaceThreeWay($from, start, end, $to, depth))\n }\n}\n\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n { throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name) }\n}\n\nfunction joinable($before, $after, depth) {\n var node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node\n}\n\nfunction addNode(child, target) {\n var last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n { target[last] = child.withText(target[last].text + child.text); }\n else\n { target.push(child); }\n}\n\nfunction addRange($start, $end, depth, target) {\n var node = ($end || $start).node(depth);\n var startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (var i = startIndex; i < endIndex; i++) { addNode(node.child(i), target); }\n if ($end && $end.depth == depth && $end.textOffset)\n { addNode($end.nodeBefore, target); }\n}\n\nfunction close(node, content) {\n if (!node.type.validContent(content))\n { throw new ReplaceError(\"Invalid content for node \" + node.type.name) }\n return node.copy(content)\n}\n\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n var openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n var openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n\n var content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n } else {\n if (openStart)\n { addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content); }\n addRange($start, $end, depth, content);\n if (openEnd)\n { addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content); }\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction replaceTwoWay($from, $to, depth) {\n var content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n var type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction prepareSliceForReplace(slice, $along) {\n var extra = $along.depth - slice.openStart, parent = $along.node(extra);\n var node = parent.copy(slice.content);\n for (var i = extra - 1; i >= 0; i--)\n { node = $along.node(i).copy(Fragment.from(node)); }\n return {start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)}\n}\n\n// ::- You can [_resolve_](#model.Node.resolve) a position to get more\n// information about it. Objects of this class represent such a\n// resolved position, providing various pieces of context information,\n// and some helper methods.\n//\n// Throughout this interface, methods that take an optional `depth`\n// parameter will interpret undefined as `this.depth` and negative\n// numbers as `this.depth + value`.\nvar ResolvedPos = function ResolvedPos(pos, path, parentOffset) {\n // :: number The position that was resolved.\n this.pos = pos;\n this.path = path;\n // :: number\n // The number of levels the parent node is from the root. If this\n // position points directly into the root node, it is 0. If it\n // points into a top-level paragraph, 1, and so on.\n this.depth = path.length / 3 - 1;\n // :: number The offset this position has into its parent node.\n this.parentOffset = parentOffset;\n};\n\nvar prototypeAccessors$2 = { parent: { configurable: true },doc: { configurable: true },textOffset: { configurable: true },nodeAfter: { configurable: true },nodeBefore: { configurable: true } };\n\nResolvedPos.prototype.resolveDepth = function resolveDepth (val) {\n if (val == null) { return this.depth }\n if (val < 0) { return this.depth + val }\n return val\n};\n\n// :: Node\n// The parent node that the position points into. Note that even if\n// a position points into a text node, that node is not considered\n// the parent—text nodes are ‘flat’ in this model, and have no content.\nprototypeAccessors$2.parent.get = function () { return this.node(this.depth) };\n\n// :: Node\n// The root node in which the position was resolved.\nprototypeAccessors$2.doc.get = function () { return this.node(0) };\n\n// :: (?number) → Node\n// The ancestor node at the given level. `p.node(p.depth)` is the\n// same as `p.parent`.\nResolvedPos.prototype.node = function node (depth) { return this.path[this.resolveDepth(depth) * 3] };\n\n// :: (?number) → number\n// The index into the ancestor at the given level. If this points at\n// the 3rd node in the 2nd paragraph on the top level, for example,\n// `p.index(0)` is 1 and `p.index(1)` is 2.\nResolvedPos.prototype.index = function index (depth) { return this.path[this.resolveDepth(depth) * 3 + 1] };\n\n// :: (?number) → number\n// The index pointing after this position into the ancestor at the\n// given level.\nResolvedPos.prototype.indexAfter = function indexAfter (depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1)\n};\n\n// :: (?number) → number\n// The (absolute) position at the start of the node at the given\n// level.\nResolvedPos.prototype.start = function start (depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n};\n\n// :: (?number) → number\n// The (absolute) position at the end of the node at the given\n// level.\nResolvedPos.prototype.end = function end (depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size\n};\n\n// :: (?number) → number\n// The (absolute) position directly before the wrapping node at the\n// given level, or, when `depth` is `this.depth + 1`, the original\n// position.\nResolvedPos.prototype.before = function before (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position before the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1]\n};\n\n// :: (?number) → number\n// The (absolute) position directly after the wrapping node at the\n// given level, or the original position when `depth` is `this.depth + 1`.\nResolvedPos.prototype.after = function after (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position after the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize\n};\n\n// :: number\n// When this position points into a text node, this returns the\n// distance between the position and the start of the text node.\n// Will be zero for positions that point between nodes.\nprototypeAccessors$2.textOffset.get = function () { return this.pos - this.path[this.path.length - 1] };\n\n// :: ?Node\n// Get the node directly after the position, if any. If the position\n// points into a text node, only the part of that node after the\n// position is returned.\nprototypeAccessors$2.nodeAfter.get = function () {\n var parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount) { return null }\n var dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child\n};\n\n// :: ?Node\n// Get the node directly before the position, if any. If the\n// position points into a text node, only the part of that node\n// before the position is returned.\nprototypeAccessors$2.nodeBefore.get = function () {\n var index = this.index(this.depth);\n var dOff = this.pos - this.path[this.path.length - 1];\n if (dOff) { return this.parent.child(index).cut(0, dOff) }\n return index == 0 ? null : this.parent.child(index - 1)\n};\n\n// :: (number, ?number) → number\n// Get the position at the given index in the parent node at the\n// given depth (which defaults to `this.depth`).\nResolvedPos.prototype.posAtIndex = function posAtIndex (index, depth) {\n depth = this.resolveDepth(depth);\n var node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (var i = 0; i < index; i++) { pos += node.child(i).nodeSize; }\n return pos\n};\n\n// :: () → [Mark]\n// Get the marks at this position, factoring in the surrounding\n// marks' [`inclusive`](#model.MarkSpec.inclusive) property. If the\n// position is at the start of a non-empty node, the marks of the\n// node after it (if any) are returned.\nResolvedPos.prototype.marks = function marks () {\n var parent = this.parent, index = this.index();\n\n // In an empty parent, return the empty array\n if (parent.content.size == 0) { return Mark.none }\n\n // When inside a text node, just return the text node's marks\n if (this.textOffset) { return parent.child(index).marks }\n\n var main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) { var tmp = main; main = other; other = tmp; }\n\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n var marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n\n return marks\n};\n\n// :: (ResolvedPos) → ?[Mark]\n// Get the marks after the current position, if any, except those\n// that are non-inclusive and not present at position `$end`. This\n// is mostly useful for getting the set of marks to preserve after a\n// deletion. Will return `null` if this position is at the end of\n// its parent node or its parent node isn't a textblock (in which\n// case no marks should be preserved).\nResolvedPos.prototype.marksAcross = function marksAcross ($end) {\n var after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline) { return null }\n\n var marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n return marks\n};\n\n// :: (number) → number\n// The depth up to which this position and the given (non-resolved)\n// position share the same parent nodes.\nResolvedPos.prototype.sharedDepth = function sharedDepth (pos) {\n for (var depth = this.depth; depth > 0; depth--)\n { if (this.start(depth) <= pos && this.end(depth) >= pos) { return depth } }\n return 0\n};\n\n// :: (?ResolvedPos, ?(Node) → bool) → ?NodeRange\n// Returns a range based on the place where this position and the\n// given position diverge around block content. If both point into\n// the same textblock, for example, a range around that textblock\n// will be returned. If they point into different blocks, the range\n// around those blocks in their shared ancestor is returned. You can\n// pass in an optional predicate that will be called with a parent\n// node to see if a range into that parent is acceptable.\nResolvedPos.prototype.blockRange = function blockRange (other, pred) {\n if ( other === void 0 ) other = this;\n\n if (other.pos < this.pos) { return other.blockRange(this) }\n for (var d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n { if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n { return new NodeRange(this, other, d) } }\n};\n\n// :: (ResolvedPos) → bool\n// Query whether the given position shares the same parent node.\nResolvedPos.prototype.sameParent = function sameParent (other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the greater of this and the given position.\nResolvedPos.prototype.max = function max (other) {\n return other.pos > this.pos ? other : this\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the smaller of this and the given position.\nResolvedPos.prototype.min = function min (other) {\n return other.pos < this.pos ? other : this\n};\n\nResolvedPos.prototype.toString = function toString () {\n var str = \"\";\n for (var i = 1; i <= this.depth; i++)\n { str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1); }\n return str + \":\" + this.parentOffset\n};\n\nResolvedPos.resolve = function resolve (doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size)) { throw new RangeError(\"Position \" + pos + \" out of range\") }\n var path = [];\n var start = 0, parentOffset = pos;\n for (var node = doc;;) {\n var ref = node.content.findIndex(parentOffset);\n var index = ref.index;\n var offset = ref.offset;\n var rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem) { break }\n node = node.child(index);\n if (node.isText) { break }\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset)\n};\n\nResolvedPos.resolveCached = function resolveCached (doc, pos) {\n for (var i = 0; i < resolveCache.length; i++) {\n var cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc) { return cached }\n }\n var result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result\n};\n\nObject.defineProperties( ResolvedPos.prototype, prototypeAccessors$2 );\n\nvar resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n\n// ::- Represents a flat range of content, i.e. one that starts and\n// ends in the same node.\nvar NodeRange = function NodeRange($from, $to, depth) {\n // :: ResolvedPos A resolved position along the start of the\n // content. May have a `depth` greater than this object's `depth`\n // property, since these are the positions that were used to\n // compute the range, not re-resolved positions directly at its\n // boundaries.\n this.$from = $from;\n // :: ResolvedPos A position along the end of the content. See\n // caveat for [`$from`](#model.NodeRange.$from).\n this.$to = $to;\n // :: number The depth of the node that this range points into.\n this.depth = depth;\n};\n\nvar prototypeAccessors$1$1 = { start: { configurable: true },end: { configurable: true },parent: { configurable: true },startIndex: { configurable: true },endIndex: { configurable: true } };\n\n// :: number The position at the start of the range.\nprototypeAccessors$1$1.start.get = function () { return this.$from.before(this.depth + 1) };\n// :: number The position at the end of the range.\nprototypeAccessors$1$1.end.get = function () { return this.$to.after(this.depth + 1) };\n\n// :: Node The parent node that the range points into.\nprototypeAccessors$1$1.parent.get = function () { return this.$from.node(this.depth) };\n// :: number The start index of the range in the parent node.\nprototypeAccessors$1$1.startIndex.get = function () { return this.$from.index(this.depth) };\n// :: number The end index of the range in the parent node.\nprototypeAccessors$1$1.endIndex.get = function () { return this.$to.indexAfter(this.depth) };\n\nObject.defineProperties( NodeRange.prototype, prototypeAccessors$1$1 );\n\nvar emptyAttrs = Object.create(null);\n\n// ::- This class represents a node in the tree that makes up a\n// ProseMirror document. So a document is an instance of `Node`, with\n// children that are also instances of `Node`.\n//\n// Nodes are persistent data structures. Instead of changing them, you\n// create new ones with the content you want. Old ones keep pointing\n// at the old document shape. This is made cheaper by sharing\n// structure between the old and new data as much as possible, which a\n// tree shape like this (without back pointers) makes easy.\n//\n// **Do not** directly mutate the properties of a `Node` object. See\n// [the guide](/docs/guide/#doc) for more information.\nvar Node = function Node(type, attrs, content, marks) {\n // :: NodeType\n // The type of node that this is.\n this.type = type;\n\n // :: Object\n // An object mapping attribute names to values. The kind of\n // attributes allowed and required are\n // [determined](#model.NodeSpec.attrs) by the node type.\n this.attrs = attrs;\n\n // :: Fragment\n // A container holding the node's children.\n this.content = content || Fragment.empty;\n\n // :: [Mark]\n // The marks (things like whether it is emphasized or part of a\n // link) applied to this node.\n this.marks = marks || Mark.none;\n};\n\nvar prototypeAccessors$3 = { nodeSize: { configurable: true },childCount: { configurable: true },textContent: { configurable: true },firstChild: { configurable: true },lastChild: { configurable: true },isBlock: { configurable: true },isTextblock: { configurable: true },inlineContent: { configurable: true },isInline: { configurable: true },isText: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// text:: ?string\n// For text nodes, this contains the node's text content.\n\n// :: number\n// The size of this node, as defined by the integer-based [indexing\n// scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n// amount of characters. For other leaf nodes, it is one. For\n// non-leaf nodes, it is the size of the content plus two (the start\n// and end token).\nprototypeAccessors$3.nodeSize.get = function () { return this.isLeaf ? 1 : 2 + this.content.size };\n\n// :: number\n// The number of children that the node has.\nprototypeAccessors$3.childCount.get = function () { return this.content.childCount };\n\n// :: (number) → Node\n// Get the child node at the given index. Raises an error when the\n// index is out of range.\nNode.prototype.child = function child (index) { return this.content.child(index) };\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nNode.prototype.maybeChild = function maybeChild (index) { return this.content.maybeChild(index) };\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nNode.prototype.forEach = function forEach (f) { this.content.forEach(f); };\n\n// :: (number, number, (node: Node, pos: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes recursively between\n// the given two positions that are relative to start of this node's\n// content. The callback is invoked with the node, its\n// parent-relative position, its parent node, and its child index.\n// When the callback returns false for a given node, that node's\n// children will not be recursed over. The last parameter can be\n// used to specify a starting position to count from.\nNode.prototype.nodesBetween = function nodesBetween (from, to, f, startPos) {\n if ( startPos === void 0 ) startPos = 0;\n\n this.content.nodesBetween(from, to, f, startPos, this);\n};\n\n// :: ((node: Node, pos: number, parent: Node, index: number) → ?bool)\n// Call the given callback for every descendant node. Doesn't\n// descend into a node when the callback returns `false`.\nNode.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.content.size, f);\n};\n\n// :: string\n// Concatenates all the text nodes found in this fragment and its\n// children.\nprototypeAccessors$3.textContent.get = function () { return this.textBetween(0, this.content.size, \"\") };\n\n// :: (number, number, ?string, ?union string>) → string\n// Get all text between positions `from` and `to`. When\n// `blockSeparator` is given, it will be inserted to separate text\n// from different block nodes. When `leafText` is given, it'll be\n// inserted for every non-text leaf node encountered.\nNode.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText)\n};\n\n// :: ?Node\n// Returns this node's first child, or `null` if there are no\n// children.\nprototypeAccessors$3.firstChild.get = function () { return this.content.firstChild };\n\n// :: ?Node\n// Returns this node's last child, or `null` if there are no\n// children.\nprototypeAccessors$3.lastChild.get = function () { return this.content.lastChild };\n\n// :: (Node) → bool\n// Test whether two nodes represent the same piece of document.\nNode.prototype.eq = function eq (other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content))\n};\n\n// :: (Node) → bool\n// Compare the markup (type, attributes, and marks) of this node to\n// those of another. Returns `true` if both have the same markup.\nNode.prototype.sameMarkup = function sameMarkup (other) {\n return this.hasMarkup(other.type, other.attrs, other.marks)\n};\n\n// :: (NodeType, ?Object, ?[Mark]) → bool\n// Check whether this node's markup correspond to the given type,\n// attributes, and marks.\nNode.prototype.hasMarkup = function hasMarkup (type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none)\n};\n\n// :: (?Fragment) → Node\n// Create a new node with the same markup as this node, containing\n// the given content (or empty, if no content is given).\nNode.prototype.copy = function copy (content) {\n if ( content === void 0 ) content = null;\n\n if (content == this.content) { return this }\n return new this.constructor(this.type, this.attrs, content, this.marks)\n};\n\n// :: ([Mark]) → Node\n// Create a copy of this node, with the given set of marks instead\n// of the node's own marks.\nNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new this.constructor(this.type, this.attrs, this.content, marks)\n};\n\n// :: (number, ?number) → Node\n// Create a copy of this node with only the content between the\n// given positions. If `to` is not given, it defaults to the end of\n// the node.\nNode.prototype.cut = function cut (from, to) {\n if (from == 0 && to == this.content.size) { return this }\n return this.copy(this.content.cut(from, to))\n};\n\n// :: (number, ?number) → Slice\n// Cut out the part of the document between the given positions, and\n// return it as a `Slice` object.\nNode.prototype.slice = function slice (from, to, includeParents) {\n if ( to === void 0 ) to = this.content.size;\n if ( includeParents === void 0 ) includeParents = false;\n\n if (from == to) { return Slice.empty }\n\n var $from = this.resolve(from), $to = this.resolve(to);\n var depth = includeParents ? 0 : $from.sharedDepth(to);\n var start = $from.start(depth), node = $from.node(depth);\n var content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth)\n};\n\n// :: (number, number, Slice) → Node\n// Replace the part of the document between the given positions with\n// the given slice. The slice must 'fit', meaning its open sides\n// must be able to connect to the surrounding content, and its\n// content nodes must be valid children for the node they are placed\n// into. If any of this is violated, an error of type\n// [`ReplaceError`](#model.ReplaceError) is thrown.\nNode.prototype.replace = function replace$1 (from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice)\n};\n\n// :: (number) → ?Node\n// Find the node directly after the given position.\nNode.prototype.nodeAt = function nodeAt (pos) {\n for (var node = this;;) {\n var ref = node.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n node = node.maybeChild(index);\n if (!node) { return null }\n if (offset == pos || node.isText) { return node }\n pos -= offset + 1;\n }\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node after the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childAfter = function childAfter (pos) {\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n return {node: this.content.maybeChild(index), index: index, offset: offset}\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node before the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childBefore = function childBefore (pos) {\n if (pos == 0) { return {node: null, index: 0, offset: 0} }\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n if (offset < pos) { return {node: this.content.child(index), index: index, offset: offset} }\n var node = this.content.child(index - 1);\n return {node: node, index: index - 1, offset: offset - node.nodeSize}\n};\n\n// :: (number) → ResolvedPos\n// Resolve the given position in the document, returning an\n// [object](#model.ResolvedPos) with information about its context.\nNode.prototype.resolve = function resolve (pos) { return ResolvedPos.resolveCached(this, pos) };\n\nNode.prototype.resolveNoCache = function resolveNoCache (pos) { return ResolvedPos.resolve(this, pos) };\n\n// :: (number, number, union) → bool\n// Test whether a given mark or mark type occurs in this document\n// between the two given positions.\nNode.prototype.rangeHasMark = function rangeHasMark (from, to, type) {\n var found = false;\n if (to > from) { this.nodesBetween(from, to, function (node) {\n if (type.isInSet(node.marks)) { found = true; }\n return !found\n }); }\n return found\n};\n\n// :: bool\n// True when this is a block (non-inline node)\nprototypeAccessors$3.isBlock.get = function () { return this.type.isBlock };\n\n// :: bool\n// True when this is a textblock node, a block node with inline\n// content.\nprototypeAccessors$3.isTextblock.get = function () { return this.type.isTextblock };\n\n// :: bool\n// True when this node allows inline content.\nprototypeAccessors$3.inlineContent.get = function () { return this.type.inlineContent };\n\n// :: bool\n// True when this is an inline node (a text node or a node that can\n// appear among text).\nprototypeAccessors$3.isInline.get = function () { return this.type.isInline };\n\n// :: bool\n// True when this is a text node.\nprototypeAccessors$3.isText.get = function () { return this.type.isText };\n\n// :: bool\n// True when this is a leaf node.\nprototypeAccessors$3.isLeaf.get = function () { return this.type.isLeaf };\n\n// :: bool\n// True when this is an atom, i.e. when it does not have directly\n// editable content. This is usually the same as `isLeaf`, but can\n// be configured with the [`atom` property](#model.NodeSpec.atom) on\n// a node's spec (typically used when the node is displayed as an\n// uneditable [node view](#view.NodeView)).\nprototypeAccessors$3.isAtom.get = function () { return this.type.isAtom };\n\n// :: () → string\n// Return a string representation of this node for debugging\n// purposes.\nNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n var name = this.type.name;\n if (this.content.size)\n { name += \"(\" + this.content.toStringInner() + \")\"; }\n return wrapMarks(this.marks, name)\n};\n\n// :: (number) → ContentMatch\n// Get the content match in this node at the given index.\nNode.prototype.contentMatchAt = function contentMatchAt (index) {\n var match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match) { throw new Error(\"Called contentMatchAt on a node with invalid content\") }\n return match\n};\n\n// :: (number, number, ?Fragment, ?number, ?number) → bool\n// Test whether replacing the range between `from` and `to` (by\n// child index) with the given replacement fragment (which defaults\n// to the empty fragment) would leave the node's content valid. You\n// can optionally pass `start` and `end` indices into the\n// replacement fragment.\nNode.prototype.canReplace = function canReplace (from, to, replacement, start, end) {\n if ( replacement === void 0 ) replacement = Fragment.empty;\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = replacement.childCount;\n\n var one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n var two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd) { return false }\n for (var i = start; i < end; i++) { if (!this.type.allowsMarks(replacement.child(i).marks)) { return false } }\n return true\n};\n\n// :: (number, number, NodeType, ?[Mark]) → bool\n// Test whether replacing the range `from` to `to` (by index) with a\n// node of the given type would leave the node's content valid.\nNode.prototype.canReplaceWith = function canReplaceWith (from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks)) { return false }\n var start = this.contentMatchAt(from).matchType(type);\n var end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false\n};\n\n// :: (Node) → bool\n// Test whether the given node's content could be appended to this\n// node. If that node is empty, this will only return true if there\n// is at least one node type that can appear in both nodes (to avoid\n// merging completely incompatible nodes).\nNode.prototype.canAppend = function canAppend (other) {\n if (other.content.size) { return this.canReplace(this.childCount, this.childCount, other.content) }\n else { return this.type.compatibleContent(other.type) }\n};\n\n// :: ()\n// Check whether this node and its descendants conform to the\n// schema, and raise error when they do not.\nNode.prototype.check = function check () {\n if (!this.type.validContent(this.content))\n { throw new RangeError((\"Invalid content for node \" + (this.type.name) + \": \" + (this.content.toString().slice(0, 50)))) }\n var copy = Mark.none;\n for (var i = 0; i < this.marks.length; i++) { copy = this.marks[i].addToSet(copy); }\n if (!Mark.sameSet(copy, this.marks))\n { throw new RangeError((\"Invalid collection of marks for node \" + (this.type.name) + \": \" + (this.marks.map(function (m) { return m.type.name; })))) }\n this.content.forEach(function (node) { return node.check(); });\n};\n\n// :: () → Object\n// Return a JSON-serializeable representation of this node.\nNode.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n if (this.content.size)\n { obj.content = this.content.toJSON(); }\n if (this.marks.length)\n { obj.marks = this.marks.map(function (n) { return n.toJSON(); }); }\n return obj\n};\n\n// :: (Schema, Object) → Node\n// Deserialize a node from its JSON representation.\nNode.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Node.fromJSON\") }\n var marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks)) { throw new RangeError(\"Invalid mark data for Node.fromJSON\") }\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\") { throw new RangeError(\"Invalid text node in JSON\") }\n return schema.text(json.text, marks)\n }\n var content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks)\n};\n\nObject.defineProperties( Node.prototype, prototypeAccessors$3 );\n\nvar TextNode = /*@__PURE__*/(function (Node) {\n function TextNode(type, attrs, content, marks) {\n Node.call(this, type, attrs, null, marks);\n\n if (!content) { throw new RangeError(\"Empty text nodes are not allowed\") }\n\n this.text = content;\n }\n\n if ( Node ) TextNode.__proto__ = Node;\n TextNode.prototype = Object.create( Node && Node.prototype );\n TextNode.prototype.constructor = TextNode;\n\n var prototypeAccessors$1 = { textContent: { configurable: true },nodeSize: { configurable: true } };\n\n TextNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n return wrapMarks(this.marks, JSON.stringify(this.text))\n };\n\n prototypeAccessors$1.textContent.get = function () { return this.text };\n\n TextNode.prototype.textBetween = function textBetween (from, to) { return this.text.slice(from, to) };\n\n prototypeAccessors$1.nodeSize.get = function () { return this.text.length };\n\n TextNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks)\n };\n\n TextNode.prototype.withText = function withText (text) {\n if (text == this.text) { return this }\n return new TextNode(this.type, this.attrs, text, this.marks)\n };\n\n TextNode.prototype.cut = function cut (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.text.length;\n\n if (from == 0 && to == this.text.length) { return this }\n return this.withText(this.text.slice(from, to))\n };\n\n TextNode.prototype.eq = function eq (other) {\n return this.sameMarkup(other) && this.text == other.text\n };\n\n TextNode.prototype.toJSON = function toJSON () {\n var base = Node.prototype.toJSON.call(this);\n base.text = this.text;\n return base\n };\n\n Object.defineProperties( TextNode.prototype, prototypeAccessors$1 );\n\n return TextNode;\n}(Node));\n\nfunction wrapMarks(marks, str) {\n for (var i = marks.length - 1; i >= 0; i--)\n { str = marks[i].type.name + \"(\" + str + \")\"; }\n return str\n}\n\n// ::- Instances of this class represent a match state of a node\n// type's [content expression](#model.NodeSpec.content), and can be\n// used to find out whether further content matches here, and whether\n// a given position is a valid end of the node.\nvar ContentMatch = function ContentMatch(validEnd) {\n // :: bool\n // True when this match state represents a valid end of the node.\n this.validEnd = validEnd;\n this.next = [];\n this.wrapCache = [];\n};\n\nvar prototypeAccessors$4 = { inlineContent: { configurable: true },defaultType: { configurable: true },edgeCount: { configurable: true } };\n\nContentMatch.parse = function parse (string, nodeTypes) {\n var stream = new TokenStream(string, nodeTypes);\n if (stream.next == null) { return ContentMatch.empty }\n var expr = parseExpr(stream);\n if (stream.next) { stream.err(\"Unexpected trailing text\"); }\n var match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match\n};\n\n// :: (NodeType) → ?ContentMatch\n// Match a node type, returning a match after that node if\n// successful.\nContentMatch.prototype.matchType = function matchType (type) {\n for (var i = 0; i < this.next.length; i += 2)\n { if (this.next[i] == type) { return this.next[i + 1] } }\n return null\n};\n\n// :: (Fragment, ?number, ?number) → ?ContentMatch\n// Try to match a fragment. Returns the resulting match when\n// successful.\nContentMatch.prototype.matchFragment = function matchFragment (frag, start, end) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = frag.childCount;\n\n var cur = this;\n for (var i = start; cur && i < end; i++)\n { cur = cur.matchType(frag.child(i).type); }\n return cur\n};\n\nprototypeAccessors$4.inlineContent.get = function () {\n var first = this.next[0];\n return first ? first.isInline : false\n};\n\n// :: ?NodeType\n// Get the first matching node type at this match position that can\n// be generated.\nprototypeAccessors$4.defaultType.get = function () {\n for (var i = 0; i < this.next.length; i += 2) {\n var type = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs())) { return type }\n }\n};\n\nContentMatch.prototype.compatible = function compatible (other) {\n for (var i = 0; i < this.next.length; i += 2)\n { for (var j = 0; j < other.next.length; j += 2)\n { if (this.next[i] == other.next[j]) { return true } } }\n return false\n};\n\n// :: (Fragment, bool, ?number) → ?Fragment\n// Try to match the given fragment, and if that fails, see if it can\n// be made to match by inserting nodes in front of it. When\n// successful, return a fragment of inserted nodes (which may be\n// empty if nothing had to be inserted). When `toEnd` is true, only\n// return a fragment if the resulting match goes to the end of the\n// content expression.\nContentMatch.prototype.fillBefore = function fillBefore (after, toEnd, startIndex) {\n if ( toEnd === void 0 ) toEnd = false;\n if ( startIndex === void 0 ) startIndex = 0;\n\n var seen = [this];\n function search(match, types) {\n var finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n { return Fragment.from(types.map(function (tp) { return tp.createAndFill(); })) }\n\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i], next = match.next[i + 1];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n var found = search(next, types.concat(type));\n if (found) { return found }\n }\n }\n }\n\n return search(this, [])\n};\n\n// :: (NodeType) → ?[NodeType]\n// Find a set of wrapping node types that would allow a node of the\n// given type to appear at this position. The result may be empty\n// (when it fits directly) and will be null when no such wrapping\n// exists.\nContentMatch.prototype.findWrapping = function findWrapping (target) {\n for (var i = 0; i < this.wrapCache.length; i += 2)\n { if (this.wrapCache[i] == target) { return this.wrapCache[i + 1] } }\n var computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed\n};\n\nContentMatch.prototype.computeWrapping = function computeWrapping (target) {\n var seen = Object.create(null), active = [{match: this, type: null, via: null}];\n while (active.length) {\n var current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n var result = [];\n for (var obj = current; obj.type; obj = obj.via)\n { result.push(obj.type); }\n return result.reverse()\n }\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || match.next[i + 1].validEnd)) {\n active.push({match: type.contentMatch, type: type, via: current});\n seen[type.name] = true;\n }\n }\n }\n};\n\n// :: number\n// The number of outgoing edges this node has in the finite\n// automaton that describes the content expression.\nprototypeAccessors$4.edgeCount.get = function () {\n return this.next.length >> 1\n};\n\n// :: (number) → {type: NodeType, next: ContentMatch}\n// Get the _n_​th outgoing edge from this node in the finite\n// automaton that describes the content expression.\nContentMatch.prototype.edge = function edge (n) {\n var i = n << 1;\n if (i >= this.next.length) { throw new RangeError((\"There's no \" + n + \"th edge in this content match\")) }\n return {type: this.next[i], next: this.next[i + 1]}\n};\n\nContentMatch.prototype.toString = function toString () {\n var seen = [];\n function scan(m) {\n seen.push(m);\n for (var i = 1; i < m.next.length; i += 2)\n { if (seen.indexOf(m.next[i]) == -1) { scan(m.next[i]); } }\n }\n scan(this);\n return seen.map(function (m, i) {\n var out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (var i$1 = 0; i$1 < m.next.length; i$1 += 2)\n { out += (i$1 ? \", \" : \"\") + m.next[i$1].name + \"->\" + seen.indexOf(m.next[i$1 + 1]); }\n return out\n }).join(\"\\n\")\n};\n\nObject.defineProperties( ContentMatch.prototype, prototypeAccessors$4 );\n\nContentMatch.empty = new ContentMatch(true);\n\nvar TokenStream = function TokenStream(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\") { this.tokens.pop(); }\n if (this.tokens[0] == \"\") { this.tokens.shift(); }\n};\n\nvar prototypeAccessors$1$2 = { next: { configurable: true } };\n\nprototypeAccessors$1$2.next.get = function () { return this.tokens[this.pos] };\n\nTokenStream.prototype.eat = function eat (tok) { return this.next == tok && (this.pos++ || true) };\n\nTokenStream.prototype.err = function err (str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\") };\n\nObject.defineProperties( TokenStream.prototype, prototypeAccessors$1$2 );\n\nfunction parseExpr(stream) {\n var exprs = [];\n do { exprs.push(parseExprSeq(stream)); }\n while (stream.eat(\"|\"))\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n}\n\nfunction parseExprSeq(stream) {\n var exprs = [];\n do { exprs.push(parseExprSubscript(stream)); }\n while (stream.next && stream.next != \")\" && stream.next != \"|\")\n return exprs.length == 1 ? exprs[0] : {type: \"seq\", exprs: exprs}\n}\n\nfunction parseExprSubscript(stream) {\n var expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n { expr = {type: \"plus\", expr: expr}; }\n else if (stream.eat(\"*\"))\n { expr = {type: \"star\", expr: expr}; }\n else if (stream.eat(\"?\"))\n { expr = {type: \"opt\", expr: expr}; }\n else if (stream.eat(\"{\"))\n { expr = parseExprRange(stream, expr); }\n else { break }\n }\n return expr\n}\n\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next)) { stream.err(\"Expected number, got '\" + stream.next + \"'\"); }\n var result = Number(stream.next);\n stream.pos++;\n return result\n}\n\nfunction parseExprRange(stream, expr) {\n var min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\") { max = parseNum(stream); }\n else { max = -1; }\n }\n if (!stream.eat(\"}\")) { stream.err(\"Unclosed braced range\"); }\n return {type: \"range\", min: min, max: max, expr: expr}\n}\n\nfunction resolveName(stream, name) {\n var types = stream.nodeTypes, type = types[name];\n if (type) { return [type] }\n var result = [];\n for (var typeName in types) {\n var type$1 = types[typeName];\n if (type$1.groups.indexOf(name) > -1) { result.push(type$1); }\n }\n if (result.length == 0) { stream.err(\"No node type or group '\" + name + \"' found\"); }\n return result\n}\n\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n var expr = parseExpr(stream);\n if (!stream.eat(\")\")) { stream.err(\"Missing closing paren\"); }\n return expr\n } else if (!/\\W/.test(stream.next)) {\n var exprs = resolveName(stream, stream.next).map(function (type) {\n if (stream.inline == null) { stream.inline = type.isInline; }\n else if (stream.inline != type.isInline) { stream.err(\"Mixing inline and block content\"); }\n return {type: \"name\", value: type}\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n\n// The code below helps compile a regular-expression-like language\n// into a deterministic finite automaton. For a good introduction to\n// these concepts, see https://swtch.com/~rsc/regexp/regexp1.html\n\n// : (Object) → [[{term: ?any, to: number}]]\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n var nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa\n\n function node() { return nfa.push([]) - 1 }\n function edge(from, to, term) {\n var edge = {term: term, to: to};\n nfa[from].push(edge);\n return edge\n }\n function connect(edges, to) { edges.forEach(function (edge) { return edge.to = to; }); }\n\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce(function (out, expr) { return out.concat(compile(expr, from)); }, [])\n } else if (expr.type == \"seq\") {\n for (var i = 0;; i++) {\n var next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1) { return next }\n connect(next, from = node());\n }\n } else if (expr.type == \"star\") {\n var loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)]\n } else if (expr.type == \"plus\") {\n var loop$1 = node();\n connect(compile(expr.expr, from), loop$1);\n connect(compile(expr.expr, loop$1), loop$1);\n return [edge(loop$1)]\n } else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from))\n } else if (expr.type == \"range\") {\n var cur = from;\n for (var i$1 = 0; i$1 < expr.min; i$1++) {\n var next$1 = node();\n connect(compile(expr.expr, cur), next$1);\n cur = next$1;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n } else {\n for (var i$2 = expr.min; i$2 < expr.max; i$2++) {\n var next$2 = node();\n edge(cur, next$2);\n connect(compile(expr.expr, cur), next$2);\n cur = next$2;\n }\n }\n return [edge(cur)]\n } else if (expr.type == \"name\") {\n return [edge(from, null, expr.value)]\n }\n }\n}\n\nfunction cmp(a, b) { return b - a }\n\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n var result = [];\n scan(node);\n return result.sort(cmp)\n\n function scan(node) {\n var edges = nfa[node];\n if (edges.length == 1 && !edges[0].term) { return scan(edges[0].to) }\n result.push(node);\n for (var i = 0; i < edges.length; i++) {\n var ref = edges[i];\n var term = ref.term;\n var to = ref.to;\n if (!term && result.indexOf(to) == -1) { scan(to); }\n }\n }\n}\n\n// : ([[{term: ?any, to: number}]]) → ContentMatch\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n var labeled = Object.create(null);\n return explore(nullFrom(nfa, 0))\n\n function explore(states) {\n var out = [];\n states.forEach(function (node) {\n nfa[node].forEach(function (ref) {\n var term = ref.term;\n var to = ref.to;\n\n if (!term) { return }\n var known = out.indexOf(term), set = known > -1 && out[known + 1];\n nullFrom(nfa, to).forEach(function (node) {\n if (!set) { out.push(term, set = []); }\n if (set.indexOf(node) == -1) { set.push(node); }\n });\n });\n });\n var state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (var i = 0; i < out.length; i += 2) {\n var states$1 = out[i + 1].sort(cmp);\n state.next.push(out[i], labeled[states$1.join(\",\")] || explore(states$1));\n }\n return state\n }\n}\n\nfunction checkForDeadEnds(match, stream) {\n for (var i = 0, work = [match]; i < work.length; i++) {\n var state = work[i], dead = !state.validEnd, nodes = [];\n for (var j = 0; j < state.next.length; j += 2) {\n var node = state.next[j], next = state.next[j + 1];\n nodes.push(node.name);\n if (dead && !(node.isText || node.hasRequiredAttrs())) { dead = false; }\n if (work.indexOf(next) == -1) { work.push(next); }\n }\n if (dead) { stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\"); }\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n var defaults = Object.create(null);\n for (var attrName in attrs) {\n var attr = attrs[attrName];\n if (!attr.hasDefault) { return null }\n defaults[attrName] = attr.default;\n }\n return defaults\n}\n\nfunction computeAttrs(attrs, value) {\n var built = Object.create(null);\n for (var name in attrs) {\n var given = value && value[name];\n if (given === undefined) {\n var attr = attrs[name];\n if (attr.hasDefault) { given = attr.default; }\n else { throw new RangeError(\"No value supplied for attribute \" + name) }\n }\n built[name] = given;\n }\n return built\n}\n\nfunction initAttrs(attrs) {\n var result = Object.create(null);\n if (attrs) { for (var name in attrs) { result[name] = new Attribute(attrs[name]); } }\n return result\n}\n\n// ::- Node types are objects allocated once per `Schema` and used to\n// [tag](#model.Node.type) `Node` instances. They contain information\n// about the node type, such as its name and what kind of node it\n// represents.\nvar NodeType = function NodeType(name, schema, spec) {\n // :: string\n // The name the node type has in this schema.\n this.name = name;\n\n // :: Schema\n // A link back to the `Schema` the node type belongs to.\n this.schema = schema;\n\n // :: NodeSpec\n // The spec that this type is based on\n this.spec = spec;\n\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n\n this.defaultAttrs = defaultAttrs(this.attrs);\n\n // :: ContentMatch\n // The starting match of the node type's content expression.\n this.contentMatch = null;\n\n // : ?[MarkType]\n // The set of marks allowed in this node. `null` means all marks\n // are allowed.\n this.markSet = null;\n\n // :: bool\n // True if this node type has inline content.\n this.inlineContent = null;\n\n // :: bool\n // True if this is a block type\n this.isBlock = !(spec.inline || name == \"text\");\n\n // :: bool\n // True if this is the text node type.\n this.isText = name == \"text\";\n};\n\nvar prototypeAccessors$5 = { isInline: { configurable: true },isTextblock: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true },whitespace: { configurable: true } };\n\n// :: bool\n// True if this is an inline type.\nprototypeAccessors$5.isInline.get = function () { return !this.isBlock };\n\n// :: bool\n// True if this is a textblock type, a block that contains inline\n// content.\nprototypeAccessors$5.isTextblock.get = function () { return this.isBlock && this.inlineContent };\n\n// :: bool\n// True for node types that allow no content.\nprototypeAccessors$5.isLeaf.get = function () { return this.contentMatch == ContentMatch.empty };\n\n// :: bool\n// True when this node is an atom, i.e. when it does not have\n// directly editable content.\nprototypeAccessors$5.isAtom.get = function () { return this.isLeaf || this.spec.atom };\n\n// :: union<\"pre\", \"normal\">\n// The node type's [whitespace](#view.NodeSpec.whitespace) option.\nprototypeAccessors$5.whitespace.get = function () { return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\") };\n\n// :: () → bool\n// Tells you whether this node type has any required attributes.\nNodeType.prototype.hasRequiredAttrs = function hasRequiredAttrs () {\n for (var n in this.attrs) { if (this.attrs[n].isRequired) { return true } }\n return false\n};\n\nNodeType.prototype.compatibleContent = function compatibleContent (other) {\n return this == other || this.contentMatch.compatible(other.contentMatch)\n};\n\nNodeType.prototype.computeAttrs = function computeAttrs$1 (attrs) {\n if (!attrs && this.defaultAttrs) { return this.defaultAttrs }\n else { return computeAttrs(this.attrs, attrs) }\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Create a `Node` of this type. The given attributes are\n// checked and defaulted (you can pass `null` to use the type's\n// defaults entirely, if no required attributes exist). `content`\n// may be a `Fragment`, a node, an array of nodes, or\n// `null`. Similarly `marks` may be `null` to default to the empty\n// set of marks.\nNodeType.prototype.create = function create (attrs, content, marks) {\n if (this.isText) { throw new Error(\"NodeType.create can't construct text nodes\") }\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Like [`create`](#model.NodeType.create), but check the given content\n// against the node type's content restrictions, and throw an error\n// if it doesn't match.\nNodeType.prototype.createChecked = function createChecked (attrs, content, marks) {\n content = Fragment.from(content);\n if (!this.validContent(content))\n { throw new RangeError(\"Invalid content for node \" + this.name) }\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → ?Node\n// Like [`create`](#model.NodeType.create), but see if it is necessary to\n// add nodes to the start or end of the given fragment to make it\n// fit the node. If no fitting wrapping can be found, return null.\n// Note that, due to the fact that required nodes can always be\n// created, this will always succeed if you pass null or\n// `Fragment.empty` as content.\nNodeType.prototype.createAndFill = function createAndFill (attrs, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n var before = this.contentMatch.fillBefore(content);\n if (!before) { return null }\n content = before.append(content);\n }\n var after = this.contentMatch.matchFragment(content).fillBefore(Fragment.empty, true);\n if (!after) { return null }\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks))\n};\n\n// :: (Fragment) → bool\n// Returns true if the given fragment is valid content for this node\n// type with the given attributes.\nNodeType.prototype.validContent = function validContent (content) {\n var result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd) { return false }\n for (var i = 0; i < content.childCount; i++)\n { if (!this.allowsMarks(content.child(i).marks)) { return false } }\n return true\n};\n\n// :: (MarkType) → bool\n// Check whether the given mark type is allowed in this node.\nNodeType.prototype.allowsMarkType = function allowsMarkType (markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1\n};\n\n// :: ([Mark]) → bool\n// Test whether the given set of marks are allowed in this node.\nNodeType.prototype.allowsMarks = function allowsMarks (marks) {\n if (this.markSet == null) { return true }\n for (var i = 0; i < marks.length; i++) { if (!this.allowsMarkType(marks[i].type)) { return false } }\n return true\n};\n\n// :: ([Mark]) → [Mark]\n// Removes the marks that are not allowed in this node from the given set.\nNodeType.prototype.allowedMarks = function allowedMarks (marks) {\n if (this.markSet == null) { return marks }\n var copy;\n for (var i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy) { copy = marks.slice(0, i); }\n } else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.empty\n};\n\nNodeType.compile = function compile (nodes, schema) {\n var result = Object.create(null);\n nodes.forEach(function (name, spec) { return result[name] = new NodeType(name, schema, spec); });\n\n var topType = schema.spec.topNode || \"doc\";\n if (!result[topType]) { throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\") }\n if (!result.text) { throw new RangeError(\"Every schema needs a 'text' type\") }\n for (var _ in result.text.attrs) { throw new RangeError(\"The text node type should not have attributes\") }\n\n return result\n};\n\nObject.defineProperties( NodeType.prototype, prototypeAccessors$5 );\n\n// Attribute descriptors\n\nvar Attribute = function Attribute(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n};\n\nvar prototypeAccessors$1$3 = { isRequired: { configurable: true } };\n\nprototypeAccessors$1$3.isRequired.get = function () {\n return !this.hasDefault\n};\n\nObject.defineProperties( Attribute.prototype, prototypeAccessors$1$3 );\n\n// Marks\n\n// ::- Like nodes, marks (which are associated with nodes to signify\n// things like emphasis or being part of a link) are\n// [tagged](#model.Mark.type) with type objects, which are\n// instantiated once per `Schema`.\nvar MarkType = function MarkType(name, rank, schema, spec) {\n // :: string\n // The name of the mark type.\n this.name = name;\n\n // :: Schema\n // The schema that this mark type instance is part of.\n this.schema = schema;\n\n // :: MarkSpec\n // The spec on which the type is based.\n this.spec = spec;\n\n this.attrs = initAttrs(spec.attrs);\n\n this.rank = rank;\n this.excluded = null;\n var defaults = defaultAttrs(this.attrs);\n this.instance = defaults && new Mark(this, defaults);\n};\n\n// :: (?Object) → Mark\n// Create a mark of this type. `attrs` may be `null` or an object\n// containing only some of the mark's attributes. The others, if\n// they have defaults, will be added.\nMarkType.prototype.create = function create (attrs) {\n if (!attrs && this.instance) { return this.instance }\n return new Mark(this, computeAttrs(this.attrs, attrs))\n};\n\nMarkType.compile = function compile (marks, schema) {\n var result = Object.create(null), rank = 0;\n marks.forEach(function (name, spec) { return result[name] = new MarkType(name, rank++, schema, spec); });\n return result\n};\n\n// :: ([Mark]) → [Mark]\n// When there is a mark of this type in the given set, a new set\n// without it is returned. Otherwise, the input set is returned.\nMarkType.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++) { if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n } }\n return set\n};\n\n// :: ([Mark]) → ?Mark\n// Tests whether there is a mark of this type in the given set.\nMarkType.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (set[i].type == this) { return set[i] } }\n};\n\n// :: (MarkType) → bool\n// Queries whether a given mark type is\n// [excluded](#model.MarkSpec.excludes) by this one.\nMarkType.prototype.excludes = function excludes (other) {\n return this.excluded.indexOf(other) > -1\n};\n\n// SchemaSpec:: interface\n// An object describing a schema, as passed to the [`Schema`](#model.Schema)\n// constructor.\n//\n// nodes:: union, OrderedMap>\n// The node types in this schema. Maps names to\n// [`NodeSpec`](#model.NodeSpec) objects that describe the node type\n// associated with that name. Their order is significant—it\n// determines which [parse rules](#model.NodeSpec.parseDOM) take\n// precedence by default, and which nodes come first in a given\n// [group](#model.NodeSpec.group).\n//\n// marks:: ?union, OrderedMap>\n// The mark types that exist in this schema. The order in which they\n// are provided determines the order in which [mark\n// sets](#model.Mark.addToSet) are sorted and in which [parse\n// rules](#model.MarkSpec.parseDOM) are tried.\n//\n// topNode:: ?string\n// The name of the default top-level node for the schema. Defaults\n// to `\"doc\"`.\n\n// NodeSpec:: interface\n//\n// content:: ?string\n// The content expression for this node, as described in the [schema\n// guide](/docs/guide/#schema.content_expressions). When not given,\n// the node does not allow any content.\n//\n// marks:: ?string\n// The marks that are allowed inside of this node. May be a\n// space-separated string referring to mark names or groups, `\"_\"`\n// to explicitly allow all marks, or `\"\"` to disallow marks. When\n// not given, nodes with inline content default to allowing all\n// marks, other nodes default to not allowing marks.\n//\n// group:: ?string\n// The group or space-separated groups to which this node belongs,\n// which can be referred to in the content expressions for the\n// schema.\n//\n// inline:: ?bool\n// Should be set to true for inline nodes. (Implied for text nodes.)\n//\n// atom:: ?bool\n// Can be set to true to indicate that, though this isn't a [leaf\n// node](#model.NodeType.isLeaf), it doesn't have directly editable\n// content and should be treated as a single unit in the view.\n//\n// attrs:: ?Object\n// The attributes that nodes of this type get.\n//\n// selectable:: ?bool\n// Controls whether nodes of this type can be selected as a [node\n// selection](#state.NodeSelection). Defaults to true for non-text\n// nodes.\n//\n// draggable:: ?bool\n// Determines whether nodes of this type can be dragged without\n// being selected. Defaults to false.\n//\n// code:: ?bool\n// Can be used to indicate that this node contains code, which\n// causes some commands to behave differently.\n//\n// whitespace:: ?union<\"pre\", \"normal\">\n// Controls way whitespace in this a node is parsed. The default is\n// `\"normal\"`, which causes the [DOM parser](#model.DOMParser) to\n// collapse whitespace in normal mode, and normalize it (replacing\n// newlines and such with spaces) otherwise. `\"pre\"` causes the\n// parser to preserve spaces inside the node. When this option isn't\n// given, but [`code`](#model.NodeSpec.code) is true, `whitespace`\n// will default to `\"pre\"`. Note that this option doesn't influence\n// the way the node is rendered—that should be handled by `toDOM`\n// and/or styling.\n//\n// defining:: ?bool\n// Determines whether this node is considered an important parent\n// node during replace operations (such as paste). Non-defining (the\n// default) nodes get dropped when their entire content is replaced,\n// whereas defining nodes persist and wrap the inserted content.\n// Likewise, in _inserted_ content the defining parents of the\n// content are preserved when possible. Typically,\n// non-default-paragraph textblock types, and possibly list items,\n// are marked as defining.\n//\n// isolating:: ?bool\n// When enabled (default is false), the sides of nodes of this type\n// count as boundaries that regular editing operations, like\n// backspacing or lifting, won't cross. An example of a node that\n// should probably have this enabled is a table cell.\n//\n// toDOM:: ?(node: Node) → DOMOutputSpec\n// Defines the default way a node of this type should be serialized\n// to DOM/HTML (as used by\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)).\n// Should return a DOM node or an [array\n// structure](#model.DOMOutputSpec) that describes one, with an\n// optional number zero (“hole”) in it to indicate where the node's\n// content should be inserted.\n//\n// For text nodes, the default is to create a text DOM node. Though\n// it is possible to create a serializer where text is rendered\n// differently, this is not supported inside the editor, so you\n// shouldn't override that in your text node spec.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this node, which can be\n// used by [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) to\n// automatically derive a parser. The `node` field in the rules is\n// implied (the name of this node will be filled in automatically).\n// If you supply your own parser, you do not need to also specify\n// parsing rules in your schema.\n//\n// toDebugString:: ?(node: Node) -> string\n// Defines the default way a node of this type should be serialized\n// to a string representation for debugging (e.g. in error messages).\n\n// MarkSpec:: interface\n//\n// attrs:: ?Object\n// The attributes that marks of this type get.\n//\n// inclusive:: ?bool\n// Whether this mark should be active when the cursor is positioned\n// at its end (or at its start when that is also the start of the\n// parent node). Defaults to true.\n//\n// excludes:: ?string\n// Determines which other marks this mark can coexist with. Should\n// be a space-separated strings naming other marks or groups of marks.\n// When a mark is [added](#model.Mark.addToSet) to a set, all marks\n// that it excludes are removed in the process. If the set contains\n// any mark that excludes the new mark but is not, itself, excluded\n// by the new mark, the mark can not be added an the set. You can\n// use the value `\"_\"` to indicate that the mark excludes all\n// marks in the schema.\n//\n// Defaults to only being exclusive with marks of the same type. You\n// can set it to an empty string (or any string not containing the\n// mark's own name) to allow multiple marks of a given type to\n// coexist (as long as they have different attributes).\n//\n// group:: ?string\n// The group or space-separated groups to which this mark belongs.\n//\n// spanning:: ?bool\n// Determines whether marks of this type can span multiple adjacent\n// nodes when serialized to DOM/HTML. Defaults to true.\n//\n// toDOM:: ?(mark: Mark, inline: bool) → DOMOutputSpec\n// Defines the default way marks of this type should be serialized\n// to DOM/HTML. When the resulting spec contains a hole, that is\n// where the marked content is placed. Otherwise, it is appended to\n// the top node.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this mark (see the\n// corresponding [node spec field](#model.NodeSpec.parseDOM)). The\n// `mark` field in the rules is implied.\n\n// AttributeSpec:: interface\n//\n// Used to [define](#model.NodeSpec.attrs) attributes on nodes or\n// marks.\n//\n// default:: ?any\n// The default value for this attribute, to use when no explicit\n// value is provided. Attributes that have no default must be\n// provided whenever a node or mark of a type that has them is\n// created.\n\n// ::- A document schema. Holds [node](#model.NodeType) and [mark\n// type](#model.MarkType) objects for the nodes and marks that may\n// occur in conforming documents, and provides functionality for\n// creating and deserializing such documents.\nvar Schema = function Schema(spec) {\n // :: SchemaSpec\n // The [spec](#model.SchemaSpec) on which the schema is based,\n // with the added guarantee that its `nodes` and `marks`\n // properties are\n // [`OrderedMap`](https://github.com/marijnh/orderedmap) instances\n // (not raw objects).\n this.spec = {};\n for (var prop in spec) { this.spec[prop] = spec[prop]; }\n this.spec.nodes = OrderedMap.from(spec.nodes);\n this.spec.marks = OrderedMap.from(spec.marks);\n\n // :: Object\n // An object mapping the schema's node names to node type objects.\n this.nodes = NodeType.compile(this.spec.nodes, this);\n\n // :: Object\n // A map from mark names to mark type objects.\n this.marks = MarkType.compile(this.spec.marks, this);\n\n var contentExprCache = Object.create(null);\n for (var prop$1 in this.nodes) {\n if (prop$1 in this.marks)\n { throw new RangeError(prop$1 + \" can not be both a node and a mark\") }\n var type = this.nodes[prop$1], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (var prop$2 in this.marks) {\n var type$1 = this.marks[prop$2], excl = type$1.spec.excludes;\n type$1.excluded = excl == null ? [type$1] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n\n // :: NodeType\n // The type of the [default top node](#model.SchemaSpec.topNode)\n // for this schema.\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n\n // :: Object\n // An object for storing whatever values modules may want to\n // compute and cache per schema. (If you want to store something\n // in it, try to use property names unlikely to clash.)\n this.cached = Object.create(null);\n this.cached.wrappings = Object.create(null);\n};\n\n// :: (union, ?Object, ?union, ?[Mark]) → Node\n// Create a node in this schema. The `type` may be a string or a\n// `NodeType` instance. Attributes will be extended\n// with defaults, `content` may be a `Fragment`,\n// `null`, a `Node`, or an array of nodes.\nSchema.prototype.node = function node (type, attrs, content, marks) {\n if (typeof type == \"string\")\n { type = this.nodeType(type); }\n else if (!(type instanceof NodeType))\n { throw new RangeError(\"Invalid node type: \" + type) }\n else if (type.schema != this)\n { throw new RangeError(\"Node type from different schema used (\" + type.name + \")\") }\n\n return type.createChecked(attrs, content, marks)\n};\n\n// :: (string, ?[Mark]) → Node\n// Create a text node in the schema. Empty text nodes are not\n// allowed.\nSchema.prototype.text = function text (text$1, marks) {\n var type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text$1, Mark.setFrom(marks))\n};\n\n// :: (union, ?Object) → Mark\n// Create a mark with the given type and attributes.\nSchema.prototype.mark = function mark (type, attrs) {\n if (typeof type == \"string\") { type = this.marks[type]; }\n return type.create(attrs)\n};\n\n// :: (Object) → Node\n// Deserialize a node from its JSON representation. This method is\n// bound.\nSchema.prototype.nodeFromJSON = function nodeFromJSON (json) {\n return Node.fromJSON(this, json)\n};\n\n// :: (Object) → Mark\n// Deserialize a mark from its JSON representation. This method is\n// bound.\nSchema.prototype.markFromJSON = function markFromJSON (json) {\n return Mark.fromJSON(this, json)\n};\n\nSchema.prototype.nodeType = function nodeType (name) {\n var found = this.nodes[name];\n if (!found) { throw new RangeError(\"Unknown node type: \" + name) }\n return found\n};\n\nfunction gatherMarks(schema, marks) {\n var found = [];\n for (var i = 0; i < marks.length; i++) {\n var name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n } else {\n for (var prop in schema.marks) {\n var mark$1 = schema.marks[prop];\n if (name == \"_\" || (mark$1.spec.group && mark$1.spec.group.split(\" \").indexOf(name) > -1))\n { found.push(ok = mark$1); }\n }\n }\n if (!ok) { throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\") }\n }\n return found\n}\n\n// ParseOptions:: interface\n// These are the options recognized by the\n// [`parse`](#model.DOMParser.parse) and\n// [`parseSlice`](#model.DOMParser.parseSlice) methods.\n//\n// preserveWhitespace:: ?union\n// By default, whitespace is collapsed as per HTML's rules. Pass\n// `true` to preserve whitespace, but normalize newlines to\n// spaces, and `\"full\"` to preserve whitespace entirely.\n//\n// findPositions:: ?[{node: dom.Node, offset: number}]\n// When given, the parser will, beside parsing the content,\n// record the document positions of the given DOM positions. It\n// will do so by writing to the objects, adding a `pos` property\n// that holds the document position. DOM positions that are not\n// in the parsed content will not be written to.\n//\n// from:: ?number\n// The child node index to start parsing from.\n//\n// to:: ?number\n// The child node index to stop parsing at.\n//\n// topNode:: ?Node\n// By default, the content is parsed into the schema's default\n// [top node type](#model.Schema.topNodeType). You can pass this\n// option to use the type and attributes from a different node\n// as the top container.\n//\n// topMatch:: ?ContentMatch\n// Provide the starting content match that content parsed into the\n// top node is matched against.\n//\n// context:: ?ResolvedPos\n// A set of additional nodes to count as\n// [context](#model.ParseRule.context) when parsing, above the\n// given [top node](#model.ParseOptions.topNode).\n\n// ParseRule:: interface\n// A value that describes how to parse a given DOM node or inline\n// style as a ProseMirror node or mark.\n//\n// tag:: ?string\n// A CSS selector describing the kind of DOM elements to match. A\n// single rule should have _either_ a `tag` or a `style` property.\n//\n// namespace:: ?string\n// The namespace to match. This should be used with `tag`.\n// Nodes are only matched when the namespace matches or this property\n// is null.\n//\n// style:: ?string\n// A CSS property name to match. When given, this rule matches\n// inline styles that list that property. May also have the form\n// `\"property=value\"`, in which case the rule only matches if the\n// property's value exactly matches the given value. (For more\n// complicated filters, use [`getAttrs`](#model.ParseRule.getAttrs)\n// and return false to indicate that the match failed.) Rules\n// matching styles may only produce [marks](#model.ParseRule.mark),\n// not nodes.\n//\n// priority:: ?number\n// Can be used to change the order in which the parse rules in a\n// schema are tried. Those with higher priority come first. Rules\n// without a priority are counted as having priority 50. This\n// property is only meaningful in a schema—when directly\n// constructing a parser, the order of the rule array is used.\n//\n// consuming:: ?boolean\n// By default, when a rule matches an element or style, no further\n// rules get a chance to match it. By setting this to `false`, you\n// indicate that even when this rule matches, other rules that come\n// after it should also run.\n//\n// context:: ?string\n// When given, restricts this rule to only match when the current\n// context—the parent nodes into which the content is being\n// parsed—matches this expression. Should contain one or more node\n// names or node group names followed by single or double slashes.\n// For example `\"paragraph/\"` means the rule only matches when the\n// parent node is a paragraph, `\"blockquote/paragraph/\"` restricts\n// it to be in a paragraph that is inside a blockquote, and\n// `\"section//\"` matches any position inside a section—a double\n// slash matches any sequence of ancestor nodes. To allow multiple\n// different contexts, they can be separated by a pipe (`|`)\n// character, as in `\"blockquote/|list_item/\"`.\n//\n// node:: ?string\n// The name of the node type to create when this rule matches. Only\n// valid for rules with a `tag` property, not for style rules. Each\n// rule should have one of a `node`, `mark`, or `ignore` property\n// (except when it appears in a [node](#model.NodeSpec.parseDOM) or\n// [mark spec](#model.MarkSpec.parseDOM), in which case the `node`\n// or `mark` property will be derived from its position).\n//\n// mark:: ?string\n// The name of the mark type to wrap the matched content in.\n//\n// ignore:: ?bool\n// When true, ignore content that matches this rule.\n//\n// closeParent:: ?bool\n// When true, finding an element that matches this rule will close\n// the current node.\n//\n// skip:: ?bool\n// When true, ignore the node that matches this rule, but do parse\n// its content.\n//\n// attrs:: ?Object\n// Attributes for the node or mark created by this rule. When\n// `getAttrs` is provided, it takes precedence.\n//\n// getAttrs:: ?(union) → ?union\n// A function used to compute the attributes for the node or mark\n// created by this rule. Can also be used to describe further\n// conditions the DOM element or style must match. When it returns\n// `false`, the rule won't match. When it returns null or undefined,\n// that is interpreted as an empty/default set of attributes.\n//\n// Called with a DOM Element for `tag` rules, and with a string (the\n// style's value) for `style` rules.\n//\n// contentElement:: ?union\n// For `tag` rules that produce non-leaf nodes or marks, by default\n// the content of the DOM element is parsed as content of the mark\n// or node. If the child nodes are in a descendent node, this may be\n// a CSS selector string that the parser must use to find the actual\n// content element, or a function that returns the actual content\n// element to the parser.\n//\n// getContent:: ?(dom.Node, schema: Schema) → Fragment\n// Can be used to override the content of a matched node. When\n// present, instead of parsing the node's child nodes, the result of\n// this function is used.\n//\n// preserveWhitespace:: ?union\n// Controls whether whitespace should be preserved when parsing the\n// content inside the matched element. `false` means whitespace may\n// be collapsed, `true` means that whitespace should be preserved\n// but newlines normalized to spaces, and `\"full\"` means that\n// newlines should also be preserved.\n\n// ::- A DOM parser represents a strategy for parsing DOM content into\n// a ProseMirror document conforming to a given schema. Its behavior\n// is defined by an array of [rules](#model.ParseRule).\nvar DOMParser = function DOMParser(schema, rules) {\n var this$1 = this;\n\n // :: Schema\n // The schema into which the parser parses.\n this.schema = schema;\n // :: [ParseRule]\n // The set of [parse rules](#model.ParseRule) that the parser\n // uses, in order of precedence.\n this.rules = rules;\n this.tags = [];\n this.styles = [];\n\n rules.forEach(function (rule) {\n if (rule.tag) { this$1.tags.push(rule); }\n else if (rule.style) { this$1.styles.push(rule); }\n });\n\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(function (r) {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node) { return false }\n var node = schema.nodes[r.node];\n return node.contentMatch.matchType(node)\n });\n};\n\n// :: (dom.Node, ?ParseOptions) → Node\n// Parse a document from the content of a DOM node.\nDOMParser.prototype.parse = function parse (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, false);\n context.addAll(dom, null, options.from, options.to);\n return context.finish()\n};\n\n// :: (dom.Node, ?ParseOptions) → Slice\n// Parses the content of the given DOM node, like\n// [`parse`](#model.DOMParser.parse), and takes the same set of\n// options. But unlike that method, which produces a whole node,\n// this one returns a slice that is open at the sides, meaning that\n// the schema constraints aren't applied to the start of nodes to\n// the left of the input and the end of nodes at the end.\nDOMParser.prototype.parseSlice = function parseSlice (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, true);\n context.addAll(dom, null, options.from, options.to);\n return Slice.maxOpen(context.finish())\n};\n\nDOMParser.prototype.matchTag = function matchTag (dom, context, after) {\n for (var i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n var rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n var result = rule.getAttrs(dom);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n }\n};\n\nDOMParser.prototype.matchStyle = function matchStyle (prop, value, context, after) {\n for (var i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n var rule = this.styles[i];\n if (rule.style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n rule.style.length > prop.length &&\n (rule.style.charCodeAt(prop.length) != 61 || rule.style.slice(prop.length + 1) != value))\n { continue }\n if (rule.getAttrs) {\n var result = rule.getAttrs(value);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n};\n\n// : (Schema) → [ParseRule]\nDOMParser.schemaRules = function schemaRules (schema) {\n var result = [];\n function insert(rule) {\n var priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n var next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority) { break }\n }\n result.splice(i, 0, rule);\n }\n\n var loop = function ( name ) {\n var rules = schema.marks[name].spec.parseDOM;\n if (rules) { rules.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.mark = name;\n }); }\n };\n\n for (var name in schema.marks) loop( name );\n var loop$1 = function ( name ) {\n var rules$1 = schema.nodes[name$1].spec.parseDOM;\n if (rules$1) { rules$1.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.node = name$1;\n }); }\n };\n\n for (var name$1 in schema.nodes) loop$1();\n return result\n};\n\n// :: (Schema) → DOMParser\n// Construct a DOM parser using the parsing rules listed in a\n// schema's [node specs](#model.NodeSpec.parseDOM), reordered by\n// [priority](#model.ParseRule.priority).\nDOMParser.fromSchema = function fromSchema (schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)))\n};\n\n// : Object The block-level tags in HTML5\nvar blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\n\n// : Object The tags that we normally ignore.\nvar ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\n\n// : Object List tags.\nvar listTags = {ol: true, ul: true};\n\n// Using a bitfield for node context options\nvar OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\n\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null) { return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0) }\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT\n}\n\nvar NodeContext = function NodeContext(type, attrs, marks, pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.solid = solid;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n this.options = options;\n this.content = [];\n // Marks applied to this node itself\n this.marks = marks;\n // Marks applied to its children\n this.activeMarks = Mark.none;\n // Marks that can't apply here, but will be used in children if possible\n this.pendingMarks = pendingMarks;\n // Nested Marks with same type\n this.stashMarks = [];\n};\n\nNodeContext.prototype.findWrapping = function findWrapping (node) {\n if (!this.match) {\n if (!this.type) { return [] }\n var fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n } else {\n var start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap\n } else {\n return null\n }\n }\n }\n return this.match.findWrapping(node.type)\n};\n\nNodeContext.prototype.finish = function finish (openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n var last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n if (last.text.length == m[0].length) { this.content.pop(); }\n else { this.content[this.content.length - 1] = last.withText(last.text.slice(0, last.text.length - m[0].length)); }\n }\n }\n var content = Fragment.from(this.content);\n if (!openEnd && this.match)\n { content = content.append(this.match.fillBefore(Fragment.empty, true)); }\n return this.type ? this.type.create(this.attrs, content, this.marks) : content\n};\n\nNodeContext.prototype.popFromStashMark = function popFromStashMark (mark) {\n for (var i = this.stashMarks.length - 1; i >= 0; i--)\n { if (mark.eq(this.stashMarks[i])) { return this.stashMarks.splice(i, 1)[0] } }\n};\n\nNodeContext.prototype.applyPending = function applyPending (nextType) {\n for (var i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n var mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n};\n\nNodeContext.prototype.inlineContext = function inlineContext (node) {\n if (this.type) { return this.type.inlineContent }\n if (this.content.length) { return this.content[0].isInline }\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase())\n};\n\nvar ParseContext = function ParseContext(parser, options, open) {\n // : DOMParser The parser we are using.\n this.parser = parser;\n // : Object The options passed to this parse.\n this.options = options;\n this.isOpen = open;\n var topNode = options.topNode, topContext;\n var topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (open ? OPT_OPEN_LEFT : 0);\n if (topNode)\n { topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true,\n options.topMatch || topNode.type.contentMatch, topOptions); }\n else if (open)\n { topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions); }\n else\n { topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions); }\n this.nodes = [topContext];\n // : [Mark] The current set of marks\n this.open = 0;\n this.find = options.findPositions;\n this.needsBlock = false;\n};\n\nvar prototypeAccessors$6 = { top: { configurable: true },currentPos: { configurable: true } };\n\nprototypeAccessors$6.top.get = function () {\n return this.nodes[this.open]\n};\n\n// : (dom.Node)\n// Add a DOM node to the content. Text is inserted as text node,\n// otherwise, the node is passed to `addElement` or, if it has a\n// `style` attribute, `addElementWithStyles`.\nParseContext.prototype.addDOM = function addDOM (dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom);\n } else if (dom.nodeType == 1) {\n var style = dom.getAttribute(\"style\");\n var marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top;\n if (marks != null) { for (var i = 0; i < marks.length; i++) { this.addPendingMark(marks[i]); } }\n this.addElement(dom);\n if (marks != null) { for (var i$1 = 0; i$1 < marks.length; i$1++) { this.removePendingMark(marks[i$1], top); } }\n }\n};\n\nParseContext.prototype.addTextNode = function addTextNode (dom) {\n var value = dom.nodeValue;\n var top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n var nodeBefore = top.content[top.content.length - 1];\n var domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n { value = value.slice(1); }\n }\n } else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n } else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value) { this.insertNode(this.parser.schema.text(value)); }\n this.findInText(dom);\n } else {\n this.findInside(dom);\n }\n};\n\n// : (dom.Element, ?ParseRule)\n// Try to find a handler for the given tag and use that to parse. If\n// none is found, the element's content nodes are added directly.\nParseContext.prototype.addElement = function addElement (dom, matchAfter) {\n var name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists) { normalizeList(dom); }\n var rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n } else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent) { this.open = Math.max(0, this.open - 1); }\n else if (rule && rule.skip.nodeType) { dom = rule.skip; }\n var sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n sync = true;\n if (!top.type) { this.needsBlock = true; }\n } else if (!dom.firstChild) {\n this.leafFallback(dom);\n return\n }\n this.addAll(dom);\n if (sync) { this.sync(top); }\n this.needsBlock = oldNeedsBlock;\n } else {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : null);\n }\n};\n\n// Called for leaf DOM nodes that would otherwise be ignored\nParseContext.prototype.leafFallback = function leafFallback (dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n { this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\")); }\n};\n\n// Called for ignored nodes\nParseContext.prototype.ignoreFallback = function ignoreFallback (dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n { this.findPlace(this.parser.schema.text(\"-\")); }\n};\n\n// Run any style parser associated with the node's styles. Either\n// return an array of marks, or null to indicate some of the styles\n// had a rule with `ignore` set.\nParseContext.prototype.readStyles = function readStyles (styles) {\n var marks = Mark.none;\n style: for (var i = 0; i < styles.length; i += 2) {\n for (var after = null;;) {\n var rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule) { continue style }\n if (rule.ignore) { return null }\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks);\n if (rule.consuming === false) { after = rule; }\n else { break }\n }\n }\n return marks\n};\n\n// : (dom.Element, ParseRule) → bool\n// Look up a handler for the given node. If none are found, return\n// false. Otherwise, apply it, use its return value to drive the way\n// the node's content is wrapped, and return true.\nParseContext.prototype.addElementByRule = function addElementByRule (dom, rule, continueAfter) {\n var this$1 = this;\n\n var sync, nodeType, markType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs, rule.preserveWhitespace);\n } else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n } else {\n markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n var startIn = this.top;\n\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n } else if (continueAfter) {\n this.addElement(dom, continueAfter);\n } else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(function (node) { return this$1.insertNode(node); });\n } else {\n var contentDOM = rule.contentElement;\n if (typeof contentDOM == \"string\") { contentDOM = dom.querySelector(contentDOM); }\n else if (typeof contentDOM == \"function\") { contentDOM = contentDOM(dom); }\n if (!contentDOM) { contentDOM = dom; }\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, sync);\n }\n if (sync) { this.sync(startIn); this.open--; }\n if (mark) { this.removePendingMark(mark, startIn); }\n};\n\n// : (dom.Node, ?NodeBuilder, ?number, ?number)\n// Add all child nodes between `startIndex` and `endIndex` (or the\n// whole node, if not given). If `sync` is passed, use it to\n// synchronize after every block element.\nParseContext.prototype.addAll = function addAll (parent, sync, startIndex, endIndex) {\n var index = startIndex || 0;\n for (var dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild,\n end = endIndex == null ? null : parent.childNodes[endIndex];\n dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n if (sync && blockTags.hasOwnProperty(dom.nodeName.toLowerCase()))\n { this.sync(sync); }\n }\n this.findAtPoint(parent, index);\n};\n\n// Try to find a way to fit the given node type into the current\n// context. May add intermediate wrappers and/or leave non-solid\n// nodes that we're in.\nParseContext.prototype.findPlace = function findPlace (node) {\n var route, sync;\n for (var depth = this.open; depth >= 0; depth--) {\n var cx = this.nodes[depth];\n var found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length) { break }\n }\n if (cx.solid) { break }\n }\n if (!route) { return false }\n this.sync(sync);\n for (var i = 0; i < route.length; i++)\n { this.enterInner(route[i], null, false); }\n return true\n};\n\n// : (Node) → ?Node\n// Try to insert the given node, adjusting the context when needed.\nParseContext.prototype.insertNode = function insertNode (node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n var block = this.textblockFromContext();\n if (block) { this.enterInner(block); }\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(node.type);\n if (top.match) { top.match = top.match.matchType(node.type); }\n var marks = top.activeMarks;\n for (var i = 0; i < node.marks.length; i++)\n { if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n { marks = node.marks[i].addToSet(marks); } }\n top.content.push(node.mark(marks));\n return true\n }\n return false\n};\n\n// : (NodeType, ?Object) → bool\n// Try to start a node of the given type, adjusting the context when\n// necessary.\nParseContext.prototype.enter = function enter (type, attrs, preserveWS) {\n var ok = this.findPlace(type.create(attrs));\n if (ok) { this.enterInner(type, attrs, true, preserveWS); }\n return ok\n};\n\n// Open a node of the given type\nParseContext.prototype.enterInner = function enterInner (type, attrs, solid, preserveWS) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type, attrs);\n var options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0) { options |= OPT_OPEN_LEFT; }\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n};\n\n// Make sure all nodes above this.open are finished and added to\n// their parents\nParseContext.prototype.closeExtra = function closeExtra (openEnd) {\n var i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--) { this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd)); }\n this.nodes.length = this.open + 1;\n }\n};\n\nParseContext.prototype.finish = function finish () {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen)\n};\n\nParseContext.prototype.sync = function sync (to) {\n for (var i = this.open; i >= 0; i--) { if (this.nodes[i] == to) {\n this.open = i;\n return\n } }\n};\n\nprototypeAccessors$6.currentPos.get = function () {\n this.closeExtra();\n var pos = 0;\n for (var i = this.open; i >= 0; i--) {\n var content = this.nodes[i].content;\n for (var j = content.length - 1; j >= 0; j--)\n { pos += content[j].nodeSize; }\n if (i) { pos++; }\n }\n return pos\n};\n\nParseContext.prototype.findAtPoint = function findAtPoint (parent, offset) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findInside = function findInside (parent) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findAround = function findAround (parent, content, before) {\n if (parent != content && this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n var pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n { this.find[i].pos = this.currentPos; }\n }\n } }\n};\n\nParseContext.prototype.findInText = function findInText (textNode) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n { this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset); }\n } }\n};\n\n// : (string) → bool\n// Determines whether the given [context\n// string](#ParseRule.context) matches this context.\nParseContext.prototype.matchesContext = function matchesContext (context) {\n var this$1 = this;\n\n if (context.indexOf(\"|\") > -1)\n { return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this) }\n\n var parts = context.split(\"/\");\n var option = this.options.context;\n var useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n var minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n var match = function (i, depth) {\n for (; i >= 0; i--) {\n var part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0) { continue }\n for (; depth >= minDepth; depth--)\n { if (match(i - 1, depth)) { return true } }\n return false\n } else {\n var next = depth > 0 || (depth == 0 && useRoot) ? this$1.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n { return false }\n depth--;\n }\n }\n return true\n };\n return match(parts.length - 1, this.open)\n};\n\nParseContext.prototype.textblockFromContext = function textblockFromContext () {\n var $context = this.options.context;\n if ($context) { for (var d = $context.depth; d >= 0; d--) {\n var deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs) { return deflt }\n } }\n for (var name in this.parser.schema.nodes) {\n var type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs) { return type }\n }\n};\n\nParseContext.prototype.addPendingMark = function addPendingMark (mark) {\n var found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found) { this.top.stashMarks.push(found); }\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n};\n\nParseContext.prototype.removePendingMark = function removePendingMark (mark, upto) {\n for (var depth = this.open; depth >= 0; depth--) {\n var level = this.nodes[depth];\n var found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n } else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n var stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n { level.activeMarks = stashMark.addToSet(level.activeMarks); }\n }\n if (level == upto) { break }\n }\n};\n\nObject.defineProperties( ParseContext.prototype, prototypeAccessors$6 );\n\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (var child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n var name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n } else if (name == \"li\") {\n prevItem = child;\n } else if (name) {\n prevItem = null;\n }\n }\n}\n\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector)\n}\n\n// : (string) → [string]\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n var re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style)) { result.push(m[1], m[2].trim()); }\n return result\n}\n\nfunction copy(obj) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n return copy\n}\n\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n var nodes = nodeType.schema.nodes;\n var loop = function ( name ) {\n var parent = nodes[name];\n if (!parent.allowsMarkType(markType)) { return }\n var seen = [], scan = function (match) {\n seen.push(match);\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n var next = ref.next;\n if (type == nodeType) { return true }\n if (seen.indexOf(next) < 0 && scan(next)) { return true }\n }\n };\n if (scan(parent.contentMatch)) { return { v: true } }\n };\n\n for (var name in nodes) {\n var returned = loop( name );\n\n if ( returned ) return returned.v;\n }\n}\n\nfunction findSameMarkInSet(mark, set) {\n for (var i = 0; i < set.length; i++) {\n if (mark.eq(set[i])) { return set[i] }\n }\n}\n\n// DOMOutputSpec:: interface\n// A description of a DOM structure. Can be either a string, which is\n// interpreted as a text node, a DOM node, which is interpreted as\n// itself, a `{dom: Node, contentDOM: ?Node}` object, or an array.\n//\n// An array describes a DOM element. The first value in the array\n// should be a string—the name of the DOM element, optionally prefixed\n// by a namespace URL and a space. If the second element is plain\n// object, it is interpreted as a set of attributes for the element.\n// Any elements after that (including the 2nd if it's not an attribute\n// object) are interpreted as children of the DOM elements, and must\n// either be valid `DOMOutputSpec` values, or the number zero.\n//\n// The number zero (pronounced “hole”) is used to indicate the place\n// where a node's child nodes should be inserted. If it occurs in an\n// output spec, it should be the only child element in its parent\n// node.\n\n// ::- A DOM serializer knows how to convert ProseMirror nodes and\n// marks of various types to DOM nodes.\nvar DOMSerializer = function DOMSerializer(nodes, marks) {\n // :: Object<(node: Node) → DOMOutputSpec>\n // The node serialization functions.\n this.nodes = nodes || {};\n // :: Object\n // The mark serialization functions.\n this.marks = marks || {};\n};\n\n// :: (Fragment, ?Object) → dom.DocumentFragment\n// Serialize the content of this fragment to a DOM fragment. When\n// not in the browser, the `document` option, containing a DOM\n// document, should be passed so that the serializer can create\n// nodes.\nDOMSerializer.prototype.serializeFragment = function serializeFragment (fragment, options, target) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (!target) { target = doc(options).createDocumentFragment(); }\n\n var top = target, active = null;\n fragment.forEach(function (node) {\n if (active || node.marks.length) {\n if (!active) { active = []; }\n var keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n var next = node.marks[rendered];\n if (!this$1.marks[next.type.name]) { rendered++; continue }\n if (!next.eq(active[keep]) || next.type.spec.spanning === false) { break }\n keep += 2; rendered++;\n }\n while (keep < active.length) {\n top = active.pop();\n active.pop();\n }\n while (rendered < node.marks.length) {\n var add = node.marks[rendered++];\n var markDOM = this$1.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push(add, top);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this$1.serializeNodeInner(node, options));\n });\n\n return target\n};\n\nDOMSerializer.prototype.serializeNodeInner = function serializeNodeInner (node, options) {\n if ( options === void 0 ) options = {};\n\n var ref =\n DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n var dom = ref.dom;\n var contentDOM = ref.contentDOM;\n if (contentDOM) {\n if (node.isLeaf)\n { throw new RangeError(\"Content hole not allowed in a leaf node spec\") }\n if (options.onContent)\n { options.onContent(node, contentDOM, options); }\n else\n { this.serializeFragment(node.content, options, contentDOM); }\n }\n return dom\n};\n\n// :: (Node, ?Object) → dom.Node\n// Serialize this node to a DOM node. This can be useful when you\n// need to serialize a part of a document, as opposed to the whole\n// document. To serialize a whole document, use\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n// its [content](#model.Node.content).\nDOMSerializer.prototype.serializeNode = function serializeNode (node, options) {\n if ( options === void 0 ) options = {};\n\n var dom = this.serializeNodeInner(node, options);\n for (var i = node.marks.length - 1; i >= 0; i--) {\n var wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n(wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom\n};\n\nDOMSerializer.prototype.serializeMark = function serializeMark (mark, inline, options) {\n if ( options === void 0 ) options = {};\n\n var toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline))\n};\n\n// :: (dom.Document, DOMOutputSpec) → {dom: dom.Node, contentDOM: ?dom.Node}\n// Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n// the spec has a hole (zero) in it, `contentDOM` will point at the\n// node with the hole.\nDOMSerializer.renderSpec = function renderSpec (doc, structure, xmlNS) {\n if ( xmlNS === void 0 ) xmlNS = null;\n\n if (typeof structure == \"string\")\n { return {dom: doc.createTextNode(structure)} }\n if (structure.nodeType != null)\n { return {dom: structure} }\n if (structure.dom && structure.dom.nodeType != null)\n { return structure }\n var tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n var contentDOM = null, dom = xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName);\n var attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (var name in attrs) { if (attrs[name] != null) {\n var space$1 = name.indexOf(\" \");\n if (space$1 > 0) { dom.setAttributeNS(name.slice(0, space$1), name.slice(space$1 + 1), attrs[name]); }\n else { dom.setAttribute(name, attrs[name]); }\n } }\n }\n for (var i = start; i < structure.length; i++) {\n var child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n { throw new RangeError(\"Content hole must be the only child of its parent node\") }\n return {dom: dom, contentDOM: dom}\n } else {\n var ref = DOMSerializer.renderSpec(doc, child, xmlNS);\n var inner = ref.dom;\n var innerContent = ref.contentDOM;\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM) { throw new RangeError(\"Multiple content holes\") }\n contentDOM = innerContent;\n }\n }\n }\n return {dom: dom, contentDOM: contentDOM}\n};\n\n// :: (Schema) → DOMSerializer\n// Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n// properties in a schema's node and mark specs.\nDOMSerializer.fromSchema = function fromSchema (schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)))\n};\n\n// : (Schema) → Object<(node: Node) → DOMOutputSpec>\n// Gather the serializers in a schema's node specs into an object.\n// This can be useful as a base to build a custom serializer from.\nDOMSerializer.nodesFromSchema = function nodesFromSchema (schema) {\n var result = gatherToDOM(schema.nodes);\n if (!result.text) { result.text = function (node) { return node.text; }; }\n return result\n};\n\n// : (Schema) → Object<(mark: Mark) → DOMOutputSpec>\n// Gather the serializers in a schema's mark specs into an object.\nDOMSerializer.marksFromSchema = function marksFromSchema (schema) {\n return gatherToDOM(schema.marks)\n};\n\nfunction gatherToDOM(obj) {\n var result = {};\n for (var name in obj) {\n var toDOM = obj[name].spec.toDOM;\n if (toDOM) { result[name] = toDOM; }\n }\n return result\n}\n\nfunction doc(options) {\n // declare global: window\n return options.document || window.document\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\n\nvar olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n\n// :: NodeSpec\n// An ordered list [node spec](#model.NodeSpec). Has a single\n// attribute, `order`, which determines the number at which the list\n// starts counting, and defaults to 1. Represented as an `
      `\n// element.\nvar orderedList = {\n attrs: {order: {default: 1}},\n parseDOM: [{tag: \"ol\", getAttrs: function getAttrs(dom) {\n return {order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1}\n }}],\n toDOM: function toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", {start: node.attrs.order}, 0]\n }\n};\n\n// :: NodeSpec\n// A bullet list node spec, represented in the DOM as `
        `.\nvar bulletList = {\n parseDOM: [{tag: \"ul\"}],\n toDOM: function toDOM() { return ulDOM }\n};\n\n// :: NodeSpec\n// A list item (`
      • `) spec.\nvar listItem = {\n parseDOM: [{tag: \"li\"}],\n toDOM: function toDOM() { return liDOM },\n defining: true\n};\n\nfunction add(obj, props) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n for (var prop$1 in props) { copy[prop$1] = props[prop$1]; }\n return copy\n}\n\n// :: (OrderedMap, string, ?string) → OrderedMap\n// Convenience function for adding list-related node types to a map\n// specifying the nodes for a schema. Adds\n// [`orderedList`](#schema-list.orderedList) as `\"ordered_list\"`,\n// [`bulletList`](#schema-list.bulletList) as `\"bullet_list\"`, and\n// [`listItem`](#schema-list.listItem) as `\"list_item\"`.\n//\n// `itemContent` determines the content expression for the list items.\n// If you want the commands defined in this module to apply to your\n// list structure, it should have a shape like `\"paragraph block*\"` or\n// `\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\n// given to assign a group name to the list node types, for example\n// `\"block\"`.\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, {content: \"list_item+\", group: listGroup}),\n bullet_list: add(bulletList, {content: \"list_item+\", group: listGroup}),\n list_item: add(listItem, {content: itemContent})\n })\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command function that wraps the selection in a list with\n// the given type an attributes. If `dispatch` is null, only return a\n// value to indicate whether this is possible, but don't actually\n// perform the change.\nfunction wrapInList(listType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range) { return false }\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0) { return false }\n var $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n { range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth); }\n doJoin = true;\n }\n var wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap) { return false }\n if (dispatch) { dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView()); }\n return true\n }\n}\n\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--)\n { content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content)); }\n\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end,\n new Slice(content, 0, 0), wrappers.length, true));\n\n var found = 0;\n for (var i$1 = 0; i$1 < wrappers.length; i$1++) { if (wrappers[i$1].type == listType) { found = i$1 + 1; } }\n var splitDepth = wrappers.length - found;\n\n var splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (var i$2 = range.startIndex, e = range.endIndex, first = true; i$2 < e; i$2++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i$2).nodeSize;\n }\n return tr\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Build a command that splits a non-empty textblock at the top level\n// of a list item by also splitting that list item.\nfunction splitListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var node = ref.node;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) { return false }\n var grandParent = $from.node(-1);\n if (grandParent.type != itemType) { return false }\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 2 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1) { return false }\n if (dispatch) {\n var wrap = Fragment.empty;\n var depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (var d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n { wrap = Fragment.from($from.node(d).copy(wrap)); }\n var depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n var start = $from.before($from.depth - (depthBefore - 1));\n var tr$1 = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n var sel = -1;\n tr$1.doc.nodesBetween(start, tr$1.doc.content.size, function (node, pos) {\n if (sel > -1) { return false }\n if (node.isTextblock && node.content.size == 0) { sel = pos + 1; }\n });\n if (sel > -1) { tr$1.setSelection(state.selection.constructor.near(tr$1.doc.resolve(sel))); }\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n var nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n var tr = state.tr.delete($from.pos, $to.pos);\n var types = nextType && [null, {type: nextType}];\n if (!canSplit(tr.doc, $from.pos, 2, types)) { return false }\n if (dispatch) { dispatch(tr.split($from.pos, 2, types).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to lift the list item around the selection up into\n// a wrapping list.\nfunction liftListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n if (!dispatch) { return true }\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n { return liftToOuterList(state, dispatch, itemType, range) }\n else // Outer list node\n { return liftOutOfList(state, dispatch, range) }\n }\n}\n\nfunction liftToOuterList(state, dispatch, itemType, range) {\n var tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList,\n new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n dispatch(tr.lift(range, liftTarget(range)).scrollIntoView());\n return true\n}\n\nfunction liftOutOfList(state, dispatch, range) {\n var tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (var pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n var $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize) { return false }\n var atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n var parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1,\n item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n { return false }\n var start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1,\n new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))),\n atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to sink the list item around the selection down\n// into an inner list.\nfunction sinkListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n var startIndex = range.startIndex;\n if (startIndex == 0) { return false }\n var parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType) { return false }\n\n if (dispatch) {\n var nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n var inner = Fragment.from(nestedBefore ? itemType.create() : null);\n var slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))),\n nestedBefore ? 3 : 1, 0);\n var before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after,\n before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true\n }\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, wrapInList };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nvar classesById = Object.create(null);\n\n// ::- Superclass for editor selections. Every selection type should\n// extend this. Should not be instantiated directly.\nvar Selection = function Selection($anchor, $head, ranges) {\n // :: [SelectionRange]\n // The ranges covered by the selection.\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n // :: ResolvedPos\n // The resolved anchor of the selection (the side that stays in\n // place when the selection is modified).\n this.$anchor = $anchor;\n // :: ResolvedPos\n // The resolved head of the selection (the side that moves when\n // the selection is modified).\n this.$head = $head;\n};\n\nvar prototypeAccessors = { anchor: { configurable: true },head: { configurable: true },from: { configurable: true },to: { configurable: true },$from: { configurable: true },$to: { configurable: true },empty: { configurable: true } };\n\n// :: number\n// The selection's anchor, as an unresolved position.\nprototypeAccessors.anchor.get = function () { return this.$anchor.pos };\n\n// :: number\n// The selection's head.\nprototypeAccessors.head.get = function () { return this.$head.pos };\n\n// :: number\n// The lower bound of the selection's main range.\nprototypeAccessors.from.get = function () { return this.$from.pos };\n\n// :: number\n// The upper bound of the selection's main range.\nprototypeAccessors.to.get = function () { return this.$to.pos };\n\n// :: ResolvedPos\n// The resolved lowerbound of the selection's main range.\nprototypeAccessors.$from.get = function () {\n return this.ranges[0].$from\n};\n\n// :: ResolvedPos\n// The resolved upper bound of the selection's main range.\nprototypeAccessors.$to.get = function () {\n return this.ranges[0].$to\n};\n\n// :: bool\n// Indicates whether the selection contains any content.\nprototypeAccessors.empty.get = function () {\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++)\n { if (ranges[i].$from.pos != ranges[i].$to.pos) { return false } }\n return true\n};\n\n// eq:: (Selection) → bool\n// Test whether the selection is the same as another selection.\n\n// map:: (doc: Node, mapping: Mappable) → Selection\n// Map this selection through a [mappable](#transform.Mappable) thing. `doc`\n// should be the new document to which we are mapping.\n\n// :: () → Slice\n// Get the content of this selection as a slice.\nSelection.prototype.content = function content () {\n return this.$from.node(0).slice(this.from, this.to, true)\n};\n\n// :: (Transaction, ?Slice)\n// Replace the selection with a slice or, if no slice is given,\n// delete the selection. Will append to the given transaction.\nSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n var lastNode = content.content.lastChild, lastParent = null;\n for (var i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref = ranges[i$1];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i$1 ? Slice.empty : content);\n if (i$1 == 0)\n { selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1); }\n }\n};\n\n// :: (Transaction, Node)\n// Replace the selection with the given node, appending the changes\n// to the given transaction.\nSelection.prototype.replaceWith = function replaceWith (tr, node) {\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n var from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n } else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n};\n\n// toJSON:: () → Object\n// Convert the selection to a JSON representation. When implementing\n// this for a custom selection class, make sure to give the object a\n// `type` property whose value matches the ID under which you\n// [registered](#state.Selection^jsonID) your class.\n\n// :: (ResolvedPos, number, ?bool) → ?Selection\n// Find a valid cursor or leaf node selection starting at the given\n// position and searching back if `dir` is negative, and forward if\n// positive. When `textOnly` is true, only consider cursor\n// selections. Will return null when no valid selection position is\n// found.\nSelection.findFrom = function findFrom ($pos, dir, textOnly) {\n var inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner) { return inner }\n\n for (var depth = $pos.depth - 1; depth >= 0; depth--) {\n var found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found) { return found }\n }\n};\n\n// :: (ResolvedPos, ?number) → Selection\n// Find a valid cursor or leaf node selection near the given\n// position. Searches forward first by default, but if `bias` is\n// negative, it will search backwards first.\nSelection.near = function near ($pos, bias) {\n if ( bias === void 0 ) bias = 1;\n\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0))\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the start of\n// the given document. Will return an\n// [`AllSelection`](#state.AllSelection) if no valid position\n// exists.\nSelection.atStart = function atStart (doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc)\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the end of the\n// given document.\nSelection.atEnd = function atEnd (doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc)\n};\n\n// :: (Node, Object) → Selection\n// Deserialize the JSON representation of a selection. Must be\n// implemented for custom classes (as a static class method).\nSelection.fromJSON = function fromJSON (doc, json) {\n if (!json || !json.type) { throw new RangeError(\"Invalid input for Selection.fromJSON\") }\n var cls = classesById[json.type];\n if (!cls) { throw new RangeError((\"No selection type \" + (json.type) + \" defined\")) }\n return cls.fromJSON(doc, json)\n};\n\n// :: (string, constructor)\n// To be able to deserialize selections from JSON, custom selection\n// classes must register themselves with an ID string, so that they\n// can be disambiguated. Try to pick something that's unlikely to\n// clash with classes from other modules.\nSelection.jsonID = function jsonID (id, selectionClass) {\n if (id in classesById) { throw new RangeError(\"Duplicate use of selection JSON ID \" + id) }\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass\n};\n\n// :: () → SelectionBookmark\n// Get a [bookmark](#state.SelectionBookmark) for this selection,\n// which is a value that can be mapped without having access to a\n// current document, and later resolved to a real selection for a\n// given document again. (This is used mostly by the history to\n// track and restore old selections.) The default implementation of\n// this method just converts the selection to a text selection and\n// returns the bookmark for that.\nSelection.prototype.getBookmark = function getBookmark () {\n return TextSelection.between(this.$anchor, this.$head).getBookmark()\n};\n\nObject.defineProperties( Selection.prototype, prototypeAccessors );\n\n// :: bool\n// Controls whether, when a selection of this type is active in the\n// browser, the selected range should be visible to the user. Defaults\n// to `true`.\nSelection.prototype.visible = true;\n\n// SelectionBookmark:: interface\n// A lightweight, document-independent representation of a selection.\n// You can define a custom bookmark type for a custom selection class\n// to make the history handle it well.\n//\n// map:: (mapping: Mapping) → SelectionBookmark\n// Map the bookmark through a set of changes.\n//\n// resolve:: (doc: Node) → Selection\n// Resolve the bookmark to a real selection again. This may need to\n// do some error checking and may fall back to a default (usually\n// [`TextSelection.between`](#state.TextSelection^between)) if\n// mapping made the bookmark invalid.\n\n// ::- Represents a selected range in a document.\nvar SelectionRange = function SelectionRange($from, $to) {\n // :: ResolvedPos\n // The lower bound of the range.\n this.$from = $from;\n // :: ResolvedPos\n // The upper bound of the range.\n this.$to = $to;\n};\n\n// ::- A text selection represents a classical editor selection, with\n// a head (the moving side) and anchor (immobile side), both of which\n// point into textblock nodes. It can be empty (a regular cursor\n// position).\nvar TextSelection = /*@__PURE__*/(function (Selection) {\n function TextSelection($anchor, $head) {\n if ( $head === void 0 ) $head = $anchor;\n\n Selection.call(this, $anchor, $head);\n }\n\n if ( Selection ) TextSelection.__proto__ = Selection;\n TextSelection.prototype = Object.create( Selection && Selection.prototype );\n TextSelection.prototype.constructor = TextSelection;\n\n var prototypeAccessors$1 = { $cursor: { configurable: true } };\n\n // :: ?ResolvedPos\n // Returns a resolved position if this is a cursor selection (an\n // empty text selection), and null otherwise.\n prototypeAccessors$1.$cursor.get = function () { return this.$anchor.pos == this.$head.pos ? this.$head : null };\n\n TextSelection.prototype.map = function map (doc, mapping) {\n var $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent) { return Selection.near($head) }\n var $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head)\n };\n\n TextSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n Selection.prototype.replace.call(this, tr, content);\n if (content == Slice.empty) {\n var marks = this.$from.marksAcross(this.$to);\n if (marks) { tr.ensureMarks(marks); }\n }\n };\n\n TextSelection.prototype.eq = function eq (other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head\n };\n\n TextSelection.prototype.getBookmark = function getBookmark () {\n return new TextBookmark(this.anchor, this.head)\n };\n\n TextSelection.prototype.toJSON = function toJSON () {\n return {type: \"text\", anchor: this.anchor, head: this.head}\n };\n\n TextSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n { throw new RangeError(\"Invalid input for TextSelection.fromJSON\") }\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → TextSelection\n // Create a text selection from non-resolved positions.\n TextSelection.create = function create (doc, anchor, head) {\n if ( head === void 0 ) head = anchor;\n\n var $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head))\n };\n\n // :: (ResolvedPos, ResolvedPos, ?number) → Selection\n // Return a text selection that spans the given positions or, if\n // they aren't text positions, find a text selection near them.\n // `bias` determines whether the method searches forward (default)\n // or backwards (negative number) first. Will fall back to calling\n // [`Selection.near`](#state.Selection^near) when the document\n // doesn't contain a valid text position.\n TextSelection.between = function between ($anchor, $head, bias) {\n var dPos = $anchor.pos - $head.pos;\n if (!bias || dPos) { bias = dPos >= 0 ? 1 : -1; }\n if (!$head.parent.inlineContent) {\n var found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found) { $head = found.$head; }\n else { return Selection.near($head, bias) }\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n } else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0)) { $anchor = $head; }\n }\n }\n return new TextSelection($anchor, $head)\n };\n\n Object.defineProperties( TextSelection.prototype, prototypeAccessors$1 );\n\n return TextSelection;\n}(Selection));\n\nSelection.jsonID(\"text\", TextSelection);\n\nvar TextBookmark = function TextBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nTextBookmark.prototype.map = function map (mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nTextBookmark.prototype.resolve = function resolve (doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head))\n};\n\n// ::- A node selection is a selection that points at a single node.\n// All nodes marked [selectable](#model.NodeSpec.selectable) can be\n// the target of a node selection. In such a selection, `from` and\n// `to` point directly before and after the selected node, `anchor`\n// equals `from`, and `head` equals `to`..\nvar NodeSelection = /*@__PURE__*/(function (Selection) {\n function NodeSelection($pos) {\n var node = $pos.nodeAfter;\n var $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n Selection.call(this, $pos, $end);\n // :: Node The selected node.\n this.node = node;\n }\n\n if ( Selection ) NodeSelection.__proto__ = Selection;\n NodeSelection.prototype = Object.create( Selection && Selection.prototype );\n NodeSelection.prototype.constructor = NodeSelection;\n\n NodeSelection.prototype.map = function map (doc, mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n var $pos = doc.resolve(pos);\n if (deleted) { return Selection.near($pos) }\n return new NodeSelection($pos)\n };\n\n NodeSelection.prototype.content = function content () {\n return new Slice(Fragment.from(this.node), 0, 0)\n };\n\n NodeSelection.prototype.eq = function eq (other) {\n return other instanceof NodeSelection && other.anchor == this.anchor\n };\n\n NodeSelection.prototype.toJSON = function toJSON () {\n return {type: \"node\", anchor: this.anchor}\n };\n\n NodeSelection.prototype.getBookmark = function getBookmark () { return new NodeBookmark(this.anchor) };\n\n NodeSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\")\n { throw new RangeError(\"Invalid input for NodeSelection.fromJSON\") }\n return new NodeSelection(doc.resolve(json.anchor))\n };\n\n // :: (Node, number) → NodeSelection\n // Create a node selection from non-resolved positions.\n NodeSelection.create = function create (doc, from) {\n return new this(doc.resolve(from))\n };\n\n // :: (Node) → bool\n // Determines whether the given node may be selected as a node\n // selection.\n NodeSelection.isSelectable = function isSelectable (node) {\n return !node.isText && node.type.spec.selectable !== false\n };\n\n return NodeSelection;\n}(Selection));\n\nNodeSelection.prototype.visible = false;\n\nSelection.jsonID(\"node\", NodeSelection);\n\nvar NodeBookmark = function NodeBookmark(anchor) {\n this.anchor = anchor;\n};\nNodeBookmark.prototype.map = function map (mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos)\n};\nNodeBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node)) { return new NodeSelection($pos) }\n return Selection.near($pos)\n};\n\n// ::- A selection type that represents selecting the whole document\n// (which can not necessarily be expressed with a text selection, when\n// there are for example leaf block nodes at the start or end of the\n// document).\nvar AllSelection = /*@__PURE__*/(function (Selection) {\n function AllSelection(doc) {\n Selection.call(this, doc.resolve(0), doc.resolve(doc.content.size));\n }\n\n if ( Selection ) AllSelection.__proto__ = Selection;\n AllSelection.prototype = Object.create( Selection && Selection.prototype );\n AllSelection.prototype.constructor = AllSelection;\n\n AllSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n var sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection)) { tr.setSelection(sel); }\n } else {\n Selection.prototype.replace.call(this, tr, content);\n }\n };\n\n AllSelection.prototype.toJSON = function toJSON () { return {type: \"all\"} };\n\n AllSelection.fromJSON = function fromJSON (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.map = function map (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.eq = function eq (other) { return other instanceof AllSelection };\n\n AllSelection.prototype.getBookmark = function getBookmark () { return AllBookmark };\n\n return AllSelection;\n}(Selection));\n\nSelection.jsonID(\"all\", AllSelection);\n\nvar AllBookmark = {\n map: function map() { return this },\n resolve: function resolve(doc) { return new AllSelection(doc) }\n};\n\n// FIXME we'll need some awareness of text direction when scanning for selections\n\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text) {\n if (node.inlineContent) { return TextSelection.create(doc, pos) }\n for (var i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n var child = node.child(i);\n if (!child.isAtom) {\n var inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner) { return inner }\n } else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0))\n }\n pos += child.nodeSize * dir;\n }\n}\n\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n var last = tr.steps.length - 1;\n if (last < startLen) { return }\n var step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) { return }\n var map = tr.mapping.maps[last], end;\n map.forEach(function (_from, _to, _newFrom, newTo) { if (end == null) { end = newTo; } });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nvar UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n\n// ::- An editor state transaction, which can be applied to a state to\n// create an updated state. Use\n// [`EditorState.tr`](#state.EditorState.tr) to create an instance.\n//\n// Transactions track changes to the document (they are a subclass of\n// [`Transform`](#transform.Transform)), but also other state changes,\n// like selection updates and adjustments of the set of [stored\n// marks](#state.EditorState.storedMarks). In addition, you can store\n// metadata properties in a transaction, which are extra pieces of\n// information that client code or plugins can use to describe what a\n// transacion represents, so that they can update their [own\n// state](#state.StateField) accordingly.\n//\n// The [editor view](#view.EditorView) uses a few metadata properties:\n// it will attach a property `\"pointer\"` with the value `true` to\n// selection transactions directly caused by mouse or touch input, and\n// a `\"uiEvent\"` property of that may be `\"paste\"`, `\"cut\"`, or `\"drop\"`.\nvar Transaction = /*@__PURE__*/(function (Transform) {\n function Transaction(state) {\n Transform.call(this, state.doc);\n // :: number\n // The timestamp associated with this transaction, in the same\n // format as `Date.now()`.\n this.time = Date.now();\n this.curSelection = state.selection;\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // :: ?[Mark]\n // The stored marks set by this transaction, if any.\n this.storedMarks = state.storedMarks;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n }\n\n if ( Transform ) Transaction.__proto__ = Transform;\n Transaction.prototype = Object.create( Transform && Transform.prototype );\n Transaction.prototype.constructor = Transaction;\n\n var prototypeAccessors = { selection: { configurable: true },selectionSet: { configurable: true },storedMarksSet: { configurable: true },isGeneric: { configurable: true },scrolledIntoView: { configurable: true } };\n\n // :: Selection\n // The transaction's current selection. This defaults to the editor\n // selection [mapped](#state.Selection.map) through the steps in the\n // transaction, but can be overwritten with\n // [`setSelection`](#state.Transaction.setSelection).\n prototypeAccessors.selection.get = function () {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection\n };\n\n // :: (Selection) → Transaction\n // Update the transaction's current selection. Will determine the\n // selection that the editor gets when the transaction is applied.\n Transaction.prototype.setSelection = function setSelection (selection) {\n if (selection.$from.doc != this.doc)\n { throw new RangeError(\"Selection passed to setSelection must point at the current document\") }\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this\n };\n\n // :: bool\n // Whether the selection was explicitly updated by this transaction.\n prototypeAccessors.selectionSet.get = function () {\n return (this.updated & UPDATED_SEL) > 0\n };\n\n // :: (?[Mark]) → Transaction\n // Set the current stored marks.\n Transaction.prototype.setStoredMarks = function setStoredMarks (marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this\n };\n\n // :: ([Mark]) → Transaction\n // Make sure the current stored marks or, if that is null, the marks\n // at the selection, match the given set of marks. Does nothing if\n // this is already the case.\n Transaction.prototype.ensureMarks = function ensureMarks (marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n { this.setStoredMarks(marks); }\n return this\n };\n\n // :: (Mark) → Transaction\n // Add a mark to the set of stored marks.\n Transaction.prototype.addStoredMark = function addStoredMark (mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: (union) → Transaction\n // Remove a mark or mark type from the set of stored marks.\n Transaction.prototype.removeStoredMark = function removeStoredMark (mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: bool\n // Whether the stored marks were explicitly set for this transaction.\n prototypeAccessors.storedMarksSet.get = function () {\n return (this.updated & UPDATED_MARKS) > 0\n };\n\n Transaction.prototype.addStep = function addStep (step, doc) {\n Transform.prototype.addStep.call(this, step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n };\n\n // :: (number) → Transaction\n // Update the timestamp for the transaction.\n Transaction.prototype.setTime = function setTime (time) {\n this.time = time;\n return this\n };\n\n // :: (Slice) → Transaction\n // Replace the current selection with the given slice.\n Transaction.prototype.replaceSelection = function replaceSelection (slice) {\n this.selection.replace(this, slice);\n return this\n };\n\n // :: (Node, ?bool) → Transaction\n // Replace the selection with the given node. When `inheritMarks` is\n // true and the content is inline, it inherits the marks from the\n // place where it is inserted.\n Transaction.prototype.replaceSelectionWith = function replaceSelectionWith (node, inheritMarks) {\n var selection = this.selection;\n if (inheritMarks !== false)\n { node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none))); }\n selection.replaceWith(this, node);\n return this\n };\n\n // :: () → Transaction\n // Delete the selection.\n Transaction.prototype.deleteSelection = function deleteSelection () {\n this.selection.replace(this);\n return this\n };\n\n // :: (string, from: ?number, to: ?number) → Transaction\n // Replace the given range, or the selection if no range is given,\n // with a text node containing the given string.\n Transaction.prototype.insertText = function insertText (text, from, to) {\n if ( to === void 0 ) to = from;\n\n var schema = this.doc.type.schema;\n if (from == null) {\n if (!text) { return this.deleteSelection() }\n return this.replaceSelectionWith(schema.text(text), true)\n } else {\n if (!text) { return this.deleteRange(from, to) }\n var marks = this.storedMarks;\n if (!marks) {\n var $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty) { this.setSelection(Selection.near(this.selection.$to)); }\n return this\n }\n };\n\n // :: (union, any) → Transaction\n // Store a metadata property in this transaction, keyed either by\n // name or by plugin.\n Transaction.prototype.setMeta = function setMeta (key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this\n };\n\n // :: (union) → any\n // Retrieve a metadata property for a given name or plugin.\n Transaction.prototype.getMeta = function getMeta (key) {\n return this.meta[typeof key == \"string\" ? key : key.key]\n };\n\n // :: bool\n // Returns true if this transaction doesn't contain any metadata,\n // and can thus safely be extended.\n prototypeAccessors.isGeneric.get = function () {\n for (var _ in this.meta) { return false }\n return true\n };\n\n // :: () → Transaction\n // Indicate that the editor should scroll the selection into view\n // when updated to the state produced by this transaction.\n Transaction.prototype.scrollIntoView = function scrollIntoView () {\n this.updated |= UPDATED_SCROLL;\n return this\n };\n\n prototypeAccessors.scrolledIntoView.get = function () {\n return (this.updated & UPDATED_SCROLL) > 0\n };\n\n Object.defineProperties( Transaction.prototype, prototypeAccessors );\n\n return Transaction;\n}(Transform));\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self)\n}\n\nvar FieldDesc = function FieldDesc(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n};\n\nvar baseFields = [\n new FieldDesc(\"doc\", {\n init: function init(config) { return config.doc || config.schema.topNodeType.createAndFill() },\n apply: function apply(tr) { return tr.doc }\n }),\n\n new FieldDesc(\"selection\", {\n init: function init(config, instance) { return config.selection || Selection.atStart(instance.doc) },\n apply: function apply(tr) { return tr.selection }\n }),\n\n new FieldDesc(\"storedMarks\", {\n init: function init(config) { return config.storedMarks || null },\n apply: function apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null }\n }),\n\n new FieldDesc(\"scrollToSelection\", {\n init: function init() { return 0 },\n apply: function apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev }\n })\n];\n\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nvar Configuration = function Configuration(schema, plugins) {\n var this$1 = this;\n\n this.schema = schema;\n this.fields = baseFields.concat();\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n if (plugins) { plugins.forEach(function (plugin) {\n if (this$1.pluginsByKey[plugin.key])\n { throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\") }\n this$1.plugins.push(plugin);\n this$1.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n { this$1.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin)); }\n }); }\n};\n\n// ::- The state of a ProseMirror editor is represented by an object\n// of this type. A state is a persistent data structure—it isn't\n// updated, but rather a new state value is computed from an old one\n// using the [`apply`](#state.EditorState.apply) method.\n//\n// A state holds a number of built-in fields, and plugins can\n// [define](#state.PluginSpec.state) additional fields.\nvar EditorState = function EditorState(config) {\n this.config = config;\n};\n\nvar prototypeAccessors$1 = { schema: { configurable: true },plugins: { configurable: true },tr: { configurable: true } };\n\n// doc:: Node\n// The current document.\n\n// selection:: Selection\n// The selection.\n\n// storedMarks:: ?[Mark]\n// A set of marks to apply to the next input. Will be null when\n// no explicit marks have been set.\n\n// :: Schema\n// The schema of the state's document.\nprototypeAccessors$1.schema.get = function () {\n return this.config.schema\n};\n\n// :: [Plugin]\n// The plugins that are active in this state.\nprototypeAccessors$1.plugins.get = function () {\n return this.config.plugins\n};\n\n// :: (Transaction) → EditorState\n// Apply the given transaction to produce a new state.\nEditorState.prototype.apply = function apply (tr) {\n return this.applyTransaction(tr).state\n};\n\n// : (Transaction) → bool\nEditorState.prototype.filterTransaction = function filterTransaction (tr, ignore) {\n if ( ignore === void 0 ) ignore = -1;\n\n for (var i = 0; i < this.config.plugins.length; i++) { if (i != ignore) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n { return false }\n } }\n return true\n};\n\n// :: (Transaction) → {state: EditorState, transactions: [Transaction]}\n// Verbose variant of [`apply`](#state.EditorState.apply) that\n// returns the precise transactions that were applied (which might\n// be influenced by the [transaction\n// hooks](#state.PluginSpec.filterTransaction) of\n// plugins) along with the new state.\nEditorState.prototype.applyTransaction = function applyTransaction (rootTr) {\n if (!this.filterTransaction(rootTr)) { return {state: this, transactions: []} }\n\n var trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n var haveNew = false;\n for (var i = 0; i < this.config.plugins.length; i++) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n var n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n var tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (var j = 0; j < this.config.plugins.length; j++)\n { seen.push(j < i ? {state: newState, n: trs.length} : {state: this, n: 0}); }\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen) { seen[i] = {state: newState, n: trs.length}; }\n }\n }\n if (!haveNew) { return {state: newState, transactions: trs} }\n }\n};\n\n// : (Transaction) → EditorState\nEditorState.prototype.applyInner = function applyInner (tr) {\n if (!tr.before.eq(this.doc)) { throw new RangeError(\"Applying a mismatched transaction\") }\n var newInstance = new EditorState(this.config), fields = this.config.fields;\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n for (var i$1 = 0; i$1 < applyListeners.length; i$1++) { applyListeners[i$1](this, tr, newInstance); }\n return newInstance\n};\n\n// :: Transaction\n// Start a [transaction](#state.Transaction) from this state.\nprototypeAccessors$1.tr.get = function () { return new Transaction(this) };\n\n// :: (Object) → EditorState\n// Create a new state.\n//\n// config::- Configuration options. Must contain `schema` or `doc` (or both).\n//\n// schema:: ?Schema\n// The schema to use (only relevant if no `doc` is specified).\n//\n// doc:: ?Node\n// The starting document.\n//\n// selection:: ?Selection\n// A valid selection in the document.\n//\n// storedMarks:: ?[Mark]\n// The initial set of [stored marks](#state.EditorState.storedMarks).\n//\n// plugins:: ?[Plugin]\n// The plugins that should be active in this state.\nEditorState.create = function create (config) {\n var $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n var instance = new EditorState($config);\n for (var i = 0; i < $config.fields.length; i++)\n { instance[$config.fields[i].name] = $config.fields[i].init(config, instance); }\n return instance\n};\n\n// :: (Object) → EditorState\n// Create a new state based on this one, but with an adjusted set of\n// active plugins. State fields that exist in both sets of plugins\n// are kept unchanged. Those that no longer exist are dropped, and\n// those that are new are initialized using their\n// [`init`](#state.StateField.init) method, passing in the new\n// configuration object..\n//\n// config::- configuration options\n//\n// plugins:: [Plugin]\n// New set of active plugins.\nEditorState.prototype.reconfigure = function reconfigure (config) {\n var $config = new Configuration(this.schema, config.plugins);\n var fields = $config.fields, instance = new EditorState($config);\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance\n};\n\n// :: (?union, string, number>) → Object\n// Serialize this state to JSON. If you want to serialize the state\n// of plugins, pass an object mapping property names to use in the\n// resulting JSON object to plugin objects. The argument may also be\n// a string or number, in which case it is ignored, to support the\n// way `JSON.stringify` calls `toString` methods.\nEditorState.prototype.toJSON = function toJSON (pluginFields) {\n var result = {doc: this.doc.toJSON(), selection: this.selection.toJSON()};\n if (this.storedMarks) { result.storedMarks = this.storedMarks.map(function (m) { return m.toJSON(); }); }\n if (pluginFields && typeof pluginFields == 'object') { for (var prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n { throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\") }\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON) { result[prop] = state.toJSON.call(plugin, this[plugin.key]); }\n } }\n return result\n};\n\n// :: (Object, Object, ?Object) → EditorState\n// Deserialize a JSON representation of a state. `config` should\n// have at least a `schema` field, and should contain array of\n// plugins to initialize the state with. `pluginFields` can be used\n// to deserialize the state of plugins, by associating plugin\n// instances with the property names they use in the JSON object.\n//\n// config::- configuration options\n//\n// schema:: Schema\n// The schema to use.\n//\n// plugins:: ?[Plugin]\n// The set of active plugins.\nEditorState.fromJSON = function fromJSON (config, json, pluginFields) {\n if (!json) { throw new RangeError(\"Invalid input for EditorState.fromJSON\") }\n if (!config.schema) { throw new RangeError(\"Required config field 'schema' missing\") }\n var $config = new Configuration(config.schema, config.plugins);\n var instance = new EditorState($config);\n $config.fields.forEach(function (field) {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n } else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n } else if (field.name == \"storedMarks\") {\n if (json.storedMarks) { instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON); }\n } else {\n if (pluginFields) { for (var prop in pluginFields) {\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n // This field belongs to a plugin mapped to a JSON field, read it from there.\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return\n }\n } }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance\n};\n\n// Kludge to allow the view to track mappings between different\n// instances of a state.\n//\n// FIXME this is no longer needed as of prosemirror-view 1.9.0,\n// though due to backwards-compat we should probably keep it around\n// for a while (if only as a no-op)\nEditorState.addApplyListener = function addApplyListener (f) {\n applyListeners.push(f);\n};\nEditorState.removeApplyListener = function removeApplyListener (f) {\n var found = applyListeners.indexOf(f);\n if (found > -1) { applyListeners.splice(found, 1); }\n};\n\nObject.defineProperties( EditorState.prototype, prototypeAccessors$1 );\n\nvar applyListeners = [];\n\n// PluginSpec:: interface\n//\n// This is the type passed to the [`Plugin`](#state.Plugin)\n// constructor. It provides a definition for a plugin.\n//\n// props:: ?EditorProps\n// The [view props](#view.EditorProps) added by this plugin. Props\n// that are functions will be bound to have the plugin instance as\n// their `this` binding.\n//\n// state:: ?StateField\n// Allows a plugin to define a [state field](#state.StateField), an\n// extra slot in the state object in which it can keep its own data.\n//\n// key:: ?PluginKey\n// Can be used to make this a keyed plugin. You can have only one\n// plugin with a given key in a given state, but it is possible to\n// access the plugin's configuration and state through the key,\n// without having access to the plugin instance object.\n//\n// view:: ?(EditorView) → Object\n// When the plugin needs to interact with the editor view, or\n// set something up in the DOM, use this field. The function\n// will be called when the plugin's state is associated with an\n// editor view.\n//\n// return::-\n// Should return an object with the following optional\n// properties:\n//\n// update:: ?(view: EditorView, prevState: EditorState)\n// Called whenever the view's state is updated.\n//\n// destroy:: ?()\n// Called when the view is destroyed or receives a state\n// with different plugins.\n//\n// filterTransaction:: ?(Transaction, EditorState) → bool\n// When present, this will be called before a transaction is\n// applied by the state, allowing the plugin to cancel it (by\n// returning false).\n//\n// appendTransaction:: ?(transactions: [Transaction], oldState: EditorState, newState: EditorState) → ?Transaction\n// Allows the plugin to append another transaction to be applied\n// after the given array of transactions. When another plugin\n// appends a transaction after this was called, it is called again\n// with the new state and new transactions—but only the new\n// transactions, i.e. it won't be passed transactions that it\n// already saw.\n\nfunction bindProps(obj, self, target) {\n for (var prop in obj) {\n var val = obj[prop];\n if (val instanceof Function) { val = val.bind(self); }\n else if (prop == \"handleDOMEvents\") { val = bindProps(val, self, {}); }\n target[prop] = val;\n }\n return target\n}\n\n// ::- Plugins bundle functionality that can be added to an editor.\n// They are part of the [editor state](#state.EditorState) and\n// may influence that state and the view that contains it.\nvar Plugin = function Plugin(spec) {\n // :: EditorProps\n // The [props](#view.EditorProps) exported by this plugin.\n this.props = {};\n if (spec.props) { bindProps(spec.props, this, this.props); }\n // :: Object\n // The plugin's [spec object](#state.PluginSpec).\n this.spec = spec;\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n};\n\n// :: (EditorState) → any\n// Extract the plugin's state field from an editor state.\nPlugin.prototype.getState = function getState (state) { return state[this.key] };\n\n// StateField:: interface\n// A plugin spec may provide a state field (under its\n// [`state`](#state.PluginSpec.state) property) of this type, which\n// describes the state it wants to keep. Functions provided here are\n// always called with the plugin instance as their `this` binding.\n//\n// init:: (config: Object, instance: EditorState) → T\n// Initialize the value of the field. `config` will be the object\n// passed to [`EditorState.create`](#state.EditorState^create). Note\n// that `instance` is a half-initialized state instance, and will\n// not have values for plugin fields initialized after this one.\n//\n// apply:: (tr: Transaction, value: T, oldState: EditorState, newState: EditorState) → T\n// Apply the given transaction to this state field, producing a new\n// field value. Note that the `newState` argument is again a partially\n// constructed state does not yet contain the state from plugins\n// coming after this one.\n//\n// toJSON:: ?(value: T) → *\n// Convert this field to JSON. Optional, can be left off to disable\n// JSON serialization for the field.\n//\n// fromJSON:: ?(config: Object, value: *, state: EditorState) → T\n// Deserialize the JSON representation of this field. Note that the\n// `state` argument is again a half-initialized state.\n\nvar keys = Object.create(null);\n\nfunction createKey(name) {\n if (name in keys) { return name + \"$\" + ++keys[name] }\n keys[name] = 0;\n return name + \"$\"\n}\n\n// ::- A key is used to [tag](#state.PluginSpec.key)\n// plugins in a way that makes it possible to find them, given an\n// editor state. Assigning a key does mean only one plugin of that\n// type can be active in a state.\nvar PluginKey = function PluginKey(name) {\nif ( name === void 0 ) name = \"key\";\n this.key = createKey(name); };\n\n// :: (EditorState) → ?Plugin\n// Get the active plugin with this key, if any, from an editor\n// state.\nPluginKey.prototype.get = function get (state) { return state.config.pluginsByKey[this.key] };\n\n// :: (EditorState) → ?any\n// Get the plugin's state from an editor state.\nPluginKey.prototype.getState = function getState (state) { return state[this.key] };\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","import { PluginKey, TextSelection, Selection, SelectionRange, NodeSelection, Plugin } from 'prosemirror-state';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { keydownHandler } from 'prosemirror-keymap';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { Transform } from 'prosemirror-transform';\n\n// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\n\nvar readFromCache, addToCache;\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap != \"undefined\") {\n var cache = new WeakMap;\n readFromCache = function (key) { return cache.get(key); };\n addToCache = function (key, value) {\n cache.set(key, value);\n return value\n };\n} else {\n var cache$1 = [], cacheSize = 10, cachePos = 0;\n readFromCache = function (key) {\n for (var i = 0; i < cache$1.length; i += 2)\n { if (cache$1[i] == key) { return cache$1[i + 1] } }\n };\n addToCache = function (key, value) {\n if (cachePos == cacheSize) { cachePos = 0; }\n cache$1[cachePos++] = key;\n return cache$1[cachePos++] = value\n };\n}\n\nvar Rect = function Rect(left, top, right, bottom) {\n this.left = left; this.top = top; this.right = right; this.bottom = bottom;\n};\n\n// ::- A table map describes the structore of a given table. To avoid\n// recomputing them all the time, they are cached per table node. To\n// be able to do that, positions saved in the map are relative to the\n// start of the table, rather than the start of the document.\nvar TableMap = function TableMap(width, height, map, problems) {\n // :: number The width of the table\n this.width = width;\n // :: number The table's height\n this.height = height;\n // :: [number] A width * height array with the start position of\n // the cell covering that part of the table in each slot\n this.map = map;\n // An optional array of problems (cell overlap or non-rectangular\n // shape) for the table, used by the table normalizer.\n this.problems = problems;\n};\n\n// :: (number) → Rect\n// Find the dimensions of the cell at the given position.\nTableMap.prototype.findCell = function findCell (pos) {\n for (var i = 0; i < this.map.length; i++) {\n var curPos = this.map[i];\n if (curPos != pos) { continue }\n var left = i % this.width, top = (i / this.width) | 0;\n var right = left + 1, bottom = top + 1;\n for (var j = 1; right < this.width && this.map[i + j] == curPos; j++) { right++; }\n for (var j$1 = 1; bottom < this.height && this.map[i + (this.width * j$1)] == curPos; j$1++) { bottom++; }\n return new Rect(left, top, right, bottom)\n }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number) → number\n// Find the left side of the cell at the given position.\nTableMap.prototype.colCount = function colCount (pos) {\n for (var i = 0; i < this.map.length; i++)\n { if (this.map[i] == pos) { return i % this.width } }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number, string, number) → ?number\n// Find the next cell in the given direction, starting from the cell\n// at `pos`, if any.\nTableMap.prototype.nextCell = function nextCell (pos, axis, dir) {\n var ref = this.findCell(pos);\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n var bottom = ref.bottom;\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width) { return null }\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)]\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) { return null }\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)]\n }\n};\n\n// :: (number, number) → Rect\n// Get the rectangle spanning the two given cells.\nTableMap.prototype.rectBetween = function rectBetween (a, b) {\n var ref = this.findCell(a);\n var leftA = ref.left;\n var rightA = ref.right;\n var topA = ref.top;\n var bottomA = ref.bottom;\n var ref$1 = this.findCell(b);\n var leftB = ref$1.left;\n var rightB = ref$1.right;\n var topB = ref$1.top;\n var bottomB = ref$1.bottom;\n return new Rect(Math.min(leftA, leftB), Math.min(topA, topB),\n Math.max(rightA, rightB), Math.max(bottomA, bottomB))\n};\n\n// :: (Rect) → [number]\n// Return the position of all cells that have the top left corner in\n// the given rectangle.\nTableMap.prototype.cellsInRect = function cellsInRect (rect) {\n var result = [], seen = {};\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var index = row * this.width + col, pos = this.map[index];\n if (seen[pos]) { continue }\n seen[pos] = true;\n if ((col != rect.left || !col || this.map[index - 1] != pos) &&\n (row != rect.top || !row || this.map[index - this.width] != pos))\n { result.push(pos); }\n }\n }\n return result\n};\n\n// :: (number, number, Node) → number\n// Return the position at which the cell at the given row and column\n// starts, or would start, if a cell started there.\nTableMap.prototype.positionAt = function positionAt (row, col, table) {\n for (var i = 0, rowStart = 0;; i++) {\n var rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n var index = col + row * this.width, rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) { index++; }\n return index == rowEndIndex ? rowEnd - 1 : this.map[index]\n }\n rowStart = rowEnd;\n }\n};\n\n// :: (Node) → TableMap\n// Find the table map for the given table node.\nTableMap.get = function get (table) {\n return readFromCache(table) || addToCache(table, computeMap(table))\n};\n\n// Compute a table map.\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\") { throw new RangeError(\"Not a table node: \" + table.type.name) }\n var width = findWidth(table), height = table.childCount;\n var map = [], mapPos = 0, problems = null, colWidths = [];\n for (var i = 0, e = width * height; i < e; i++) { map[i] = 0; }\n\n for (var row = 0, pos = 0; row < height; row++) {\n var rowNode = table.child(row);\n pos++;\n for (var i$1 = 0;; i$1++) {\n while (mapPos < map.length && map[mapPos] != 0) { mapPos++; }\n if (i$1 == rowNode.childCount) { break }\n var cellNode = rowNode.child(i$1);\n var ref = cellNode.attrs;\n var colspan = ref.colspan;\n var rowspan = ref.rowspan;\n var colwidth = ref.colwidth;\n for (var h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({type: \"overlong_rowspan\", pos: pos, n: rowspan - h});\n break\n }\n var start = mapPos + (h * width);\n for (var w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n { map[start + w] = pos; }\n else\n { (problems || (problems = [])).push({type: \"collision\", row: row, pos: pos, n: colspan - w}); }\n var colW = colwidth && colwidth[w];\n if (colW) {\n var widthIndex = ((start + w) % width) * 2, prev = colWidths[widthIndex];\n if (prev == null || (prev != colW && colWidths[widthIndex + 1] == 1)) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n var expectedPos = (row + 1) * width, missing = 0;\n while (mapPos < expectedPos) { if (map[mapPos++] == 0) { missing++; } }\n if (missing) { (problems || (problems = [])).push({type: \"missing\", row: row, n: missing}); }\n pos++;\n }\n\n var tableMap = new TableMap(width, height, map, problems), badWidths = false;\n\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (var i$2 = 0; !badWidths && i$2 < colWidths.length; i$2 += 2)\n { if (colWidths[i$2] != null && colWidths[i$2 + 1] < height) { badWidths = true; } }\n if (badWidths) { findBadColWidths(tableMap, colWidths, table); }\n\n return tableMap\n}\n\nfunction findWidth(table) {\n var width = -1, hasRowSpan = false;\n for (var row = 0; row < table.childCount; row++) {\n var rowNode = table.child(row), rowWidth = 0;\n if (hasRowSpan) { for (var j = 0; j < row; j++) {\n var prevRow = table.child(j);\n for (var i = 0; i < prevRow.childCount; i++) {\n var cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) { rowWidth += cell.attrs.colspan; }\n }\n } }\n for (var i$1 = 0; i$1 < rowNode.childCount; i$1++) {\n var cell$1 = rowNode.child(i$1);\n rowWidth += cell$1.attrs.colspan;\n if (cell$1.attrs.rowspan > 1) { hasRowSpan = true; }\n }\n if (width == -1)\n { width = rowWidth; }\n else if (width != rowWidth)\n { width = Math.max(width, rowWidth); }\n }\n return width\n}\n\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems) { map.problems = []; }\n for (var i = 0, seen = {}; i < map.map.length; i++) {\n var pos = map.map[i];\n if (seen[pos]) { continue }\n seen[pos] = true;\n var node = table.nodeAt(pos), updated = null;\n for (var j = 0; j < node.attrs.colspan; j++) {\n var col = (i + j) % map.width, colWidth = colWidths[col * 2];\n if (colWidth != null && (!node.attrs.colwidth || node.attrs.colwidth[j] != colWidth))\n { (updated || (updated = freshColWidth(node.attrs)))[j] = colWidth; }\n }\n if (updated) { map.problems.unshift({type: \"colwidth mismatch\", pos: pos, colwidth: updated}); }\n }\n}\n\nfunction freshColWidth(attrs) {\n if (attrs.colwidth) { return attrs.colwidth.slice() }\n var result = [];\n for (var i = 0; i < attrs.colspan; i++) { result.push(0); }\n return result\n}\n\n// Helper for creating a schema that supports tables.\n\nfunction getCellAttrs(dom, extraAttrs) {\n var widthAttr = dom.getAttribute(\"data-colwidth\");\n var widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map(function (s) { return Number(s); }) : null;\n var colspan = Number(dom.getAttribute(\"colspan\") || 1);\n var result = {\n colspan: colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (var prop in extraAttrs) {\n var getter = extraAttrs[prop].getFromDOM;\n var value = getter && getter(dom);\n if (value != null) { result[prop] = value; }\n }\n return result\n}\n\nfunction setCellAttrs(node, extraAttrs) {\n var attrs = {};\n if (node.attrs.colspan != 1) { attrs.colspan = node.attrs.colspan; }\n if (node.attrs.rowspan != 1) { attrs.rowspan = node.attrs.rowspan; }\n if (node.attrs.colwidth)\n { attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\"); }\n for (var prop in extraAttrs) {\n var setter = extraAttrs[prop].setDOMAttr;\n if (setter) { setter(node.attrs[prop], attrs); }\n }\n return attrs\n}\n\n// :: (Object) → Object\n//\n// This function creates a set of [node\n// specs](http://prosemirror.net/docs/ref/#model.SchemaSpec.nodes) for\n// `table`, `table_row`, and `table_cell` nodes types as used by this\n// module. The result can then be added to the set of nodes when\n// creating a a schema.\n//\n// options::- The following options are understood:\n//\n// tableGroup:: ?string\n// A group name (something like `\"block\"`) to add to the table\n// node type.\n//\n// cellContent:: string\n// The content expression for table cells.\n//\n// cellAttributes:: ?Object\n// Additional attributes to add to cells. Maps attribute names to\n// objects with the following properties:\n//\n// default:: any\n// The attribute's default value.\n//\n// getFromDOM:: ?(dom.Node) → any\n// A function to read the attribute's value from a DOM node.\n//\n// setDOMAttr:: ?(value: any, attrs: Object)\n// A function to add the attribute's value to an attribute\n// object that's used to render the cell's DOM.\nfunction tableNodes(options) {\n var extraAttrs = options.cellAttributes || {};\n var cellAttrs = {\n colspan: {default: 1},\n rowspan: {default: 1},\n colwidth: {default: null}\n };\n for (var prop in extraAttrs)\n { cellAttrs[prop] = {default: extraAttrs[prop].default}; }\n\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{tag: \"table\"}],\n toDOM: function toDOM() { return [\"table\", [\"tbody\", 0]] }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{tag: \"tr\"}],\n toDOM: function toDOM() { return [\"tr\", 0] }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [{tag: \"td\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"td\", setCellAttrs(node, extraAttrs), 0] }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [{tag: \"th\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"th\", setCellAttrs(node, extraAttrs), 0] }\n }\n }\n}\n\nfunction tableNodeTypes(schema) {\n var result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (var name in schema.nodes) {\n var type = schema.nodes[name], role = type.spec.tableRole;\n if (role) { result[role] = type; }\n }\n }\n return result\n}\n\n// Various helper function for working with tables\n\nvar key = new PluginKey(\"selectingCells\");\n\nfunction cellAround($pos) {\n for (var d = $pos.depth - 1; d > 0; d--)\n { if ($pos.node(d).type.spec.tableRole == \"row\") { return $pos.node(0).resolve($pos.before(d + 1)) } }\n return null\n}\n\nfunction cellWrapping($pos) {\n for (var d = $pos.depth; d > 0; d--) { // Sometimes the cell can be in the same depth.\n var role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === 'header_cell') { return $pos.node(d) }\n }\n return null\n}\n\nfunction isInTable(state) {\n var $head = state.selection.$head;\n for (var d = $head.depth; d > 0; d--) { if ($head.node(d).type.spec.tableRole == \"row\") { return true } }\n return false\n}\n\nfunction selectionCell(state) {\n var sel = state.selection;\n if (sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor\n }\n return cellAround(sel.$head) || cellNear(sel.$head)\n}\n\nfunction cellNear($pos) {\n for (var after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n var role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\") { return $pos.doc.resolve(pos) }\n }\n for (var before = $pos.nodeBefore, pos$1 = $pos.pos; before; before = before.lastChild, pos$1--) {\n var role$1 = before.type.spec.tableRole;\n if (role$1 == \"cell\" || role$1 == \"header_cell\") { return $pos.doc.resolve(pos$1 - before.nodeSize) }\n }\n}\n\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && $pos.nodeAfter\n}\n\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize)\n}\n\nfunction inSameTable($a, $b) {\n return $a.depth == $b.depth && $a.pos >= $b.start(-1) && $a.pos <= $b.end(-1)\n}\n\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1))\n}\n\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1))\n}\n\nfunction nextCell($pos, axis, dir) {\n var start = $pos.start(-1), map = TableMap.get($pos.node(-1));\n var moved = map.nextCell($pos.pos - start, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(start + moved)\n}\n\nfunction setAttr(attrs, name, value) {\n var result = {};\n for (var prop in attrs) { result[prop] = attrs[prop]; }\n result[name] = value;\n return result\n}\n\nfunction removeColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan - n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some(function (w) { return w > 0; })) { result.colwidth = null; }\n }\n return result\n}\n\nfunction addColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan + n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (var i = 0; i < n; i++) { result.colwidth.splice(pos, 0, 0); }\n }\n return result\n}\n\nfunction columnIsHeader(map, table, col) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var row = 0; row < map.height; row++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\n// This file defines a ProseMirror selection subclass that models\n\n// ::- A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n// subclass that represents a cell selection spanning part of a table.\n// With the plugin enabled, these will be created when the user\n// selects across cells, and will be drawn by giving selected cells a\n// `selectedCell` CSS class.\nvar CellSelection = /*@__PURE__*/(function (Selection) {\n function CellSelection($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var table = $anchorCell.node(-1), map = TableMap.get(table), start = $anchorCell.start(-1);\n var rect = map.rectBetween($anchorCell.pos - start, $headCell.pos - start);\n var doc = $anchorCell.node(0);\n var cells = map.cellsInRect(rect).filter(function (p) { return p != $headCell.pos - start; });\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - start);\n var ranges = cells.map(function (pos) {\n var cell = table.nodeAt(pos), from = pos + start + 1;\n return new SelectionRange(doc.resolve(from), doc.resolve(from + cell.content.size))\n });\n Selection.call(this, ranges[0].$from, ranges[0].$to, ranges);\n // :: ResolvedPos\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n this.$anchorCell = $anchorCell;\n // :: ResolvedPos\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n this.$headCell = $headCell;\n }\n\n if ( Selection ) CellSelection.__proto__ = Selection;\n CellSelection.prototype = Object.create( Selection && Selection.prototype );\n CellSelection.prototype.constructor = CellSelection;\n\n CellSelection.prototype.map = function map (doc, mapping) {\n var $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n var $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n var tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n { return CellSelection.rowSelection($anchorCell, $headCell) }\n else if (tableChanged && this.isColSelection())\n { return CellSelection.colSelection($anchorCell, $headCell) }\n else\n { return new CellSelection($anchorCell, $headCell) }\n }\n return TextSelection.between($anchorCell, $headCell)\n };\n\n // :: () → Slice\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n CellSelection.prototype.content = function content () {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var rect = map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start);\n var seen = {}, rows = [];\n for (var row = rect.top; row < rect.bottom; row++) {\n var rowContent = [];\n for (var index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n var pos = map.map[index];\n if (!seen[pos]) {\n seen[pos] = true;\n var cellRect = map.findCell(pos), cell = table.nodeAt(pos);\n var extraLeft = rect.left - cellRect.left, extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n var attrs = cell.attrs;\n if (extraLeft > 0) { attrs = removeColSpan(attrs, 0, extraLeft); }\n if (extraRight > 0) { attrs = removeColSpan(attrs, attrs.colspan - extraRight, extraRight); }\n if (cellRect.left < rect.left) { cell = cell.type.createAndFill(attrs); }\n else { cell = cell.type.create(attrs, cell.content); }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n var attrs$1 = setAttr(cell.attrs, \"rowspan\", Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top));\n if (cellRect.top < rect.top) { cell = cell.type.createAndFill(attrs$1); }\n else { cell = cell.type.create(attrs$1, cell.content); }\n }\n rowContent.push(cell);\n }\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n\n var fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1)\n };\n\n CellSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replace(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n }\n var sel = Selection.findFrom(tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)), -1);\n if (sel) { tr.setSelection(sel); }\n };\n\n CellSelection.prototype.replaceWith = function replaceWith (tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n };\n\n CellSelection.prototype.forEachCell = function forEachCell (f) {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var cells = map.cellsInRect(map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start));\n for (var i = 0; i < cells.length; i++)\n { f(table.nodeAt(cells[i]), start + cells[i]); }\n };\n\n // :: () → bool\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n CellSelection.prototype.isColSelection = function isColSelection () {\n var anchorTop = this.$anchorCell.index(-1), headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) { return false }\n var anchorBot = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan,\n headBot = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBot, headBot) == this.$headCell.node(-1).childCount\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n CellSelection.colSelection = function colSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.left]); }\n if (headRect.bottom < map.height)\n { $headCell = doc.resolve(start + map.map[map.width * (map.height - 1) + headRect.right - 1]); }\n } else {\n if (headRect.top > 0)\n { $headCell = doc.resolve(start + map.map[headRect.left]); }\n if (anchorRect.bottom < map.height)\n { $anchorCell = doc.resolve(start + map.map[map.width * (map.height - 1) + anchorRect.right - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n // :: () → bool\n // True if this selection goes all the way from the left to the\n // right of the table.\n CellSelection.prototype.isRowSelection = function isRowSelection () {\n var map = TableMap.get(this.$anchorCell.node(-1)), start = this.$anchorCell.start(-1);\n var anchorLeft = map.colCount(this.$anchorCell.pos - start),\n headLeft = map.colCount(this.$headCell.pos - start);\n if (Math.min(anchorLeft, headLeft) > 0) { return false }\n var anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan,\n headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width\n };\n\n CellSelection.prototype.eq = function eq (other) {\n return other instanceof CellSelection && other.$anchorCell.pos == this.$anchorCell.pos &&\n other.$headCell.pos == this.$headCell.pos\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n CellSelection.rowSelection = function rowSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.top * map.width]); }\n if (headRect.right < map.width)\n { $headCell = doc.resolve(start + map.map[map.width * (headRect.top + 1) - 1]); }\n } else {\n if (headRect.left > 0)\n { $headCell = doc.resolve(start + map.map[headRect.top * map.width]); }\n if (anchorRect.right < map.width)\n { $anchorCell = doc.resolve(start + map.map[map.width * (anchorRect.top + 1) - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n CellSelection.prototype.toJSON = function toJSON () {\n return {type: \"cell\", anchor: this.$anchorCell.pos, head: this.$headCell.pos}\n };\n\n CellSelection.fromJSON = function fromJSON (doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → CellSelection\n CellSelection.create = function create (doc, anchorCell, headCell) {\n if ( headCell === void 0 ) headCell = anchorCell;\n\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell))\n };\n\n CellSelection.prototype.getBookmark = function getBookmark () { return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos) };\n\n return CellSelection;\n}(Selection));\n\nCellSelection.prototype.visible = false;\n\nSelection.jsonID(\"cell\", CellSelection);\n\nvar CellBookmark = function CellBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nCellBookmark.prototype.map = function map (mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nCellBookmark.prototype.resolve = function resolve (doc) {\n var $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" &&\n $headCell.parent.type.spec.tableRole == \"row\" &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell))\n { return new CellSelection($anchorCell, $headCell) }\n else\n { return Selection.near($headCell, 1) }\n};\n\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection)) { return null }\n var cells = [];\n state.selection.forEachCell(function (node, pos) {\n cells.push(Decoration.node(pos, pos + node.nodeSize, {class: \"selectedCell\"}));\n });\n return DecorationSet.create(state.doc, cells)\n}\n\nfunction isCellBoundarySelection(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6) { return false } // Cheap elimination\n var afterFrom = $from.pos, beforeTo = $to.pos, depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n { if ($from.after(depth + 1) < $from.end(depth)) { break } }\n for (var d = $to.depth; d >= 0; d--, beforeTo--)\n { if ($to.before(d + 1) > $to.start(d)) { break } }\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole)\n}\n\nfunction isTextSelectionAcrossCells(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n var fromCellBoundaryNode;\n var toCellBoundaryNode;\n\n for (var i = $from.depth; i > 0; i--) {\n var node = $from.node(i);\n if (node.type.spec.tableRole === 'cell' || node.type.spec.tableRole === 'header_cell') {\n fromCellBoundaryNode = node;\n break;\n }\n }\n\n for (var i$1 = $to.depth; i$1 > 0; i$1--) {\n var node$1 = $to.node(i$1);\n if (node$1.type.spec.tableRole === 'cell' || node$1.type.spec.tableRole === 'header_cell') {\n toCellBoundaryNode = node$1;\n break;\n }\n }\n\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0\n}\n\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n var sel = (tr || state).selection, doc = (tr || state).doc, normalize, role;\n if (sel instanceof NodeSelection && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n var $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n var map = TableMap.get(sel.node), start = sel.from + 1;\n var lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n { (tr || (tr = state.tr)).setSelection(normalize); }\n return tr\n}\n\n// Utilities used for copy/paste handling.\n\n// Utilities to help with copying and pasting table cells\n\n// : (Slice) → ?{width: number, height: number, rows: [Fragment]}\n// Get a rectangular area of cells from a slice, or null if the outer\n// nodes of the slice aren't table cells or rows.\nfunction pastedCells(slice) {\n if (!slice.size) { return null }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.firstChild.type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.firstChild.content;\n }\n var first = content.firstChild, role = first.type.spec.tableRole;\n var schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (var i = 0; i < content.childCount; i++) {\n var cells = content.child(i).content;\n var left = i ? 0 : Math.max(0, openStart - 1);\n var right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right) { cells = fitSlice(tableNodeTypes(schema).row, new Slice(cells, left, right)).content; }\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(openStart || openEnd ? fitSlice(tableNodeTypes(schema).row, new Slice(content, openStart, openEnd)).content : content);\n } else {\n return null\n }\n return ensureRectangular(schema, rows)\n}\n\n// : (Schema, [Fragment]) → {width: number, height: number, rows: [Fragment]}\n// Compute the width and height of a set of cells, and make sure each\n// row has the same number of cells.\nfunction ensureRectangular(schema, rows) {\n var widths = [];\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = row.childCount - 1; j >= 0; j--) {\n var ref = row.child(j).attrs;\n var rowspan = ref.rowspan;\n var colspan = ref.colspan;\n for (var r = i; r < i + rowspan; r++)\n { widths[r] = (widths[r] || 0) + colspan; }\n }\n }\n var width = 0;\n for (var r$1 = 0; r$1 < widths.length; r$1++) { width = Math.max(width, widths[r$1]); }\n for (var r$2 = 0; r$2 < widths.length; r$2++) {\n if (r$2 >= rows.length) { rows.push(Fragment.empty); }\n if (widths[r$2] < width) {\n var empty = tableNodeTypes(schema).cell.createAndFill(), cells = [];\n for (var i$1 = widths[r$2]; i$1 < width; i$1++) { cells.push(empty); }\n rows[r$2] = rows[r$2].append(Fragment.from(cells));\n }\n }\n return {height: rows.length, width: width, rows: rows}\n}\n\nfunction fitSlice(nodeType, slice) {\n var node = nodeType.createAndFill();\n var tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc\n}\n\n// : ({width: number, height: number, rows: [Fragment]}, number, number) → {width: number, height: number, rows: [Fragment]}\n// Clip or extend (repeat) the given set of cells to cover the given\n// width and height. Will clip rowspan/colspan cells at the edges when\n// they stick out.\nfunction clipCells(ref, newWidth, newHeight) {\n var width = ref.width;\n var height = ref.height;\n var rows = ref.rows;\n\n if (width != newWidth) {\n var added = [], newRows = [];\n for (var row = 0; row < rows.length; row++) {\n var frag = rows[row], cells = [];\n for (var col = added[row] || 0, i = 0; col < newWidth; i++) {\n var cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n { cell = cell.type.create(removeColSpan(cell.attrs, cell.attrs.colspan, col + cell.attrs.colspan - newWidth), cell.content); }\n cells.push(cell);\n col += cell.attrs.colspan;\n for (var j = 1; j < cell.attrs.rowspan; j++)\n { added[row + j] = (added[row + j] || 0) + cell.attrs.colspan; }\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n\n if (height != newHeight) {\n var newRows$1 = [];\n for (var row$1 = 0, i$1 = 0; row$1 < newHeight; row$1++, i$1++) {\n var cells$1 = [], source = rows[i$1 % height];\n for (var j$1 = 0; j$1 < source.childCount; j$1++) {\n var cell$1 = source.child(j$1);\n if (row$1 + cell$1.attrs.rowspan > newHeight)\n { cell$1 = cell$1.type.create(setAttr(cell$1.attrs, \"rowspan\", Math.max(1, newHeight - cell$1.attrs.rowspan)), cell$1.content); }\n cells$1.push(cell$1);\n }\n newRows$1.push(Fragment.from(cells$1));\n }\n rows = newRows$1;\n height = newHeight;\n }\n\n return {width: width, height: height, rows: rows}\n}\n\n// Make sure a table has at least the given width and height. Return\n// true if something was changed.\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n var schema = tr.doc.type.schema, types = tableNodeTypes(schema), empty, emptyHead;\n if (width > map.width) {\n for (var row = 0, rowEnd = 0; row < map.height; row++) {\n var rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n var cells = [], add = (void 0);\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n { add = empty || (empty = types.cell.createAndFill()); }\n else\n { add = emptyHead || (emptyHead = types.header_cell.createAndFill()); }\n for (var i = map.width; i < width; i++) { cells.push(add); }\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n var cells$1 = [];\n for (var i$1 = 0, start$1 = (map.height - 1) * map.width; i$1 < Math.max(map.width, width); i$1++) {\n var header = i$1 >= map.width ? false :\n table.nodeAt(map.map[start$1 + i$1]).type == types.header_cell;\n cells$1.push(header\n ? (emptyHead || (emptyHead = types.header_cell.createAndFill()))\n : (empty || (empty = types.cell.createAndFill())));\n }\n\n var emptyRow = types.row.create(null, Fragment.from(cells$1)), rows = [];\n for (var i$2 = map.height; i$2 < height; i$2++) { rows.push(emptyRow); }\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead)\n}\n\n// Make sure the given line (left, top) to (right, top) doesn't cross\n// any rowspan cells by splitting cells that cross it. Return true if\n// something changed.\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height) { return false }\n var found = false;\n for (var col = left; col < right; col++) {\n var index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n var cell = table.nodeAt(pos);\n var ref = map.findCell(pos);\n var cellTop = ref.top;\n var cellLeft = ref.left;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, setAttr(cell.attrs, \"rowspan\", top - cellTop));\n tr.insert(tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill(setAttr(cell.attrs, \"rowspan\", (cellTop + cell.attrs.rowspan) - top)));\n col += cell.attrs.colspan - 1;\n }\n }\n return found\n}\n\n// Make sure the given line (left, top) to (left, bottom) doesn't\n// cross any colspan cells by splitting cells that cross it. Return\n// true if something changed.\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width) { return false }\n var found = false;\n for (var row = top; row < bottom; row++) {\n var index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n var cell = table.nodeAt(pos), cellLeft = map.colCount(pos);\n var updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(updatePos, null, removeColSpan(cell.attrs, left - cellLeft, cell.attrs.colspan - (left - cellLeft)));\n tr.insert(updatePos + cell.nodeSize, cell.type.createAndFill(removeColSpan(cell.attrs, 0, left - cellLeft)));\n row += cell.attrs.rowspan - 1;\n }\n }\n return found\n}\n\n// Insert the given set of cells (as returned by `pastedCells`) into a\n// table, at the position pointed at by rect.\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n var table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc, map = TableMap.get(table);\n var top = rect.top;\n var left = rect.left;\n var right = left + cells.width, bottom = top + cells.height;\n var tr = state.tr, mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n // Prepare the table to be large enough and not have any cells\n // crossing the boundaries of the rectangle that we want to\n // insert into. If anything about it changes, recompute the table\n // map so that subsequent operations can see the current shape.\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom)) { recomp(); }\n\n for (var row = top; row < bottom; row++) {\n var from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(tr.mapping.slice(mapFrom).map(from + tableStart), tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice(cells.rows[row - top], 0, 0));\n }\n recomp();\n tr.setSelection(new CellSelection(tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))));\n dispatch(tr);\n}\n\n// This file defines a number of helpers for wiring up user input to\n\nvar handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1),\n\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n\n \"Backspace\": deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n \"Delete\": deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\n\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection)) { return false }\n if (dispatch) { dispatch(state.tr.setSelection(selection).scrollIntoView()); }\n return true\n}\n\nfunction arrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(state, dispatch, Selection.near(sel.$headCell, dir))\n }\n if (axis != \"horiz\" && !sel.empty) { return false }\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n if (axis == \"horiz\") {\n return maybeSetSelection(state, dispatch, Selection.near(state.doc.resolve(sel.head + dir), dir))\n } else {\n var $cell = state.doc.resolve(end), $next = nextCell($cell, axis, dir), newSel;\n if ($next) { newSel = Selection.near($next, 1); }\n else if (dir < 0) { newSel = Selection.near(state.doc.resolve($cell.before(-1)), -1); }\n else { newSel = Selection.near(state.doc.resolve($cell.after(-1)), 1); }\n return maybeSetSelection(state, dispatch, newSel)\n }\n }\n}\n\nfunction shiftArrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) {\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n sel = new CellSelection(state.doc.resolve(end));\n }\n var $head = nextCell(sel.$headCell, axis, dir);\n if (!$head) { return false }\n return maybeSetSelection(state, dispatch, new CellSelection(sel.$anchorCell, $head))\n }\n}\n\nfunction deleteCellSelection(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) { return false }\n if (dispatch) {\n var tr = state.tr, baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell(function (cell, pos) {\n if (!cell.content.eq(baseContent))\n { tr.replace(tr.mapping.map(pos + 1), tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice(baseContent, 0, 0)); }\n });\n if (tr.docChanged) { dispatch(tr); }\n }\n return true\n}\n\nfunction handleTripleClick(view, pos) {\n var doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell) { return false }\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true\n}\n\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state)) { return false }\n var cells = pastedCells(slice), sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells) { cells = {width: 1, height: 1, rows: [Fragment.from(fitSlice(tableNodeTypes(view.state.schema).cell, slice))]}; }\n var table = sel.$anchorCell.node(-1), start = sel.$anchorCell.start(-1);\n var rect = TableMap.get(table).rectBetween(sel.$anchorCell.pos - start, sel.$headCell.pos - start);\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true\n } else if (cells) {\n var $cell = selectionCell(view.state), start$1 = $cell.start(-1);\n insertCells(view.state, view.dispatch, start$1, TableMap.get($cell.node(-1)).findCell($cell.pos - start$1), cells);\n return true\n } else {\n return false\n }\n}\n\nfunction handleMouseDown(view, startEvent) {\n if (startEvent.ctrlKey || startEvent.metaKey) { return }\n\n var startDOMCell = domInCell(view, startEvent.target), $anchor;\n if (startEvent.shiftKey && (view.state.selection instanceof CellSelection)) {\n // Adding to an existing cell selection\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell &&\n ($anchor = cellAround(view.state.selection.$anchor)) != null &&\n cellUnderMouse(view, startEvent).pos != $anchor.pos) {\n // Adding to a selection that starts in another cell (causing a\n // cell selection to be created).\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n // Not in a cell, let the default behavior happen.\n return\n }\n\n // Create and dispatch a cell selection between the given anchor and\n // the position under the mouse.\n function setCellSelection($anchor, event) {\n var $head = cellUnderMouse(view, event);\n var starting = key.getState(view.state) == null;\n if (!$head || !inSameTable($anchor, $head)) {\n if (starting) { $head = $anchor; }\n else { return }\n }\n var selection = new CellSelection($anchor, $head);\n if (starting || !view.state.selection.eq(selection)) {\n var tr = view.state.tr.setSelection(selection);\n if (starting) { tr.setMeta(key, $anchor.pos); }\n view.dispatch(tr);\n }\n }\n\n // Stop listening to mouse motion events.\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (key.getState(view.state) != null) { view.dispatch(view.state.tr.setMeta(key, -1)); }\n }\n\n function move(event) {\n var anchor = key.getState(view.state), $anchor;\n if (anchor != null) {\n // Continuing an existing cross-cell selection\n $anchor = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n // Moving out of the initial cell -- start a new cell selection\n $anchor = cellUnderMouse(view, startEvent);\n if (!$anchor) { return stop() }\n }\n if ($anchor) { setCellSelection($anchor, event); }\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\n\n// Check whether the cursor is at the end of a cell (so that further\n// motion would move out of the cell)\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return null }\n var ref = view.state.selection;\n var $head = ref.$head;\n for (var d = $head.depth - 1; d >= 0; d--) {\n var parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) { return null }\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n var cellPos = $head.before(d);\n var dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return view.endOfTextblock(dirStr) ? cellPos : null\n }\n }\n return null\n}\n\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode)\n { if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") { return dom } }\n}\n\nfunction cellUnderMouse(view, event) {\n var mousePos = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!mousePos) { return null }\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null\n}\n\n// This file defines helpers for normalizing tables, making sure no\n\nvar fixTablesKey = new PluginKey(\"fix-tables\");\n\n// Helper for iterating through the nodes in a document that changed\n// compared to the given previous document. Useful for avoiding\n// duplicate work on each transaction.\nfunction changedDescendants(old, cur, offset, f) {\n var oldSize = old.childCount, curSize = cur.childCount;\n outer: for (var i = 0, j = 0; i < curSize; i++) {\n var child = cur.child(i);\n for (var scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n { changedDescendants(old.child(j), child, offset + 1, f); }\n else\n { child.nodesBetween(0, child.content.size, f, offset + 1); }\n offset += child.nodeSize;\n }\n}\n\n// :: (EditorState, ?EditorState) → ?Transaction\n// Inspect all tables in the given state's document and return a\n// transaction that fixes them, if necessary. If `oldState` was\n// provided, that is assumed to hold a previous, known-good state,\n// which will be used to avoid re-scanning unchanged parts of the\n// document.\nfunction fixTables(state, oldState) {\n var tr, check = function (node, pos) {\n if (node.type.spec.tableRole == \"table\") { tr = fixTable(state, node, pos, tr); }\n };\n if (!oldState) { state.doc.descendants(check); }\n else if (oldState.doc != state.doc) { changedDescendants(oldState.doc, state.doc, 0, check); }\n return tr\n}\n\n// : (EditorState, Node, number, ?Transaction) → ?Transaction\n// Fix the given table, if necessary. Will append to the transaction\n// it was given, if non-null, or create a new one if necessary.\nfunction fixTable(state, table, tablePos, tr) {\n var map = TableMap.get(table);\n if (!map.problems) { return tr }\n if (!tr) { tr = state.tr; }\n\n // Track which rows we must add cells to, so that we can adjust that\n // when fixing collisions.\n var mustAdd = [];\n for (var i = 0; i < map.height; i++) { mustAdd.push(0); }\n for (var i$1 = 0; i$1 < map.problems.length; i$1++) {\n var prob = map.problems[i$1];\n if (prob.type == \"collision\") {\n var cell = table.nodeAt(prob.pos);\n for (var j = 0; j < cell.attrs.rowspan; j++) { mustAdd[prob.row + j] += prob.n; }\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, removeColSpan(cell.attrs, cell.attrs.colspan - prob.n, prob.n));\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n var cell$1 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$1.attrs, \"rowspan\", cell$1.attrs.rowspan - prob.n));\n } else if (prob.type == \"colwidth mismatch\") {\n var cell$2 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$2.attrs, \"colwidth\", prob.colwidth));\n }\n }\n var first, last;\n for (var i$2 = 0; i$2 < mustAdd.length; i$2++) { if (mustAdd[i$2]) {\n if (first == null) { first = i$2; }\n last = i$2;\n } }\n // Add the necessary cells, using a heuristic for whether to add the\n // cells at the start or end of the rows (if it looks like a 'bite'\n // was taken out of the table, add cells at the start of the row\n // after the bite. Otherwise add them at the end).\n for (var i$3 = 0, pos = tablePos + 1; i$3 < map.height; i$3++) {\n var row = table.child(i$3);\n var end = pos + row.nodeSize;\n var add = mustAdd[i$3];\n if (add > 0) {\n var tableNodeType = 'cell';\n if (row.firstChild) {\n tableNodeType = row.firstChild.type.spec.tableRole;\n }\n var nodes = [];\n for (var j$1 = 0; j$1 < add; j$1++)\n { nodes.push(tableNodeTypes(state.schema)[tableNodeType].createAndFill()); }\n var side = (i$3 == 0 || first == i$3 - 1) && last == i$3 ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true })\n}\n\n// This file defines a number of table-related commands.\n\n// Helper to get the selected rectangle in a table, if any. Adds table\n// map, table node, and table start offset to the object for\n// convenience.\nfunction selectedRect(state) {\n var sel = state.selection, $pos = selectionCell(state);\n var table = $pos.node(-1), tableStart = $pos.start(-1), map = TableMap.get(table);\n var rect;\n if (sel instanceof CellSelection)\n { rect = map.rectBetween(sel.$anchorCell.pos - tableStart, sel.$headCell.pos - tableStart); }\n else\n { rect = map.findCell($pos.pos - tableStart); }\n rect.tableStart = tableStart;\n rect.map = map;\n rect.table = table;\n return rect\n}\n\n// Add a column at the given position in a table.\nfunction addColumn(tr, ref, col) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn))\n { refColumn = col == 0 || col == map.width ? null : 0; }\n\n for (var row = 0; row < map.height; row++) {\n var index = row * map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n var pos = map.map[index], cell = table.nodeAt(pos);\n tr.setNodeMarkup(tr.mapping.map(tableStart + pos), null,\n addColSpan(cell.attrs, col - map.colCount(pos)));\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n } else {\n var type = refColumn == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refColumn]).type;\n var pos$1 = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos$1), type.createAndFill());\n }\n }\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column before the column with the selection.\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column after the column with the selection.\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true\n}\n\nfunction removeColumn(tr, ref, col) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var mapStart = tr.mapping.maps.length;\n for (var row = 0; row < map.height;) {\n var index = row * map.width + col, pos = map.map[index], cell = table.nodeAt(pos);\n // If this is part of a col-spanning cell\n if ((col > 0 && map.map[index - 1] == pos) || (col < map.width - 1 && map.map[index + 1] == pos)) {\n tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null,\n removeColSpan(cell.attrs, col - map.colCount(pos)));\n } else {\n var start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += cell.attrs.rowspan;\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command function that removes the selected columns from a table.\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) { return false }\n for (var i = rect.right - 1;; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction rowIsHeader(map, table, row) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var col = 0; col < map.width; col++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\nfunction addRow(tr, ref, row) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var rowPos = tableStart;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var cells = [], refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n { refRow = row == 0 || row == map.height ? null : 0; }\n for (var col = 0, index = map.width * row; col < map.width; col++, index++) {\n // Covered by a rowspan cell\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n var pos = map.map[index], attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, setAttr(attrs, \"rowspan\", attrs.rowspan + 1));\n col += attrs.colspan - 1;\n } else {\n var type = refRow == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refRow * map.width]).type;\n cells.push(type.createAndFill());\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row before the selection.\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row after the selection.\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true\n}\n\nfunction removeRow(tr, ref, row) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var rowPos = 0;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var nextRow = rowPos + table.child(row).nodeSize;\n\n var mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n\n for (var col = 0, index = row * map.width; col < map.width; col++, index++) {\n var pos = map.map[index];\n if (row > 0 && pos == map.map[index - map.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n var attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, setAttr(attrs, \"rowspan\", attrs.rowspan - 1));\n col += attrs.colspan - 1;\n } else if (row < map.width && pos == map.map[index + map.width]) {\n // Else, if it continues in the row below, it has to be moved down\n var cell = table.nodeAt(pos);\n var copy = cell.type.create(setAttr(cell.attrs, \"rowspan\", cell.attrs.rowspan - 1), cell.content);\n var newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += cell.attrs.colspan - 1;\n }\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Remove the selected rows from a table.\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) { return false }\n for (var i = rect.bottom - 1;; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction isEmpty(cell) {\n var c = cell.content;\n return c.childCount == 1 && c.firstChild.isTextblock && c.firstChild.childCount == 0\n}\n\nfunction cellsOverlapRectangle(ref, rect) {\n var width = ref.width;\n var height = ref.height;\n var map = ref.map;\n\n var indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n var indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (var i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] ||\n rect.right < width && map[indexRight] == map[indexRight + 1]) { return true }\n indexLeft += width; indexRight += width;\n }\n for (var i$1 = rect.left; i$1 < rect.right; i$1++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] ||\n rect.bottom < height && map[indexBottom] == map[indexBottom + width]) { return true }\n indexTop++; indexBottom++;\n }\n return false\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Merge the selected cells into a single cell. Only available when\n// the selected cells' outline forms a rectangle.\nfunction mergeCells(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos) { return false }\n var rect = selectedRect(state);\n var map = rect.map;\n if (cellsOverlapRectangle(map, rect)) { return false }\n if (dispatch) {\n var tr = state.tr, seen = {}, content = Fragment.empty, mergedPos, mergedCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var cellPos = map.map[row * map.width + col], cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos]) { continue }\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) { content = content.append(cell.content); }\n var mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null,\n setAttr(addColSpan(mergedCell.attrs, mergedCell.attrs.colspan, (rect.right - rect.left) - mergedCell.attrs.colspan),\n \"rowspan\", rect.bottom - rect.top));\n if (content.size) {\n var end = mergedPos + 1 + mergedCell.content.size;\n var start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)));\n dispatch(tr);\n }\n return true\n}\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells. Use the first cell type for the new cells.\nfunction splitCell(state, dispatch) {\n var nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(function (ref) {\n var node = ref.node;\n\n return nodeTypes[node.type.spec.tableRole]\n })(state, dispatch)\n}\n\n// :: (getCellType: ({ row: number, col: number, node: Node}) → NodeType) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells with the cell type (th, td) returned by getType function.\nfunction splitCellWithType(getCellType) {\n return function (state, dispatch) {\n var sel = state.selection;\n var cellNode, cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) { return false }\n cellPos = cellAround(sel.$from).pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) { return false }\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {return false}\n if (dispatch) {\n var baseAttrs = cellNode.attrs, attrs = [], colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) { baseAttrs = setAttr(baseAttrs, \"rowspan\", 1); }\n if (baseAttrs.colspan > 1) { baseAttrs = setAttr(baseAttrs, \"colspan\", 1); }\n var rect = selectedRect(state), tr = state.tr;\n for (var i = 0; i < rect.right - rect.left; i++)\n { attrs.push(colwidth ? setAttr(baseAttrs, \"colwidth\", colwidth && colwidth[i] ? [colwidth[i]] : null) : baseAttrs); }\n var lastCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n var pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) { pos += cellNode.nodeSize; }\n for (var col = rect.left, i$1 = 0; col < rect.right; col++, i$1++) {\n if (col == rect.left && row == rect.top) { continue }\n tr.insert(lastCell = tr.mapping.map(pos + rect.tableStart, 1), getCellType({ node: cellNode, row: row, col: col}).createAndFill(attrs[i$1]));\n }\n }\n tr.setNodeMarkup(cellPos, getCellType({ node: cellNode, row: rect.top, col: rect.left}), attrs[0]);\n if (sel instanceof CellSelection)\n { tr.setSelection(new CellSelection(tr.doc.resolve(sel.$anchorCell.pos),\n lastCell && tr.doc.resolve(lastCell))); }\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (string, any) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that sets the given attribute to the given value,\n// and is only available when the currently selected cell doesn't\n// already have that attribute set to that value.\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value) { return false }\n if (dispatch) {\n var tr = state.tr;\n if (state.selection instanceof CellSelection)\n { state.selection.forEachCell(function (node, pos) {\n if (node.attrs[name] !== value)\n { tr.setNodeMarkup(pos, null, setAttr(node.attrs, name, value)); }\n }); }\n else\n { tr.setNodeMarkup($cell.pos, null, setAttr($cell.nodeAfter.attrs, name, value)); }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n var cells = rect.map.cellsInRect(type == \"column\" ? new Rect(rect.left, 0, rect.right, rect.map.height) :\n type == \"row\" ? new Rect(0, rect.top, rect.map.width, rect.bottom) : rect);\n var nodes = cells.map(function (pos) { return rect.table.nodeAt(pos); });\n for (var i = 0; i < cells.length; i++) // Remove headers, if any\n { if (nodes[i].type == types.header_cell)\n { tr.setNodeMarkup(rect.tableStart + cells[i], types.cell, nodes[i].attrs); } }\n if (tr.steps.length == 0) { for (var i$1 = 0; i$1 < cells.length; i$1++) // No headers removed, add instead\n { tr.setNodeMarkup(rect.tableStart + cells[i$1], types.header_cell, nodes[i$1].attrs); } }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction isHeaderEnabledByType(type, rect, types) {\n // Get cell positions for first row or first column\n var cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1,\n });\n\n for (var i = 0; i < cellPositions.length; i++) {\n var cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false\n }\n }\n\n return true\n}\n\n// :: (string, ?{ useDeprecatedLogic: bool }) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles between row/column header and normal cells (Only applies to first row/column).\n// For deprecated behavior pass `useDeprecatedLogic` in options with true.\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n\n if (options.useDeprecatedLogic)\n { return deprecated_toggleHeader(type) }\n\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n\n var isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n var isHeaderColumnEnabled = isHeaderEnabledByType(\"column\", rect, types);\n\n var isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled :\n type === \"row\" ? isHeaderColumnEnabled : false;\n\n var selectionStartsAt = isHeaderEnabled ? 1 : 0;\n\n var cellsRect = type == \"column\" ? new Rect(0, selectionStartsAt, 1, rect.map.height) :\n type == \"row\" ? new Rect(selectionStartsAt, 0, rect.map.width, 1) : rect;\n\n var newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell :\n type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n\n rect.map.cellsInRect(cellsRect).forEach(function (relativeCellPos) {\n var cellPos = relativeCellPos + rect.tableStart;\n var cell = tr.doc.nodeAt(cellPos);\n\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected row contains header cells.\nvar toggleHeaderRow = toggleHeader(\"row\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected column contains header cells.\nvar toggleHeaderColumn = toggleHeader(\"column\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected cells are header cells.\nvar toggleHeaderCell = toggleHeader(\"cell\", { useDeprecatedLogic: true });\n\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n var before = $cell.nodeBefore;\n if (before) { return $cell.pos - before.nodeSize }\n for (var row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n var rowNode = $cell.node(-1).child(row);\n if (rowNode.childCount) { return rowEnd - 1 - rowNode.lastChild.nodeSize }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) { return $cell.pos + $cell.nodeAfter.nodeSize }\n var table = $cell.node(-1);\n for (var row$1 = $cell.indexAfter(-1), rowStart = $cell.after(); row$1 < table.childCount; row$1++) {\n var rowNode$1 = table.child(row$1);\n if (rowNode$1.childCount) { return rowStart + 1 }\n rowStart += rowNode$1.nodeSize;\n }\n }\n}\n\n// :: (number) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command for selecting the next (direction=1) or previous\n// (direction=-1) cell in a table.\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var cell = findNextCell(selectionCell(state), direction);\n if (cell == null) { return }\n if (dispatch) {\n var $cell = state.doc.resolve(cell);\n dispatch(state.tr.setSelection(TextSelection.between($cell, moveCellForward($cell))).scrollIntoView());\n }\n return true\n }\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Deletes the table around the selection, if any.\nfunction deleteTable(state, dispatch) {\n var $pos = state.selection.$anchor;\n for (var d = $pos.depth; d > 0; d--) {\n var node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch) { dispatch(state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()); }\n return true\n }\n }\n return false\n}\n\nvar TableView = function TableView(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumns(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n};\n\nTableView.prototype.update = function update (node) {\n if (node.type != this.node.type) { return false }\n this.node = node;\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n return true\n};\n\nTableView.prototype.ignoreMutation = function ignoreMutation (record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target))\n};\n\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var totalWidth = 0, fixedWidth = true;\n var nextDOM = colgroup.firstChild, row = node.firstChild;\n for (var i = 0, col = 0; i < row.childCount; i++) {\n var ref = row.child(i).attrs;\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n for (var j = 0; j < colspan; j++, col++) {\n var hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n var cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) { fixedWidth = false; }\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth) { nextDOM.style.width = cssWidth; }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n\n while (nextDOM) {\n var after = nextDOM.nextSibling;\n nextDOM.parentNode.removeChild(nextDOM);\n nextDOM = after;\n }\n\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\nvar key$1 = new PluginKey(\"tableColumnResizing\");\n\nfunction columnResizing(ref) {\n if ( ref === void 0 ) ref = {};\n var handleWidth = ref.handleWidth; if ( handleWidth === void 0 ) handleWidth = 5;\n var cellMinWidth = ref.cellMinWidth; if ( cellMinWidth === void 0 ) cellMinWidth = 25;\n var View = ref.View; if ( View === void 0 ) View = TableView;\n var lastColumnResizable = ref.lastColumnResizable; if ( lastColumnResizable === void 0 ) lastColumnResizable = true;\n\n var plugin = new Plugin({\n key: key$1,\n state: {\n init: function init(_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] =\n function (node, view) { return new View(node, cellMinWidth, view); };\n return new ResizeState(-1, false)\n },\n apply: function apply(tr, prev) {\n return prev.apply(tr)\n }\n },\n props: {\n attributes: function attributes(state) {\n var pluginState = key$1.getState(state);\n return pluginState.activeHandle > -1 ? {class: \"resize-cursor\"} : null\n },\n\n handleDOMEvents: {\n mousemove: function mousemove(view, event) { handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable); },\n mouseleave: function mouseleave(view) { handleMouseLeave(view); },\n mousedown: function mousedown(view, event) { handleMouseDown$1(view, event, cellMinWidth); }\n },\n\n decorations: function decorations(state) {\n var pluginState = key$1.getState(state);\n if (pluginState.activeHandle > -1) { return handleDecorations(state, pluginState.activeHandle) }\n },\n\n nodeViews: {}\n }\n });\n return plugin\n}\n\nvar ResizeState = function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n};\n\nResizeState.prototype.apply = function apply (tr) {\n var state = this, action = tr.getMeta(key$1);\n if (action && action.setHandle != null)\n { return new ResizeState(action.setHandle, null) }\n if (action && action.setDragging !== undefined)\n { return new ResizeState(state.activeHandle, action.setDragging) }\n if (state.activeHandle > -1 && tr.docChanged) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) { handle = null; }\n state = new ResizeState(handle, state.dragging);\n }\n return state\n};\n\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n var pluginState = key$1.getState(view.state);\n\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), cell = -1;\n if (target) {\n var ref = target.getBoundingClientRect();\n var left = ref.left;\n var right = ref.right;\n if (event.clientX - left <= handleWidth)\n { cell = edgeCell(view, event, \"left\"); }\n else if (right - event.clientX <= handleWidth)\n { cell = edgeCell(view, event, \"right\"); }\n }\n\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n\n if (col == map.width - 1) {\n return\n }\n }\n\n updateHandle(view, cell);\n }\n }\n}\n\nfunction handleMouseLeave(view) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) { updateHandle(view, -1); }\n}\n\nfunction handleMouseDown$1(view, event, cellMinWidth) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle == -1 || pluginState.dragging) { return false }\n\n var cell = view.state.doc.nodeAt(pluginState.activeHandle);\n var width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: {startX: event.clientX, startWidth: width}}));\n\n function finish(event) {\n window.removeEventListener(\"mouseup\", finish);\n window.removeEventListener(\"mousemove\", move);\n var pluginState = key$1.getState(view.state);\n if (pluginState.dragging) {\n updateColumnWidth(view, pluginState.activeHandle, draggedWidth(pluginState.dragging, event, cellMinWidth));\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: null}));\n }\n }\n function move(event) {\n if (!event.which) { return finish(event) }\n var pluginState = key$1.getState(view.state);\n var dragged = draggedWidth(pluginState.dragging, event, cellMinWidth);\n displayColumnWidth(view, pluginState.activeHandle, dragged, cellMinWidth);\n }\n\n window.addEventListener(\"mouseup\", finish);\n window.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true\n}\n\nfunction currentColWidth(view, cellPos, ref) {\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n\n var width = colwidth && colwidth[colwidth.length - 1];\n if (width) { return width }\n var dom = view.domAtPos(cellPos);\n var node = dom.node.childNodes[dom.offset];\n var domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) { for (var i = 0; i < colspan; i++) { if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n } } }\n return domWidth / parts\n}\n\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n { target = target.classList.contains(\"ProseMirror\") ? null : target.parentNode; }\n return target\n}\n\nfunction edgeCell(view, event, side) {\n var found = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!found) { return -1 }\n var pos = found.pos;\n var $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) { return -1 }\n if (side == \"right\") { return $cell.pos }\n var map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n var index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1]\n}\n\nfunction draggedWidth(dragging, event, cellMinWidth) {\n var offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset)\n}\n\nfunction updateHandle(view, value) {\n view.dispatch(view.state.tr.setMeta(key$1, {setHandle: value}));\n}\n\nfunction updateColumnWidth(view, cell, width) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var tr = view.state.tr;\n for (var row = 0; row < map.height; row++) {\n var mapIndex = row * map.width + col;\n // Rowspanning cell that has already been handled\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) { continue }\n var pos = map.map[mapIndex];\n var ref = table.nodeAt(pos);\n var attrs = ref.attrs;\n var index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) { continue }\n var colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, setAttr(attrs, \"colwidth\", colwidth));\n }\n if (tr.docChanged) { view.dispatch(tr); }\n}\n\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), start = $cell.start(-1);\n var col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var dom = view.domAtPos($cell.start(-1)).node;\n while (dom.nodeName != \"TABLE\") { dom = dom.parentNode; }\n updateColumns(table, dom.firstChild, dom, cellMinWidth, col, width);\n}\n\nfunction zeroes(n) {\n var result = [];\n for (var i = 0; i < n; i++) { result.push(0); }\n return result\n}\n\nfunction handleDecorations(state, cell) {\n var decorations = [];\n var $cell = state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (var row = 0; row < map.height; row++) {\n var index = col + row * map.width - 1;\n // For positions that are have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if ((col == map.width || map.map[index] != map.map[index + 1]) &&\n (row == 0 || map.map[index - 1] != map.map[index - 1 - map.width])) {\n var cellPos = map.map[index];\n var pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n var dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations)\n}\n\n// This file defines a plugin that handles the drawing of cell\n\n// :: () → Plugin\n//\n// Creates a [plugin](http://prosemirror.net/docs/ref/#state.Plugin)\n// that, when added to an editor, enables cell-selection, handles\n// cell-based copy/paste, and makes sure tables stay well-formed (each\n// row has the same width, and cells don't overlap).\n//\n// You should probably put this plugin near the end of your array of\n// plugins, since it handles mouse and arrow key events in tables\n// rather broadly, and other plugins, like the gap cursor or the\n// column-width dragging plugin, might want to get a turn first to\n// perform more specific behavior.\nfunction tableEditing(ref) {\n if ( ref === void 0 ) ref = {};\n var allowTableNodeSelection = ref.allowTableNodeSelection; if ( allowTableNodeSelection === void 0 ) allowTableNodeSelection = false;\n\n return new Plugin({\n key: key,\n\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init: function init() { return null },\n apply: function apply(tr, cur) {\n var set = tr.getMeta(key);\n if (set != null) { return set == -1 ? null : set }\n if (cur == null || !tr.docChanged) { return cur }\n var ref = tr.mapping.mapResult(cur);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? null : pos\n }\n },\n\n props: {\n decorations: drawCellSelection,\n\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n\n createSelectionBetween: function createSelectionBetween(view) {\n if (key.getState(view.state) != null) { return view.state.selection }\n },\n\n handleTripleClick: handleTripleClick,\n\n handleKeyDown: handleKeyDown,\n\n handlePaste: handlePaste\n },\n\n appendTransaction: function appendTransaction(_, oldState, state) {\n return normalizeSelection(state, fixTables(state, oldState), allowTableNodeSelection)\n }\n })\n}\n\nexport { CellSelection, TableMap, TableView, clipCells as __clipCells, insertCells as __insertCells, pastedCells as __pastedCells, addColSpan, addColumn, addColumnAfter, addColumnBefore, addRow, addRowAfter, addRowBefore, cellAround, colCount, columnIsHeader, columnResizing, key$1 as columnResizingPluginKey, deleteColumn, deleteRow, deleteTable, findCell, fixTables, fixTablesKey, goToNextCell, handlePaste, inSameTable, isInTable, mergeCells, moveCellForward, nextCell, pointsAtCell, removeColSpan, removeColumn, removeRow, rowIsHeader, selectedRect, selectionCell, setAttr, setCellAttr, splitCell, splitCellWithType, tableEditing, key as tableEditingKey, tableNodeTypes, tableNodes, toggleHeader, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, updateColumns as updateColumnsOnResize };\n","import { ReplaceError, Slice, Fragment, MarkType } from 'prosemirror-model';\n\n// Mappable:: interface\n// There are several things that positions can be mapped through.\n// Such objects conform to this interface.\n//\n// map:: (pos: number, assoc: ?number) → number\n// Map a position through this object. When given, `assoc` (should\n// be -1 or 1, defaults to 1) determines with which side the\n// position is associated, which determines in which direction to\n// move when a chunk of content is inserted at the mapped position.\n//\n// mapResult:: (pos: number, assoc: ?number) → MapResult\n// Map a position, and return an object containing additional\n// information about the mapping. The result's `deleted` field tells\n// you whether the position was deleted (completely enclosed in a\n// replaced range) during the mapping. When content on only one side\n// is deleted, the position itself is only considered deleted when\n// `assoc` points in the direction of the deleted content.\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\n\nvar lower16 = 0xffff;\nvar factor16 = Math.pow(2, 16);\n\nfunction makeRecover(index, offset) { return index + offset * factor16 }\nfunction recoverIndex(value) { return value & lower16 }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16 }\n\n// ::- An object representing a mapped position with extra\n// information.\nvar MapResult = function MapResult(pos, deleted, recover) {\n if ( deleted === void 0 ) deleted = false;\n if ( recover === void 0 ) recover = null;\n\n // :: number The mapped version of the position.\n this.pos = pos;\n // :: bool Tells you whether the position was deleted, that is,\n // whether the step removed its surroundings from the document.\n this.deleted = deleted;\n this.recover = recover;\n};\n\n// :: class extends Mappable\n// A map describing the deletions and insertions made by a step, which\n// can be used to find the correspondence between positions in the\n// pre-step version of a document and the same position in the\n// post-step version.\nvar StepMap = function StepMap(ranges, inverted) {\n if ( inverted === void 0 ) inverted = false;\n\n if (!ranges.length && StepMap.empty) { return StepMap.empty }\n this.ranges = ranges;\n this.inverted = inverted;\n};\n\nStepMap.prototype.recover = function recover (value) {\n var diff = 0, index = recoverIndex(value);\n if (!this.inverted) { for (var i = 0; i < index; i++)\n { diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1]; } }\n return this.ranges[index * 3] + diff + recoverOffset(value)\n};\n\n// : (number, ?number) → MapResult\nStepMap.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\n// : (number, ?number) → number\nStepMap.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, true) };\n\nStepMap.prototype._map = function _map (pos, assoc, simple) {\n var diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n var side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n var result = start + diff + (side < 0 ? 0 : newSize);\n if (simple) { return result }\n var recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n return new MapResult(result, assoc < 0 ? pos != start : pos != end, recover)\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff)\n};\n\nStepMap.prototype.touches = function touches (pos, recover) {\n var diff = 0, index = recoverIndex(recover);\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3) { return true }\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false\n};\n\n// :: ((oldStart: number, oldEnd: number, newStart: number, newEnd: number))\n// Calls the given function on each of the changed ranges included in\n// this map.\nStepMap.prototype.forEach = function forEach (f) {\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0, diff = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n};\n\n// :: () → StepMap\n// Create an inverted version of this map. The result can be used to\n// map positions in the post-step document to the pre-step document.\nStepMap.prototype.invert = function invert () {\n return new StepMap(this.ranges, !this.inverted)\n};\n\nStepMap.prototype.toString = function toString () {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges)\n};\n\n// :: (n: number) → StepMap\n// Create a map that moves all positions by offset `n` (which may be\n// negative). This can be useful when applying steps meant for a\n// sub-document to a larger document, or vice-versa.\nStepMap.offset = function offset (n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n])\n};\n\n// :: StepMap\n// A StepMap that contains no changed ranges.\nStepMap.empty = new StepMap([]);\n\n// :: class extends Mappable\n// A mapping represents a pipeline of zero or more [step\n// maps](#transform.StepMap). It has special provisions for losslessly\n// handling mapping positions through a series of steps in which some\n// steps are inverted versions of earlier steps. (This comes up when\n// ‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\n// collaboration or history management.)\nvar Mapping = function Mapping(maps, mirror, from, to) {\n // :: [StepMap]\n // The step maps in this mapping.\n this.maps = maps || [];\n // :: number\n // The starting position in the `maps` array, used when `map` or\n // `mapResult` is called.\n this.from = from || 0;\n // :: number\n // The end position in the `maps` array.\n this.to = to == null ? this.maps.length : to;\n this.mirror = mirror;\n};\n\n// :: (?number, ?number) → Mapping\n// Create a mapping that maps only through a part of this one.\nMapping.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.maps.length;\n\n return new Mapping(this.maps, this.mirror, from, to)\n};\n\nMapping.prototype.copy = function copy () {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to)\n};\n\n// :: (StepMap, ?number)\n// Add a step map to the end of this mapping. If `mirrors` is\n// given, it should be the index of the step map that is the mirror\n// image of this one.\nMapping.prototype.appendMap = function appendMap (map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null) { this.setMirror(this.maps.length - 1, mirrors); }\n};\n\n// :: (Mapping)\n// Add all the step maps in a given mapping to this one (preserving\n// mirroring information).\nMapping.prototype.appendMapping = function appendMapping (mapping) {\n for (var i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : null);\n }\n};\n\n// :: (number) → ?number\n// Finds the offset of the step map that mirrors the map at the\n// given offset, in this mapping (as per the second argument to\n// `appendMap`).\nMapping.prototype.getMirror = function getMirror (n) {\n if (this.mirror) { for (var i = 0; i < this.mirror.length; i++)\n { if (this.mirror[i] == n) { return this.mirror[i + (i % 2 ? -1 : 1)] } } }\n};\n\nMapping.prototype.setMirror = function setMirror (n, m) {\n if (!this.mirror) { this.mirror = []; }\n this.mirror.push(n, m);\n};\n\n// :: (Mapping)\n// Append the inverse of the given mapping to this one.\nMapping.prototype.appendMappingInverted = function appendMappingInverted (mapping) {\n for (var i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : null);\n }\n};\n\n// :: () → Mapping\n// Create an inverted version of this mapping.\nMapping.prototype.invert = function invert () {\n var inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse\n};\n\n// : (number, ?number) → number\n// Map a position through this mapping.\nMapping.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n\n if (this.mirror) { return this._map(pos, assoc, true) }\n for (var i = this.from; i < this.to; i++)\n { pos = this.maps[i].map(pos, assoc); }\n return pos\n};\n\n// : (number, ?number) → MapResult\n// Map a position through this mapping, returning a mapping\n// result.\nMapping.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\nMapping.prototype._map = function _map (pos, assoc, simple) {\n var deleted = false;\n\n for (var i = this.from; i < this.to; i++) {\n var map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n var corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue\n }\n }\n\n if (result.deleted) { deleted = true; }\n pos = result.pos;\n }\n\n return simple ? pos : new MapResult(pos, deleted)\n};\n\nfunction TransformError(message) {\n var err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err\n}\n\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n\n// ::- Abstraction to build up and track an array of\n// [steps](#transform.Step) representing a document transformation.\n//\n// Most transforming methods return the `Transform` object itself, so\n// that they can be chained.\nvar Transform = function Transform(doc) {\n // :: Node\n // The current document (the result of applying the steps in the\n // transform).\n this.doc = doc;\n // :: [Step]\n // The steps in this transform.\n this.steps = [];\n // :: [Node]\n // The documents before each of the steps.\n this.docs = [];\n // :: Mapping\n // A mapping with the maps for each of the steps in this transform.\n this.mapping = new Mapping;\n};\n\nvar prototypeAccessors = { before: { configurable: true },docChanged: { configurable: true } };\n\n// :: Node The starting document.\nprototypeAccessors.before.get = function () { return this.docs.length ? this.docs[0] : this.doc };\n\n// :: (step: Step) → this\n// Apply a new step in this transform, saving the result. Throws an\n// error when the step fails.\nTransform.prototype.step = function step (object) {\n var result = this.maybeStep(object);\n if (result.failed) { throw new TransformError(result.failed) }\n return this\n};\n\n// :: (Step) → StepResult\n// Try to apply a step in this transformation, ignoring it if it\n// fails. Returns the step result.\nTransform.prototype.maybeStep = function maybeStep (step) {\n var result = step.apply(this.doc);\n if (!result.failed) { this.addStep(step, result.doc); }\n return result\n};\n\n// :: bool\n// True when the document has been changed (when there are any\n// steps).\nprototypeAccessors.docChanged.get = function () {\n return this.steps.length > 0\n};\n\nTransform.prototype.addStep = function addStep (step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n};\n\nObject.defineProperties( Transform.prototype, prototypeAccessors );\n\nfunction mustOverride() { throw new Error(\"Override me\") }\n\nvar stepsByID = Object.create(null);\n\n// ::- A step object represents an atomic change. It generally applies\n// only to the document it was created for, since the positions\n// stored in it will only make sense for that document.\n//\n// New steps are defined by creating classes that extend `Step`,\n// overriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\n// methods, and registering your class with a unique\n// JSON-serialization identifier using\n// [`Step.jsonID`](#transform.Step^jsonID).\nvar Step = function Step () {};\n\nStep.prototype.apply = function apply (_doc) { return mustOverride() };\n\n// :: () → StepMap\n// Get the step map that represents the changes made by this step,\n// and which can be used to transform between positions in the old\n// and the new document.\nStep.prototype.getMap = function getMap () { return StepMap.empty };\n\n// :: (doc: Node) → Step\n// Create an inverted version of this step. Needs the document as it\n// was before the step as argument.\nStep.prototype.invert = function invert (_doc) { return mustOverride() };\n\n// :: (mapping: Mappable) → ?Step\n// Map this step through a mappable thing, returning either a\n// version of that step with its positions adjusted, or `null` if\n// the step was entirely deleted by the mapping.\nStep.prototype.map = function map (_mapping) { return mustOverride() };\n\n// :: (other: Step) → ?Step\n// Try to merge this step with another one, to be applied directly\n// after it. Returns the merged step when possible, null if the\n// steps can't be merged.\nStep.prototype.merge = function merge (_other) { return null };\n\n// :: () → Object\n// Create a JSON-serializeable representation of this step. When\n// defining this for a custom subclass, make sure the result object\n// includes the step type's [JSON id](#transform.Step^jsonID) under\n// the `stepType` property.\nStep.prototype.toJSON = function toJSON () { return mustOverride() };\n\n// :: (Schema, Object) → Step\n// Deserialize a step from its JSON representation. Will call\n// through to the step class' own implementation of this method.\nStep.fromJSON = function fromJSON (schema, json) {\n if (!json || !json.stepType) { throw new RangeError(\"Invalid input for Step.fromJSON\") }\n var type = stepsByID[json.stepType];\n if (!type) { throw new RangeError((\"No step type \" + (json.stepType) + \" defined\")) }\n return type.fromJSON(schema, json)\n};\n\n// :: (string, constructor)\n// To be able to serialize steps to JSON, each step needs a string\n// ID to attach to its JSON representation. Use this method to\n// register an ID for your step classes. Try to pick something\n// that's unlikely to clash with steps from other modules.\nStep.jsonID = function jsonID (id, stepClass) {\n if (id in stepsByID) { throw new RangeError(\"Duplicate use of step JSON ID \" + id) }\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass\n};\n\n// ::- The result of [applying](#transform.Step.apply) a step. Contains either a\n// new document or a failure value.\nvar StepResult = function StepResult(doc, failed) {\n // :: ?Node The transformed document.\n this.doc = doc;\n // :: ?string Text providing information about a failed step.\n this.failed = failed;\n};\n\n// :: (Node) → StepResult\n// Create a successful step result.\nStepResult.ok = function ok (doc) { return new StepResult(doc, null) };\n\n// :: (string) → StepResult\n// Create a failed step result.\nStepResult.fail = function fail (message) { return new StepResult(null, message) };\n\n// :: (Node, number, number, Slice) → StepResult\n// Call [`Node.replace`](#model.Node.replace) with the given\n// arguments. Create a successful result if it succeeds, and a\n// failed one if it throws a `ReplaceError`.\nStepResult.fromReplace = function fromReplace (doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice))\n } catch (e) {\n if (e instanceof ReplaceError) { return StepResult.fail(e.message) }\n throw e\n }\n};\n\n// ::- Replace a part of the document with a slice of new content.\nvar ReplaceStep = /*@__PURE__*/(function (Step) {\n function ReplaceStep(from, to, slice, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceStep.__proto__ = Step;\n ReplaceStep.prototype = Object.create( Step && Step.prototype );\n ReplaceStep.prototype.constructor = ReplaceStep;\n\n ReplaceStep.prototype.apply = function apply (doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n { return StepResult.fail(\"Structure replace would overwrite content\") }\n return StepResult.fromReplace(doc, this.from, this.to, this.slice)\n };\n\n ReplaceStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.to - this.from, this.slice.size])\n };\n\n ReplaceStep.prototype.invert = function invert (doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to))\n };\n\n ReplaceStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted) { return null }\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice)\n };\n\n ReplaceStep.prototype.merge = function merge (other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure) { return null }\n\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n var slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure)\n } else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n var slice$1 = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice$1, this.structure)\n } else {\n return null\n }\n };\n\n ReplaceStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replace\", from: this.from, to: this.to};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\") }\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure)\n };\n\n return ReplaceStep;\n}(Step));\n\nStep.jsonID(\"replace\", ReplaceStep);\n\n// ::- Replace a part of the document with a slice of content, but\n// preserve a range of the replaced content by moving it into the\n// slice.\nvar ReplaceAroundStep = /*@__PURE__*/(function (Step) {\n function ReplaceAroundStep(from, to, gapFrom, gapTo, slice, insert, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: number\n // The start of preserved range.\n this.gapFrom = gapFrom;\n // :: number\n // The end of preserved range.\n this.gapTo = gapTo;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n // :: number\n // The position in the slice where the preserved range should be\n // inserted.\n this.insert = insert;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceAroundStep.__proto__ = Step;\n ReplaceAroundStep.prototype = Object.create( Step && Step.prototype );\n ReplaceAroundStep.prototype.constructor = ReplaceAroundStep;\n\n ReplaceAroundStep.prototype.apply = function apply (doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n { return StepResult.fail(\"Structure gap-replace would overwrite content\") }\n\n var gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n { return StepResult.fail(\"Gap is not a flat range\") }\n var inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted) { return StepResult.fail(\"Content does not fit in gap\") }\n return StepResult.fromReplace(doc, this.from, this.to, inserted)\n };\n\n ReplaceAroundStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert])\n };\n\n ReplaceAroundStep.prototype.invert = function invert (doc) {\n var gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap,\n this.from + this.insert, this.from + this.insert + gap,\n doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from),\n this.gapFrom - this.from, this.structure)\n };\n\n ReplaceAroundStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n var gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deleted && to.deleted) || gapFrom < from.pos || gapTo > to.pos) { return null }\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure)\n };\n\n ReplaceAroundStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceAroundStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\") }\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo,\n Slice.fromJSON(schema, json.slice), json.insert, !!json.structure)\n };\n\n return ReplaceAroundStep;\n}(Step));\n\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\n\nfunction contentBetween(doc, from, to) {\n var $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n var next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf) { return true }\n next = next.firstChild;\n dist--;\n }\n }\n return false\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end))\n}\n\n// :: (NodeRange) → ?number\n// Try to find a target depth to which the content in the given range\n// can be lifted. Will not go across\n// [isolating](#model.NodeSpec.isolating) parent nodes.\nfunction liftTarget(range) {\n var parent = range.parent;\n var content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (var depth = range.depth;; --depth) {\n var node = range.$from.node(depth);\n var index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n { return depth }\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex)) { break }\n }\n}\n\n// :: (NodeRange, number) → this\n// Split the content in the given range off from its parent, if there\n// is sibling content before or after it, and move it up the tree to\n// the depth specified by `target`. You'll probably want to use\n// [`liftTarget`](#transform.liftTarget) to compute `target`, to make\n// sure the lift is valid.\nTransform.prototype.lift = function(range, target) {\n var $from = range.$from;\n var $to = range.$to;\n var depth = range.depth;\n\n var gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n var start = gapStart, end = gapEnd;\n\n var before = Fragment.empty, openStart = 0;\n for (var d = depth, splitting = false; d > target; d--)\n { if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n } else {\n start--;\n } }\n var after = Fragment.empty, openEnd = 0;\n for (var d$1 = depth, splitting$1 = false; d$1 > target; d$1--)\n { if (splitting$1 || $to.after(d$1 + 1) < $to.end(d$1)) {\n splitting$1 = true;\n after = Fragment.from($to.node(d$1).copy(after));\n openEnd++;\n } else {\n end++;\n } }\n\n return this.step(new ReplaceAroundStep(start, end, gapStart, gapEnd,\n new Slice(before.append(after), openStart, openEnd),\n before.size - openStart, true))\n};\n\n// :: (NodeRange, NodeType, ?Object, ?NodeRange) → ?[{type: NodeType, attrs: ?Object}]\n// Try to find a valid way to wrap the content in the given range in a\n// node of the given type. May introduce extra nodes around and inside\n// the wrapper node, if necessary. Returns null if no valid wrapping\n// could be found. When `innerRange` is given, that range's content is\n// used as the content to fit into the wrapping, instead of the\n// content of `range`.\nfunction findWrapping(range, nodeType, attrs, innerRange) {\n if ( innerRange === void 0 ) innerRange = range;\n\n var around = findWrappingOutside(range, nodeType);\n var inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner) { return null }\n return around.map(withAttrs).concat({type: nodeType, attrs: attrs}).concat(inner.map(withAttrs))\n}\n\nfunction withAttrs(type) { return {type: type, attrs: null} }\n\nfunction findWrappingOutside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around) { return null }\n var outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null\n}\n\nfunction findWrappingInside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var inner = parent.child(startIndex);\n var inside = type.contentMatch.findWrapping(inner.type);\n if (!inside) { return null }\n var lastType = inside.length ? inside[inside.length - 1] : type;\n var innerMatch = lastType.contentMatch;\n for (var i = startIndex; innerMatch && i < endIndex; i++)\n { innerMatch = innerMatch.matchType(parent.child(i).type); }\n if (!innerMatch || !innerMatch.validEnd) { return null }\n return inside\n}\n\n// :: (NodeRange, [{type: NodeType, attrs: ?Object}]) → this\n// Wrap the given [range](#model.NodeRange) in the given set of wrappers.\n// The wrappers are assumed to be valid in this position, and should\n// probably be computed with [`findWrapping`](#transform.findWrapping).\nTransform.prototype.wrap = function(range, wrappers) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n var match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n { throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\") }\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n\n var start = range.start, end = range.end;\n return this.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true))\n};\n\n// :: (number, ?number, NodeType, ?Object) → this\n// Set the type of all textblocks (partly) between `from` and `to` to\n// the given node type with the given attributes.\nTransform.prototype.setBlockType = function(from, to, type, attrs) {\n var this$1 = this;\n if ( to === void 0 ) to = from;\n\n if (!type.isTextblock) { throw new RangeError(\"Type given to setBlockType should be a textblock\") }\n var mapFrom = this.steps.length;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(this$1.doc, this$1.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n this$1.clearIncompatible(this$1.mapping.slice(mapFrom).map(pos, 1), type);\n var mapping = this$1.mapping.slice(mapFrom);\n var startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n this$1.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1,\n new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false\n }\n });\n return this\n};\n\nfunction canChangeType(doc, pos, type) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type)\n}\n\n// :: (number, ?NodeType, ?Object, ?[Mark]) → this\n// Change the type, attributes, and/or marks of the node at `pos`.\n// When `type` isn't given, the existing node type is preserved,\nTransform.prototype.setNodeMarkup = function(pos, type, attrs, marks) {\n var node = this.doc.nodeAt(pos);\n if (!node) { throw new RangeError(\"No node at given position\") }\n if (!type) { type = node.type; }\n var newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n { return this.replaceWith(pos, pos + node.nodeSize, newNode) }\n\n if (!type.validContent(node.content))\n { throw new RangeError(\"Invalid content for node type \" + type.name) }\n\n return this.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1,\n new Slice(Fragment.from(newNode), 0, 0), 1, true))\n};\n\n// :: (Node, number, number, ?[?{type: NodeType, attrs: ?Object}]) → bool\n// Check whether splitting at the given position is allowed.\nfunction canSplit(doc, pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = doc.resolve(pos), base = $pos.depth - depth;\n var innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n { return false }\n for (var d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n var node = $pos.node(d), index$1 = $pos.index(d);\n if (node.type.spec.isolating) { return false }\n var rest = node.content.cutByIndex(index$1, node.childCount);\n var after = (typesAfter && typesAfter[i]) || node;\n if (after != node) { rest = rest.replaceChild(0, after.type.create(after.attrs)); }\n if (!node.canReplace(index$1 + 1, node.childCount) || !after.type.validContent(rest))\n { return false }\n }\n var index = $pos.indexAfter(base);\n var baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type)\n}\n\n// :: (number, ?number, ?[?{type: NodeType, attrs: ?Object}]) → this\n// Split the node at the given position, and optionally, if `depth` is\n// greater than one, any number of nodes above that. By default, the\n// parts split off will inherit the node type of the original node.\n// This can be changed by passing an array of types and attributes to\n// use after the split.\nTransform.prototype.split = function(pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = this.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (var d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n var typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n return this.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true))\n};\n\n// :: (Node, number) → bool\n// Test whether the blocks before and after a given position can be\n// joined.\nfunction canJoin(doc, pos) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1)\n}\n\nfunction joinable(a, b) {\n return a && b && !a.isLeaf && a.canAppend(b)\n}\n\n// :: (Node, number, ?number) → ?number\n// Find an ancestor of the given position that can be joined to the\n// block before (or after if `dir` is positive). Returns the joinable\n// point, if any.\nfunction joinPoint(doc, pos, dir) {\n if ( dir === void 0 ) dir = -1;\n\n var $pos = doc.resolve(pos);\n for (var d = $pos.depth;; d--) {\n var before = (void 0), after = (void 0), index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n } else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n } else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1)) { return pos }\n if (d == 0) { break }\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\n\n// :: (number, ?number) → this\n// Join the blocks around the given position. If depth is 2, their\n// last and first siblings are also joined, and so on.\nTransform.prototype.join = function(pos, depth) {\n if ( depth === void 0 ) depth = 1;\n\n var step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n return this.step(step)\n};\n\n// :: (Node, number, NodeType) → ?number\n// Try to find a point where a node of the given type can be inserted\n// near `pos`, by searching up the node hierarchy when `pos` itself\n// isn't a valid place but is at the start or end of a node. Return\n// null if no position was found.\nfunction insertPoint(doc, pos, nodeType) {\n var $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType)) { return pos }\n\n if ($pos.parentOffset == 0)\n { for (var d = $pos.depth - 1; d >= 0; d--) {\n var index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType)) { return $pos.before(d + 1) }\n if (index > 0) { return null }\n } }\n if ($pos.parentOffset == $pos.parent.content.size)\n { for (var d$1 = $pos.depth - 1; d$1 >= 0; d$1--) {\n var index$1 = $pos.indexAfter(d$1);\n if ($pos.node(d$1).canReplaceWith(index$1, index$1, nodeType)) { return $pos.after(d$1 + 1) }\n if (index$1 < $pos.node(d$1).childCount) { return null }\n } }\n}\n\n// :: (Node, number, Slice) → ?number\n// Finds a position at or around the given position where the given\n// slice can be inserted. Will look at parent nodes' nearest boundary\n// and try there, even if the original position wasn't directly at the\n// start or end of that node. Returns null when no position was found.\nfunction dropPoint(doc, pos, slice) {\n var $pos = doc.resolve(pos);\n if (!slice.content.size) { return pos }\n var content = slice.content;\n for (var i = 0; i < slice.openStart; i++) { content = content.firstChild.content; }\n for (var pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (var d = $pos.depth; d >= 0; d--) {\n var bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n var insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n var parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n } else {\n var wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n { return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1) }\n }\n }\n return null\n}\n\nfunction mapFragment(fragment, f, parent) {\n var mapped = [];\n for (var i = 0; i < fragment.childCount; i++) {\n var child = fragment.child(i);\n if (child.content.size) { child = child.copy(mapFragment(child.content, f, child)); }\n if (child.isInline) { child = f(child, parent, i); }\n mapped.push(child);\n }\n return Fragment.fromArray(mapped)\n}\n\n// ::- Add a mark to all inline content between two positions.\nvar AddMarkStep = /*@__PURE__*/(function (Step) {\n function AddMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the marked range.\n this.from = from;\n // :: number\n // The end of the marked range.\n this.to = to;\n // :: Mark\n // The mark to add.\n this.mark = mark;\n }\n\n if ( Step ) AddMarkStep.__proto__ = Step;\n AddMarkStep.prototype = Object.create( Step && Step.prototype );\n AddMarkStep.prototype.constructor = AddMarkStep;\n\n AddMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n var parent = $from.node($from.sharedDepth(this.to));\n var slice = new Slice(mapFragment(oldSlice.content, function (node, parent) {\n if (!node.isAtom || !parent.type.allowsMarkType(this$1.mark.type)) { return node }\n return node.mark(this$1.mark.addToSet(node.marks))\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n AddMarkStep.prototype.invert = function invert () {\n return new RemoveMarkStep(this.from, this.to, this.mark)\n };\n\n AddMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new AddMarkStep(from.pos, to.pos, this.mark)\n };\n\n AddMarkStep.prototype.merge = function merge (other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new AddMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n AddMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n AddMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\") }\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return AddMarkStep;\n}(Step));\n\nStep.jsonID(\"addMark\", AddMarkStep);\n\n// ::- Remove a mark from all inline content between two positions.\nvar RemoveMarkStep = /*@__PURE__*/(function (Step) {\n function RemoveMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the unmarked range.\n this.from = from;\n // :: number\n // The end of the unmarked range.\n this.to = to;\n // :: Mark\n // The mark to remove.\n this.mark = mark;\n }\n\n if ( Step ) RemoveMarkStep.__proto__ = Step;\n RemoveMarkStep.prototype = Object.create( Step && Step.prototype );\n RemoveMarkStep.prototype.constructor = RemoveMarkStep;\n\n RemoveMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to);\n var slice = new Slice(mapFragment(oldSlice.content, function (node) {\n return node.mark(this$1.mark.removeFromSet(node.marks))\n }), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n RemoveMarkStep.prototype.invert = function invert () {\n return new AddMarkStep(this.from, this.to, this.mark)\n };\n\n RemoveMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new RemoveMarkStep(from.pos, to.pos, this.mark)\n };\n\n RemoveMarkStep.prototype.merge = function merge (other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new RemoveMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n RemoveMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n RemoveMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\") }\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return RemoveMarkStep;\n}(Step));\n\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n\n// :: (number, number, Mark) → this\n// Add the given mark to the inline content between `from` and `to`.\nTransform.prototype.addMark = function(from, to, mark) {\n var this$1 = this;\n\n var removed = [], added = [], removing = null, adding = null;\n this.doc.nodesBetween(from, to, function (node, pos, parent) {\n if (!node.isInline) { return }\n var marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n var start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n var newSet = mark.addToSet(marks);\n\n for (var i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n { removing.to = end; }\n else\n { removed.push(removing = new RemoveMarkStep(start, end, marks[i])); }\n }\n }\n\n if (adding && adding.to == start)\n { adding.to = end; }\n else\n { added.push(adding = new AddMarkStep(start, end, mark)); }\n }\n });\n\n removed.forEach(function (s) { return this$1.step(s); });\n added.forEach(function (s) { return this$1.step(s); });\n return this\n};\n\n// :: (number, number, ?union) → this\n// Remove marks from inline nodes between `from` and `to`. When `mark`\n// is a single mark, remove precisely that mark. When it is a mark type,\n// remove all marks of that type. When it is null, remove all marks of\n// any type.\nTransform.prototype.removeMark = function(from, to, mark) {\n var this$1 = this;\n if ( mark === void 0 ) mark = null;\n\n var matched = [], step = 0;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (!node.isInline) { return }\n step++;\n var toRemove = null;\n if (mark instanceof MarkType) {\n var set = node.marks, found;\n while (found = mark.isInSet(set)) {\n(toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n } else if (mark) {\n if (mark.isInSet(node.marks)) { toRemove = [mark]; }\n } else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n var end = Math.min(pos + node.nodeSize, to);\n for (var i = 0; i < toRemove.length; i++) {\n var style = toRemove[i], found$1 = (void 0);\n for (var j = 0; j < matched.length; j++) {\n var m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style)) { found$1 = m; }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n } else {\n matched.push({style: style, from: Math.max(pos, from), to: end, step: step});\n }\n }\n }\n });\n matched.forEach(function (m) { return this$1.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return this\n};\n\n// :: (number, NodeType, ?ContentMatch) → this\n// Removes all marks and nodes from the content of the node at `pos`\n// that don't match the given new parent node type. Accepts an\n// optional starting [content match](#model.ContentMatch) as third\n// argument.\nTransform.prototype.clearIncompatible = function(pos, parentType, match) {\n if ( match === void 0 ) match = parentType.contentMatch;\n\n var node = this.doc.nodeAt(pos);\n var delSteps = [], cur = pos + 1;\n for (var i = 0; i < node.childCount; i++) {\n var child = node.child(i), end = cur + child.nodeSize;\n var allowed = match.matchType(child.type, child.attrs);\n if (!allowed) {\n delSteps.push(new ReplaceStep(cur, end, Slice.empty));\n } else {\n match = allowed;\n for (var j = 0; j < child.marks.length; j++) { if (!parentType.allowsMarkType(child.marks[j].type))\n { this.step(new RemoveMarkStep(cur, end, child.marks[j])); } }\n }\n cur = end;\n }\n if (!match.validEnd) {\n var fill = match.fillBefore(Fragment.empty, true);\n this.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (var i$1 = delSteps.length - 1; i$1 >= 0; i$1--) { this.step(delSteps[i$1]); }\n return this\n};\n\n// :: (Node, number, ?number, ?Slice) → ?Step\n// ‘Fit’ a slice into a given position in the document, producing a\n// [step](#transform.Step) that inserts it. Will return null if\n// there's no meaningful way to insert the slice here, or inserting it\n// would be a no-op (an empty slice over an empty range).\nfunction replaceStep(doc, from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n if (from == to && !slice.size) { return null }\n\n var $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice)) { return new ReplaceStep(from, to, slice) }\n return new Fitter($from, $to, slice).fit()\n}\n\n// :: (number, ?number, ?Slice) → this\n// Replace the part of the document between `from` and `to` with the\n// given `slice`.\nTransform.prototype.replace = function(from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n var step = replaceStep(this.doc, from, to, slice);\n if (step) { this.step(step); }\n return this\n};\n\n// :: (number, number, union) → this\n// Replace the given range with the given content, which may be a\n// fragment, node, or array of nodes.\nTransform.prototype.replaceWith = function(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the content between the given positions.\nTransform.prototype.delete = function(from, to) {\n return this.replace(from, to, Slice.empty)\n};\n\n// :: (number, union) → this\n// Insert the given content at the given position.\nTransform.prototype.insert = function(pos, content) {\n return this.replaceWith(pos, pos, content)\n};\n\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content)\n}\n\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nvar Fitter = function Fitter($from, $to, slice) {\n this.$to = $to;\n this.$from = $from;\n this.unplaced = slice;\n\n this.frontier = [];\n for (var i = 0; i <= $from.depth; i++) {\n var node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n\n this.placed = Fragment.empty;\n for (var i$1 = $from.depth; i$1 > 0; i$1--)\n { this.placed = Fragment.from($from.node(i$1).copy(this.placed)); }\n};\n\nvar prototypeAccessors$1 = { depth: { configurable: true } };\n\nprototypeAccessors$1.depth.get = function () { return this.frontier.length - 1 };\n\nFitter.prototype.fit = function fit () {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n var fit = this.findFittable();\n if (fit) { this.placeNodes(fit); }\n else { this.openMore() || this.dropNode(); }\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n var moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n var $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to) { return null }\n\n // If closing to `$to` succeeded, create a step\n var content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--; openEnd--;\n }\n var slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n { return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize) }\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n { return new ReplaceStep($from.pos, $to.pos, slice) }\n};\n\n// Find a position on the start spine of `this.unplaced` that has\n// content that can be moved somewhere on the frontier. Returns two\n// depths, one for the slice and one for the frontier.\nFitter.prototype.findFittable = function findFittable () {\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (var pass = 1; pass <= 2; pass++) {\n for (var sliceDepth = this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n var fragment = (void 0), parent = (void 0);\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n } else {\n fragment = this.unplaced.content;\n }\n var first = fragment.firstChild;\n for (var frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n var ref = this.frontier[frontierDepth];\n var type = ref.type;\n var match = ref.match;\n var wrap = (void 0), inject = (void 0);\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : type.compatibleContent(parent.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, inject: inject} }\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, wrap: wrap} }\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type)) { break }\n }\n }\n }\n};\n\nFitter.prototype.openMore = function openMore () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf) { return false }\n this.unplaced = new Slice(content, openStart + 1,\n Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true\n};\n\nFitter.prototype.dropNode = function dropNode () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n var openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1,\n openAtEnd ? openStart - 1 : openEnd);\n } else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n};\n\n// : ({sliceDepth: number, frontierDepth: number, parent: ?Node, wrap: ?[NodeType], inject: ?Fragment})\n// Move content from the unplaced slice at `sliceDepth` to the\n// frontier node at `frontierDepth`. Close that frontier node when\n// applicable.\nFitter.prototype.placeNodes = function placeNodes (ref) {\n var sliceDepth = ref.sliceDepth;\n var frontierDepth = ref.frontierDepth;\n var parent = ref.parent;\n var inject = ref.inject;\n var wrap = ref.wrap;\n\n while (this.depth > frontierDepth) { this.closeFrontierNode(); }\n if (wrap) { for (var i = 0; i < wrap.length; i++) { this.openFrontierNode(wrap[i]); } }\n\n var slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n var openStart = slice.openStart - sliceDepth;\n var taken = 0, add = [];\n var ref$1 = this.frontier[frontierDepth];\n var match = ref$1.match;\n var type = ref$1.type;\n if (inject) {\n for (var i$1 = 0; i$1 < inject.childCount; i$1++) { add.push(inject.child(i$1)); }\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n var openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n var next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches) { break }\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0,\n taken == fragment.childCount ? openEndCount : -1));\n }\n }\n var toEnd = taken == fragment.childCount;\n if (!toEnd) { openEndCount = -1; }\n\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n { this.closeFrontierNode(); }\n\n // Add new frontier nodes for any open nodes at the end.\n for (var i$2 = 0, cur = fragment; i$2 < openEndCount; i$2++) {\n var node = cur.lastChild;\n this.frontier.push({type: node.type, match: node.contentMatchAt(node.childCount)});\n cur = node.content;\n }\n\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1),\n sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n};\n\nFitter.prototype.mustMoveInline = function mustMoveInline () {\n if (!this.$to.parent.isTextblock) { return -1 }\n var top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth)) { return -1 }\n\n var ref = this.$to;\n var depth = ref.depth;\n var after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth)) { ++after; }\n return after\n};\n\nFitter.prototype.findCloseLevel = function findCloseLevel ($to) {\n scan: for (var i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n var ref = this.frontier[i];\n var match = ref.match;\n var type = ref.type;\n var dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n var fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit) { continue }\n for (var d = i - 1; d >= 0; d--) {\n var ref$1 = this.frontier[d];\n var match$1 = ref$1.match;\n var type$1 = ref$1.type;\n var matches = contentAfterFits($to, d, type$1, match$1, true);\n if (!matches || matches.childCount) { continue scan }\n }\n return {depth: i, fit: fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to}\n }\n};\n\nFitter.prototype.close = function close ($to) {\n var close = this.findCloseLevel($to);\n if (!close) { return null }\n\n while (this.depth > close.depth) { this.closeFrontierNode(); }\n if (close.fit.childCount) { this.placed = addToFragment(this.placed, close.depth, close.fit); }\n $to = close.move;\n for (var d = close.depth + 1; d <= $to.depth; d++) {\n var node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to\n};\n\nFitter.prototype.openFrontierNode = function openFrontierNode (type, attrs, content) {\n var top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({type: type, match: type.contentMatch});\n};\n\nFitter.prototype.closeFrontierNode = function closeFrontierNode () {\n var open = this.frontier.pop();\n var add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount) { this.placed = addToFragment(this.placed, this.frontier.length, add); }\n};\n\nObject.defineProperties( Fitter.prototype, prototypeAccessors$1 );\n\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0) { return fragment.cutByIndex(count) }\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)))\n}\n\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0) { return fragment.append(content) }\n return fragment.replaceChild(fragment.childCount - 1,\n fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)))\n}\n\nfunction contentAt(fragment, depth) {\n for (var i = 0; i < depth; i++) { fragment = fragment.firstChild.content; }\n return fragment\n}\n\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0) { return node }\n var frag = node.content;\n if (openStart > 1)\n { frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0)); }\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0) { frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true)); }\n }\n return node.copy(frag)\n}\n\nfunction contentAfterFits($to, depth, type, match, open) {\n var node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type)) { return null }\n var fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null\n}\n\nfunction invalidMarks(type, fragment, start) {\n for (var i = start; i < fragment.childCount; i++)\n { if (!type.allowsMarks(fragment.child(i).marks)) { return true } }\n return false\n}\n\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent\n}\n\n// :: (number, number, Slice) → this\n// Replace a range of the document with a given slice, using `from`,\n// `to`, and the slice's [`openStart`](#model.Slice.openStart) property\n// as hints, rather than fixed start and end points. This method may\n// grow the replaced area or close open nodes in the slice in order to\n// get a fit that is more in line with WYSIWYG expectations, by\n// dropping fully covered parent nodes of the replaced region when\n// they are marked [non-defining as context](#model.NodeSpec.definingAsContext), or\n// including an open parent node from the slice that _is_ marked as\n// [defining its content](#model.NodeSpec.definingForContent).\n//\n// This is the method, for example, to handle paste. The similar\n// [`replace`](#transform.Transform.replace) method is a more\n// primitive tool which will _not_ move the start and end of its given\n// range, and is useful in situations where you need more precise\n// control over what happens.\nTransform.prototype.replaceRange = function(from, to, slice) {\n if (!slice.size) { return this.deleteRange(from, to) }\n\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n { return this.step(new ReplaceStep(from, to, slice)) }\n\n var targetDepths = coveredDepths($from, this.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0) { targetDepths.pop(); }\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n var preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (var d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n var spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating) { break }\n if (targetDepths.indexOf(d) > -1) { preferredTarget = d; }\n else if ($from.before(d) == pos) { targetDepths.splice(1, 0, -d); }\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n var preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n\n var leftNodes = [], preferredDepth = slice.openStart;\n for (var content = slice.content, i = 0;; i++) {\n var node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart) { break }\n content = node.content;\n }\n\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (var d$1 = preferredDepth - 1; d$1 >= 0; d$1--) {\n var type = leftNodes[d$1].type, def = definesContent(type);\n if (def && $from.node(preferredTargetIndex).type != type) { preferredDepth = d$1; }\n else if (def || !type.isTextblock) { break }\n }\n\n for (var j = slice.openStart; j >= 0; j--) {\n var openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n var insert = leftNodes[openDepth];\n if (!insert) { continue }\n for (var i$1 = 0; i$1 < targetDepths.length; i$1++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n var targetDepth = targetDepths[(i$1 + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) { expand = false; targetDepth = -targetDepth; }\n var parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n { return this.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to,\n new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth),\n openDepth, slice.openEnd)) }\n }\n }\n\n var startSteps = this.steps.length;\n for (var i$2 = targetDepths.length - 1; i$2 >= 0; i$2--) {\n this.replace(from, to, slice);\n if (this.steps.length > startSteps) { break }\n var depth = targetDepths[i$2];\n if (depth < 0) { continue }\n from = $from.before(depth); to = $to.after(depth);\n }\n return this\n};\n\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n var first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n var match = parent.contentMatchAt(0);\n var start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment\n}\n\n// :: (number, number, Node) → this\n// Replace the given range with a node, but use `from` and `to` as\n// hints, rather than precise positions. When from and to are the same\n// and are at the start or end of a parent node in which the given\n// node doesn't fit, this method may _move_ them out towards a parent\n// that does allow the given node to be placed. When the given range\n// completely covers a parent node, this method may completely replace\n// that parent node.\nTransform.prototype.replaceRangeWith = function(from, to, node) {\n if (!node.isInline && from == to && this.doc.resolve(from).parent.content.size) {\n var point = insertPoint(this.doc, from, node.type);\n if (point != null) { from = to = point; }\n }\n return this.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the given range, expanding it to cover fully covered\n// parent nodes until a valid replace is found.\nTransform.prototype.deleteRange = function(from, to) {\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n var covered = coveredDepths($from, $to);\n for (var i = 0; i < covered.length; i++) {\n var depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n { return this.delete($from.start(depth), $to.end(depth)) }\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n { return this.delete($from.before(depth), $to.after(depth)) }\n }\n for (var d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n { return this.delete($from.before(d), to) }\n }\n return this.delete(from, to)\n};\n\n// : (ResolvedPos, ResolvedPos) → [number]\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n var result = [], minDepth = Math.min($from.depth, $to.depth);\n for (var d = minDepth; d >= 0; d--) {\n var start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating) { break }\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n { result.push(d); }\n }\n return result\n}\n\nexport { AddMarkStep, MapResult, Mapping, RemoveMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { TextSelection, NodeSelection, Selection, AllSelection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, DOMParser, Slice } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nvar result = {};\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n var ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent);\n var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n\n var ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge);\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null;\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent);\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n var chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent);\n result.chrome = !!chrome;\n result.chrome_version = chrome && +chrome[1];\n // Is true for both iOS and iPadOS for convenience\n result.safari = !ie && /Apple Computer/.test(navigator.vendor);\n result.ios = result.safari && (/Mobile\\/\\w+/.test(navigator.userAgent) || navigator.maxTouchPoints > 2);\n result.mac = result.ios || /Mac/.test(navigator.platform);\n result.android = /Android \\d/.test(navigator.userAgent);\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style;\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n}\n\nvar domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node) { return index }\n }\n};\n\nvar parentNode = function(node) {\n var parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent\n};\n\nvar reusedRange = null;\n\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nvar textRange = function(node, from, to) {\n var range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range\n};\n\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nvar isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n};\n\nvar atomElements = /^(img|br|input|textarea|hr)$/i;\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) { return true }\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n var parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n { return false }\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\") { return false }\n off = dir < 0 ? nodeSize(node) : 0;\n } else {\n return false\n }\n }\n}\n\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isOnEdge(node, offset, parent) {\n for (var atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) { return true }\n var index = domIndex(node);\n node = node.parentNode;\n if (!node) { return false }\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\n\nfunction hasBlockDesc(dom) {\n var desc;\n for (var cur = dom; cur; cur = cur.parentNode) { if (desc = cur.pmViewDesc) { break } }\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nvar selectionCollapsed = function(domSel) {\n var collapsed = domSel.isCollapsed;\n if (collapsed && result.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n { collapsed = false; }\n return collapsed\n};\n\nfunction keyEvent(keyCode, key) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event\n}\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\n\nfunction clientRect(node) {\n var rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n var scaleX = (rect.width / node.offsetWidth) || 1;\n var scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return {left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY}\n}\n\nfunction scrollRectIntoView(view, rect, startDOM) {\n var scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n var doc = view.dom.ownerDocument;\n for (var parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent) { break }\n if (parent.nodeType != 1) { continue }\n var atTop = parent == doc.body || parent.nodeType != 1;\n var bounding = atTop ? windowRect(doc) : clientRect(parent);\n var moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n { moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\")); }\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n { moveY = rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\"); }\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n { moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\")); }\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n { moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\"); }\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n } else {\n var startX = parent.scrollLeft, startY = parent.scrollTop;\n if (moveY) { parent.scrollTop += moveY; }\n if (moveX) { parent.scrollLeft += moveX; }\n var dX = parent.scrollLeft - startX, dY = parent.scrollTop - startY;\n rect = {left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY};\n }\n }\n if (atTop) { break }\n }\n}\n\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n var rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n var refDOM, refTop;\n for (var x = (rect.left + rect.right) / 2, y = startY + 1;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n var dom = view.root.elementFromPoint(x, y);\n if (dom == view.dom || !view.dom.contains(dom)) { continue }\n var localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break\n }\n }\n return {refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n var stack = [], doc = dom.ownerDocument;\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom: dom, top: dom.scrollTop, left: dom.scrollLeft});\n if (dom == doc) { break }\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos(ref) {\n var refDOM = ref.refDOM;\n var refTop = ref.refTop;\n var stack = ref.stack;\n\n var newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\n\nfunction restoreScrollStack(stack, dTop) {\n for (var i = 0; i < stack.length; i++) {\n var ref = stack[i];\n var dom = ref.dom;\n var top = ref.top;\n var left = ref.left;\n if (dom.scrollTop != top + dTop) { dom.scrollTop = top + dTop; }\n if (dom.scrollLeft != left) { dom.scrollLeft = left; }\n }\n}\n\nvar preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive) { return dom.setActive() } // in IE\n if (preventScrollSupported) { return dom.focus(preventScrollSupported) }\n\n var stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = {preventScroll: true};\n return true\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\n\nfunction findOffsetInNode(node, coords) {\n var closest, dxClosest = 2e8, coordsClosest, offset = 0;\n var rowBot = coords.top, rowTop = coords.top;\n for (var child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n var rects = (void 0);\n if (child.nodeType == 1) { rects = child.getClientRects(); }\n else if (child.nodeType == 3) { rects = textRange(child).getClientRects(); }\n else { continue }\n\n for (var i = 0; i < rects.length; i++) {\n var rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n var dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords;\n if (child.nodeType == 1 && dx)\n { offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0); }\n continue\n }\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n { offset = childIndex + 1; }\n }\n }\n if (closest && closest.nodeType == 3) { return findOffsetInText(closest, coordsClosest) }\n if (!closest || (dxClosest && closest.nodeType == 1)) { return {node: node, offset: offset} }\n return findOffsetInNode(closest, coordsClosest)\n}\n\nfunction findOffsetInText(node, coords) {\n var len = node.nodeValue.length;\n var range = document.createRange();\n for (var i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n var rect = singleRect(range, 1);\n if (rect.top == rect.bottom) { continue }\n if (inRect(coords, rect))\n { return {node: node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)} }\n }\n return {node: node, offset: 0}\n}\n\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1&&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1\n}\n\nfunction targetKludge(dom, coords) {\n var parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n { return parent }\n return dom\n}\n\nfunction posFromElement(view, elt, coords) {\n var ref = findOffsetInNode(elt, coords);\n var node = ref.node;\n var offset = ref.offset;\n var bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n var rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias)\n}\n\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n var outside = -1;\n for (var cur = node;;) {\n if (cur == view.dom) { break }\n var desc = view.docView.nearestDesc(cur, true);\n if (!desc) { return null }\n if (desc.node.isBlock && desc.parent) {\n var rect = desc.dom.getBoundingClientRect();\n if (rect.left > coords.left || rect.top > coords.top) { outside = desc.posBefore; }\n else if (rect.right < coords.left || rect.bottom < coords.top) { outside = desc.posAfter; }\n else { break }\n }\n cur = desc.dom.parentNode;\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\n\nfunction elementFromPoint(element, coords, box) {\n var len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (var startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n var child = element.childNodes[i];\n if (child.nodeType == 1) {\n var rects = child.getClientRects();\n for (var j = 0; j < rects.length; j++) {\n var rect = rects[j];\n if (inRect(coords, rect)) { return elementFromPoint(child, coords, rect) }\n }\n }\n if ((i = (i + 1) % len) == startI) { break }\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n var assign, assign$1;\n\n var doc = view.dom.ownerDocument, node, offset;\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n var pos$1 = doc.caretPositionFromPoint(coords.left, coords.top);\n if (pos$1) { ((assign = pos$1, node = assign.offsetNode, offset = assign.offset)); }\n } catch (_) {}\n }\n if (!node && doc.caretRangeFromPoint) {\n var range = doc.caretRangeFromPoint(coords.left, coords.top);\n if (range) { ((assign$1 = range, node = assign$1.startContainer, offset = assign$1.startOffset)); }\n }\n\n var elt = (view.root.elementFromPoint ? view.root : doc).elementFromPoint(coords.left, coords.top + 1), pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n var box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box)) { return null }\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt) { return null }\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (result.safari) {\n for (var p = elt; node && p; p = parentNode(p))\n { if (p.draggable) { node = offset = null; } }\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (result.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n var next = node.childNodes[offset], box$1;\n if (next.nodeName == \"IMG\" && (box$1 = next.getBoundingClientRect()).right <= coords.left &&\n box$1.bottom > coords.top)\n { offset++; }\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n { pos = view.state.doc.content.size; }\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n { pos = posFromCaret(view, node, offset, coords); }\n }\n if (pos == null) { pos = posFromElement(view, elt, coords); }\n\n var desc = view.docView.nearestDesc(elt, true);\n return {pos: pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n var rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\nvar BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n\n// : (EditorView, number, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n var ref = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n var node = ref.node;\n var offset = ref.offset;\n\n var supportEmptyRange = result.webkit || result.gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n var rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (result.gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n var rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n var rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n { return flattenV(rectAfter, rectAfter.left < rectBefore.left) }\n }\n }\n return rect\n } else {\n var from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) { to++; takeSide = -1; }\n else if (side >= 0 && offset == node.nodeValue.length) { from--; takeSide = 1; }\n else if (side < 0) { from--; }\n else { to ++; }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0)\n }\n }\n\n // Return a horizontal line in block context\n if (!view.state.doc.resolve(pos).parent.inlineContent) {\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before = node.childNodes[offset - 1];\n if (before.nodeType == 1) { return flattenH(before.getBoundingClientRect(), false) }\n }\n if (offset < nodeSize(node)) {\n var after = node.childNodes[offset];\n if (after.nodeType == 1) { return flattenH(after.getBoundingClientRect(), true) }\n }\n return flattenH(node.getBoundingClientRect(), side >= 0)\n }\n\n // Inline, not in text node (this is not Bidi-safe)\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before$1 = node.childNodes[offset - 1];\n var target = before$1.nodeType == 3 ? textRange(before$1, nodeSize(before$1) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before$1.nodeType == 1 && (before$1.nodeName != \"BR\" || !before$1.nextSibling) ? before$1 : null;\n if (target) { return flattenV(singleRect(target, 1), false) }\n }\n if (offset < nodeSize(node)) {\n var after$1 = node.childNodes[offset];\n while (after$1.pmViewDesc && after$1.pmViewDesc.ignoreForCoords) { after$1 = after$1.nextSibling; }\n var target$1 = !after$1 ? null : after$1.nodeType == 3 ? textRange(after$1, 0, (supportEmptyRange ? 0 : 1))\n : after$1.nodeType == 1 ? after$1 : null;\n if (target$1) { return flattenV(singleRect(target$1, -1), true) }\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0)\n}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) { return rect }\n var x = left ? rect.left : rect.right;\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) { return rect }\n var y = top ? rect.top : rect.bottom;\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n var viewState = view.state, active = view.root.activeElement;\n if (viewState != state) { view.updateState(state); }\n if (active != view.dom) { view.focus(); }\n try {\n return f()\n } finally {\n if (viewState != state) { view.updateState(viewState); }\n if (active != view.dom && active) { active.focus(); }\n }\n}\n\n// : (EditorView, number, number)\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n var sel = state.selection;\n var $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, function () {\n var ref = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n var dom = ref.node;\n for (;;) {\n var nearest = view.docView.nearestDesc(dom, true);\n if (!nearest) { break }\n if (nearest.node.isBlock) { dom = nearest.dom; break }\n dom = nearest.dom.parentNode;\n }\n var coords = coordsAtPos(view, $pos.pos, 1);\n for (var child = dom.firstChild; child; child = child.nextSibling) {\n var boxes = (void 0);\n if (child.nodeType == 1) { boxes = child.getClientRects(); }\n else if (child.nodeType == 3) { boxes = textRange(child, 0, child.nodeValue.length).getClientRects(); }\n else { continue }\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n { return false }\n }\n }\n return true\n })\n}\n\nvar maybeRTL = /[\\u0590-\\u08ac]/;\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n var ref = state.selection;\n var $head = ref.$head;\n if (!$head.parent.isTextblock) { return false }\n var offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n var sel = view.root.getSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n { return dir == \"left\" || dir == \"backward\" ? atStart : atEnd }\n\n return withFlushedState(view, state, function () {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n var oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset;\n var oldBidiLevel = sel.caretBidiLevel; // Only for Firefox\n sel.modify(\"move\", dir, \"character\");\n var parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n var result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset);\n // Restore the previous selection\n sel.removeAllRanges();\n sel.addRange(oldRange);\n if (oldBidiLevel != null) { sel.caretBidiLevel = oldBidiLevel; }\n return result\n })\n}\n\nvar cachedState = null, cachedDir = null, cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) { return cachedResult }\n cachedState = state; cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration], innerDecorations: DecorationSource) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), an array\n// of active decorations around the node (which are automatically\n// drawn, and the node view may ignore if it isn't interested in\n// them), and a [decoration source](#view.DecorationSource) that\n// represents any decorations that apply to the content of the node\n// (which again may be ignored). It should return true if it was\n// able to update to that node, and false otherwise. If the node\n// view has a `contentDOM` property (or no `dom` property), updating\n// its child nodes will be handled by ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed. (Not available for marks.)\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\n\nvar NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nvar ViewDesc = function ViewDesc(parent, children, dom, contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n};\n\nvar prototypeAccessors = { size: { configurable: true },border: { configurable: true },posBefore: { configurable: true },posAtStart: { configurable: true },posAfter: { configurable: true },posAtEnd: { configurable: true },contentLost: { configurable: true },domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n// Used to check whether a given description corresponds to a\n// widget/mark/node.\nViewDesc.prototype.matchesWidget = function matchesWidget () { return false };\nViewDesc.prototype.matchesMark = function matchesMark () { return false };\nViewDesc.prototype.matchesNode = function matchesNode () { return false };\nViewDesc.prototype.matchesHack = function matchesHack (_nodeName) { return false };\n\n// : () → ?ParseRule\n// When parsing in-editor content (in domchange.js), we allow\n// descriptions to determine the parse rules that should be used to\n// parse them.\nViewDesc.prototype.parseRule = function parseRule () { return null };\n\n// : (dom.Event) → bool\n// Used by the editor's event handler to ignore events that come\n// from certain descs.\nViewDesc.prototype.stopEvent = function stopEvent () { return false };\n\n// The size of the content represented by this desc.\nprototypeAccessors.size.get = function () {\n var size = 0;\n for (var i = 0; i < this.children.length; i++) { size += this.children[i].size; }\n return size\n};\n\n// For block nodes, this represents the space taken up by their\n// start/end tokens.\nprototypeAccessors.border.get = function () { return 0 };\n\nViewDesc.prototype.destroy = function destroy () {\n this.parent = null;\n if (this.dom.pmViewDesc == this) { this.dom.pmViewDesc = null; }\n for (var i = 0; i < this.children.length; i++)\n { this.children[i].destroy(); }\n};\n\nViewDesc.prototype.posBeforeChild = function posBeforeChild (child) {\n for (var i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n var cur = this.children[i];\n if (cur == child) { return pos }\n pos += cur.size;\n }\n};\n\nprototypeAccessors.posBefore.get = function () {\n return this.parent.posBeforeChild(this)\n};\n\nprototypeAccessors.posAtStart.get = function () {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n};\n\nprototypeAccessors.posAfter.get = function () {\n return this.posBefore + this.size\n};\n\nprototypeAccessors.posAtEnd.get = function () {\n return this.posAtStart + this.size - 2 * this.border\n};\n\n// : (dom.Node, number, ?number) → number\nViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n var domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) { domBefore = domBefore.previousSibling; }\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n var domAfter, desc$1;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc$1 = domAfter.pmViewDesc) && desc$1.parent == this)) { domAfter = domAfter.nextSibling; }\n return domAfter ? this.posBeforeChild(desc$1) : this.posAtEnd\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n var atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n } else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n } else if (this.dom.firstChild) {\n if (offset == 0) { for (var search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) { break }\n } }\n if (atEnd == null && offset == dom.childNodes.length) { for (var search$1 = dom;; search$1 = search$1.parentNode) {\n if (search$1 == this.dom) { atEnd = true; break }\n if (search$1.parentNode.lastChild != search$1) { break }\n } }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n};\n\n// Scan up the dom finding the first desc that is a descendant of\n// this one.\nViewDesc.prototype.nearestDesc = function nearestDesc (dom, onlyNodes) {\n for (var first = true, cur = dom; cur; cur = cur.parentNode) {\n var desc = this.getDesc(cur);\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n { first = false; }\n else\n { return desc }\n }\n }\n};\n\nViewDesc.prototype.getDesc = function getDesc (dom) {\n var desc = dom.pmViewDesc;\n for (var cur = desc; cur; cur = cur.parent) { if (cur == this) { return desc } }\n};\n\nViewDesc.prototype.posFromDOM = function posFromDOM (dom, offset, bias) {\n for (var scan = dom; scan; scan = scan.parentNode) {\n var desc = this.getDesc(scan);\n if (desc) { return desc.localPosFromDOM(dom, offset, bias) }\n }\n return -1\n};\n\n// : (number) → ?NodeViewDesc\n// Find the desc for the node after the given pos, if any. (When a\n// parent node overrode rendering, there might not be one.)\nViewDesc.prototype.descAt = function descAt (pos) {\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) { child = child.children[0]; }\n return child\n }\n if (pos < end) { return child.descAt(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// : (number, number) → {node: dom.Node, offset: number}\nViewDesc.prototype.domFromPos = function domFromPos (pos, side) {\n if (!this.contentDOM) { return {node: this.dom, offset: 0} }\n // First find the position in the child array\n var i = 0, offset = 0;\n for (var curPos = 0; i < this.children.length; i++) {\n var child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) { offset = pos - curPos; break }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset) { return this.children[i].domFromPos(offset - this.children[i].border, side) }\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (var prev = (void 0); i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.widget.type.side >= 0; i--) {}\n // Scan towards the first useable node\n if (side <= 0) {\n var prev$1, enter = true;\n for (;; i--, enter = false) {\n prev$1 = i ? this.children[i - 1] : null;\n if (!prev$1 || prev$1.dom.parentNode == this.contentDOM) { break }\n }\n if (prev$1 && side && enter && !prev$1.border && !prev$1.domAtom) { return prev$1.domFromPos(prev$1.size, side) }\n return {node: this.contentDOM, offset: prev$1 ? domIndex(prev$1.dom) + 1 : 0}\n } else {\n var next, enter$1 = true;\n for (;; i++, enter$1 = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM) { break }\n }\n if (next && enter$1 && !next.border && !next.domAtom) { return next.domFromPos(0, side) }\n return {node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length}\n }\n};\n\n// Used to find a DOM range in a single parent for a given changed\n// range.\nViewDesc.prototype.parseRange = function parseRange (from, to, base) {\n if ( base === void 0 ) base = 0;\n\n if (this.children.length == 0)\n { return {node: this.contentDOM, from: from, to: to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length} }\n\n var fromOffset = -1, toOffset = -1;\n for (var offset = base, i = 0;; i++) {\n var child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n var childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n { return child.parseRange(from, to, childBase) }\n\n from = offset;\n for (var j = i; j > 0; j--) {\n var prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break\n }\n from -= prev.size;\n }\n if (fromOffset == -1) { fromOffset = 0; }\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (var j$1 = i + 1; j$1 < this.children.length; j$1++) {\n var next = this.children[j$1];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break\n }\n to += next.size;\n }\n if (toOffset == -1) { toOffset = this.contentDOM.childNodes.length; }\n break\n }\n offset = end;\n }\n return {node: this.contentDOM, from: from, to: to, fromOffset: fromOffset, toOffset: toOffset}\n};\n\nViewDesc.prototype.emptyChildAt = function emptyChildAt (side) {\n if (this.border || !this.contentDOM || !this.children.length) { return false }\n var child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side)\n};\n\n// : (number) → dom.Node\nViewDesc.prototype.domAfterPos = function domAfterPos (pos) {\n var ref = this.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n if (node.nodeType != 1 || offset == node.childNodes.length)\n { throw new RangeError(\"No node after pos \" + pos) }\n return node.childNodes[offset]\n};\n\n// : (number, number, dom.Document)\n// View descs are responsible for setting any selection that falls\n// entirely inside of them, so that custom implementations can do\n// custom things with the selection. Note that this falls apart when\n// a selection starts in such a node and ends in another, in which\n// case we just use whatever domFromPos produces as a best effort.\nViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n // If the selection falls entirely in a child, give it to that child\n var from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n { return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force) }\n offset = end;\n }\n\n var anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n var headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n var domSel = root.getSelection();\n\n var brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((result.gecko || result.safari) && anchor == head) {\n var node = anchorDOM.node;\n var offset$1 = anchorDOM.offset;\n if (node.nodeType == 3) {\n brKludge = offset$1 && node.nodeValue[offset$1 - 1] == \"\\n\";\n // Issue #1128\n if (brKludge && offset$1 == node.nodeValue.length) {\n for (var scan = node, after = (void 0); scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n { anchorDOM = headDOM = {node: after.parentNode, offset: domIndex(after) + 1}; }\n break\n }\n var desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock) { break }\n }\n }\n } else {\n var prev = node.childNodes[offset$1 - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (result.gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n var after$1 = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after$1 && after$1.contentEditable == \"false\") { force = true; }\n }\n\n if (!(force || brKludge && result.safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n { return }\n\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n var domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head) { domSel.extend(headDOM.node, headDOM.offset); }\n domSelExtended = true;\n } catch (err) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n if (!(err instanceof DOMException)) { throw err }\n // declare global: DOMException\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { var tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp; }\n var range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n};\n\n// : (dom.MutationRecord) → bool\nViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n};\n\nprototypeAccessors.contentLost.get = function () {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n};\n\n// Remove a subtree of the element tree that has been touched\n// by a DOM change, so that the next update will redraw it.\nViewDesc.prototype.markDirty = function markDirty (from, to) {\n for (var offset = 0, i = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n var startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM)) { child.dirty = NODE_DIRTY; }\n else { child.markDirty(from - startInside, to - startInside); }\n return\n } else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n};\n\nViewDesc.prototype.markParentsDirty = function markParentsDirty () {\n var level = 1;\n for (var node = this.parent; node; node = node.parent, level++) {\n var dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty) { node.dirty = dirty; }\n }\n};\n\nprototypeAccessors.domAtom.get = function () { return false };\n\nprototypeAccessors.ignoreForCoords.get = function () { return false };\n\nObject.defineProperties( ViewDesc.prototype, prototypeAccessors );\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nvar nothing = [];\n\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nvar WidgetViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function WidgetViewDesc(parent, widget, view, pos) {\n var self, dom = widget.type.toDOM;\n if (typeof dom == \"function\") { dom = dom(view, function () {\n if (!self) { return pos }\n if (self.parent) { return self.parent.posBeforeChild(self) }\n }); }\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n var wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = false;\n dom.classList.add(\"ProseMirror-widget\");\n }\n ViewDesc.call(this, parent, nothing, dom, null);\n this.widget = widget;\n self = this;\n }\n\n if ( ViewDesc ) WidgetViewDesc.__proto__ = ViewDesc;\n WidgetViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n WidgetViewDesc.prototype.constructor = WidgetViewDesc;\n\n var prototypeAccessors$1 = { domAtom: { configurable: true } };\n\n WidgetViewDesc.prototype.matchesWidget = function matchesWidget (widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n };\n\n WidgetViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n\n WidgetViewDesc.prototype.stopEvent = function stopEvent (event) {\n var stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false\n };\n\n WidgetViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n };\n\n WidgetViewDesc.prototype.destroy = function destroy () {\n this.widget.type.destroy(this.dom);\n ViewDesc.prototype.destroy.call(this);\n };\n\n prototypeAccessors$1.domAtom.get = function () { return true };\n\n Object.defineProperties( WidgetViewDesc.prototype, prototypeAccessors$1 );\n\n return WidgetViewDesc;\n}(ViewDesc));\n\nvar CompositionViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function CompositionViewDesc(parent, dom, textDOM, text) {\n ViewDesc.call(this, parent, nothing, dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n\n if ( ViewDesc ) CompositionViewDesc.__proto__ = ViewDesc;\n CompositionViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n CompositionViewDesc.prototype.constructor = CompositionViewDesc;\n\n var prototypeAccessors$2 = { size: { configurable: true } };\n\n prototypeAccessors$2.size.get = function () { return this.text.length };\n\n CompositionViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset) {\n if (dom != this.textDOM) { return this.posAtStart + (offset ? this.size : 0) }\n return this.posAtStart + offset\n };\n\n CompositionViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.textDOM, offset: pos}\n };\n\n CompositionViewDesc.prototype.ignoreMutation = function ignoreMutation (mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n };\n\n Object.defineProperties( CompositionViewDesc.prototype, prototypeAccessors$2 );\n\n return CompositionViewDesc;\n}(ViewDesc));\n\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nvar MarkViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function MarkViewDesc(parent, mark, dom, contentDOM) {\n ViewDesc.call(this, parent, [], dom, contentDOM);\n this.mark = mark;\n }\n\n if ( ViewDesc ) MarkViewDesc.__proto__ = ViewDesc;\n MarkViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n MarkViewDesc.prototype.constructor = MarkViewDesc;\n\n MarkViewDesc.create = function create (parent, mark, inline, view) {\n var custom = view.nodeViews[mark.type.name];\n var spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n { spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline)); }\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n };\n\n MarkViewDesc.prototype.parseRule = function parseRule () {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView) { return null }\n return {mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM}\n };\n\n MarkViewDesc.prototype.matchesMark = function matchesMark (mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark) };\n\n MarkViewDesc.prototype.markDirty = function markDirty (from, to) {\n ViewDesc.prototype.markDirty.call(this, from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n var parent = this.parent;\n while (!parent.node) { parent = parent.parent; }\n if (parent.dirty < this.dirty) { parent.dirty = this.dirty; }\n this.dirty = NOT_DIRTY;\n }\n };\n\n MarkViewDesc.prototype.slice = function slice (from, to, view) {\n var copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n var nodes = this.children, size = this.size;\n if (to < size) { nodes = replaceNodes(nodes, to, size, view); }\n if (from > 0) { nodes = replaceNodes(nodes, 0, from, view); }\n for (var i = 0; i < nodes.length; i++) { nodes[i].parent = copy; }\n copy.children = nodes;\n return copy\n };\n\n return MarkViewDesc;\n}(ViewDesc));\n\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nvar NodeViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n ViewDesc.call(this, parent, node.isLeaf ? nothing : [], dom, contentDOM);\n this.nodeDOM = nodeDOM;\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n if (contentDOM) { this.updateChildren(view, pos); }\n }\n\n if ( ViewDesc ) NodeViewDesc.__proto__ = ViewDesc;\n NodeViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n NodeViewDesc.prototype.constructor = NodeViewDesc;\n\n var prototypeAccessors$3 = { size: { configurable: true },border: { configurable: true },domAtom: { configurable: true } };\n\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n NodeViewDesc.create = function create (parent, node, outerDeco, innerDeco, view, pos) {\n var assign;\n\n var custom = view.nodeViews[node.type.name], descObj;\n var spec = custom && custom(node, view, function () {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj) { return pos }\n if (descObj.parent) { return descObj.parent.posBeforeChild(descObj) }\n }, outerDeco, innerDeco);\n\n var dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom) { dom = document.createTextNode(node.text); }\n else if (dom.nodeType != 3) { throw new RangeError(\"Text must be rendered as a DOM text node\") }\n } else if (!dom) {\n((assign = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)), dom = assign.dom, contentDOM = assign.contentDOM));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
        \n if (!dom.hasAttribute(\"contenteditable\")) { dom.contentEditable = false; }\n if (node.type.spec.draggable) { dom.draggable = true; }\n }\n\n var nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n\n if (spec)\n { return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n spec, view, pos + 1) }\n else if (node.isText)\n { return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) }\n else\n { return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos + 1) }\n };\n\n NodeViewDesc.prototype.parseRule = function parseRule () {\n var this$1 = this;\n\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) { return null }\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n var rule = {node: this.node.type.name, attrs: this.node.attrs};\n if (this.node.type.whitespace == \"pre\") { rule.preserveWhitespace = \"full\"; }\n if (!this.contentDOM) {\n rule.getContent = function () { return this$1.node.content; };\n } else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n } else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (var i = this.children.length - 1; i >= 0; i--) {\n var child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break\n }\n }\n if (!rule.contentElement) { rule.getContent = function () { return Fragment.empty; }; }\n }\n return rule\n };\n\n NodeViewDesc.prototype.matchesNode = function matchesNode (node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco)\n };\n\n prototypeAccessors$3.size.get = function () { return this.node.nodeSize };\n\n prototypeAccessors$3.border.get = function () { return this.node.isLeaf ? 0 : 1 };\n\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n NodeViewDesc.prototype.updateChildren = function updateChildren (view, pos) {\n var this$1 = this;\n\n var inline = this.node.inlineContent, off = pos;\n var composition = view.composing && this.localCompositionInfo(view, pos);\n var localComposition = composition && composition.pos > -1 ? composition : null;\n var compositionInChild = composition && composition.pos < 0;\n var updater = new ViewTreeUpdater(this, localComposition && localComposition.node);\n iterDeco(this.node, this.innerDeco, function (widget, i, insideNode) {\n if (widget.spec.marks)\n { updater.syncToMarks(widget.spec.marks, inline, view); }\n else if (widget.type.side >= 0 && !insideNode)\n { updater.syncToMarks(i == this$1.node.childCount ? Mark.none : this$1.node.child(i).marks, inline, view); }\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, function (child, outerDeco, innerDeco, i) {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n var compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ; else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ; else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i)) ; else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view);\n if (this.node.isTextblock) { updater.addTextblockHacks(); }\n updater.destroyRest();\n\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition) { this.protectLocalComposition(view, localComposition); }\n renderDescs(this.contentDOM, this.children, view);\n if (result.ios) { iosHacks(this.dom); }\n }\n };\n\n NodeViewDesc.prototype.localCompositionInfo = function localCompositionInfo (view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n var ref = view.state.selection;\n var from = ref.from;\n var to = ref.to;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) { return }\n var sel = view.root.getSelection();\n var textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode)) { return }\n\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n var text = textNode.nodeValue;\n var textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : {node: textNode, pos: textPos, text: text}\n } else {\n return {node: textNode, pos: -1}\n }\n };\n\n NodeViewDesc.prototype.protectLocalComposition = function protectLocalComposition (view, ref) {\n var node = ref.node;\n var pos = ref.pos;\n var text = ref.text;\n\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node)) { return }\n\n // Create a composition view for the orphaned nodes\n var topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) { break }\n while (topNode.previousSibling) { topNode.parentNode.removeChild(topNode.previousSibling); }\n while (topNode.nextSibling) { topNode.parentNode.removeChild(topNode.nextSibling); }\n if (topNode.pmViewDesc) { topNode.pmViewDesc = null; }\n }\n var desc = new CompositionViewDesc(this, topNode, node, text);\n view.compositionNodes.push(desc);\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n };\n\n // : (Node, [Decoration], DecorationSource, EditorView) → bool\n // If this desc be updated to match the given node decoration,\n // do so and return true.\n NodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node)) { return false }\n this.updateInner(node, outerDeco, innerDeco, view);\n return true\n };\n\n NodeViewDesc.prototype.updateInner = function updateInner (node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM) { this.updateChildren(view, this.posAtStart); }\n this.dirty = NOT_DIRTY;\n };\n\n NodeViewDesc.prototype.updateOuterDeco = function updateOuterDeco (outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) { return }\n var needsWrap = this.nodeDOM.nodeType != 1;\n var oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n };\n\n // Mark this node as being the selected node.\n NodeViewDesc.prototype.selectNode = function selectNode () {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.draggable = true; }\n };\n\n // Remove selected node marking from this node.\n NodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.removeAttribute(\"draggable\"); }\n };\n\n prototypeAccessors$3.domAtom.get = function () { return this.node.isAtom };\n\n Object.defineProperties( NodeViewDesc.prototype, prototypeAccessors$3 );\n\n return NodeViewDesc;\n}(ViewDesc));\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nvar TextViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view);\n }\n\n if ( NodeViewDesc ) TextViewDesc.__proto__ = NodeViewDesc;\n TextViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n TextViewDesc.prototype.constructor = TextViewDesc;\n\n var prototypeAccessors$4 = { domAtom: { configurable: true } };\n\n TextViewDesc.prototype.parseRule = function parseRule () {\n var skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco) { skip = skip.parentNode; }\n return {skip: skip || true}\n };\n\n TextViewDesc.prototype.update = function update (node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) { return false }\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM) { view.trackWrites = null; }\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true\n };\n\n TextViewDesc.prototype.inParent = function inParent () {\n var parentDOM = this.parent.contentDOM;\n for (var n = this.nodeDOM; n; n = n.parentNode) { if (n == parentDOM) { return true } }\n return false\n };\n\n TextViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.nodeDOM, offset: pos}\n };\n\n TextViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n if (dom == this.nodeDOM) { return this.posAtStart + Math.min(offset, this.node.text.length) }\n return NodeViewDesc.prototype.localPosFromDOM.call(this, dom, offset, bias)\n };\n\n TextViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n };\n\n TextViewDesc.prototype.slice = function slice (from, to, view) {\n var node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view)\n };\n\n TextViewDesc.prototype.markDirty = function markDirty (from, to) {\n NodeViewDesc.prototype.markDirty.call(this, from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n { this.dirty = NODE_DIRTY; }\n };\n\n prototypeAccessors$4.domAtom.get = function () { return false };\n\n Object.defineProperties( TextViewDesc.prototype, prototypeAccessors$4 );\n\n return TextViewDesc;\n}(NodeViewDesc));\n\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nvar TrailingHackViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function TrailingHackViewDesc () {\n ViewDesc.apply(this, arguments);\n }\n\n if ( ViewDesc ) TrailingHackViewDesc.__proto__ = ViewDesc;\n TrailingHackViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n TrailingHackViewDesc.prototype.constructor = TrailingHackViewDesc;\n\n var prototypeAccessors$5 = { domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n TrailingHackViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n TrailingHackViewDesc.prototype.matchesHack = function matchesHack (nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName };\n prototypeAccessors$5.domAtom.get = function () { return true };\n prototypeAccessors$5.ignoreForCoords.get = function () { return this.dom.nodeName == \"IMG\" };\n\n Object.defineProperties( TrailingHackViewDesc.prototype, prototypeAccessors$5 );\n\n return TrailingHackViewDesc;\n}(ViewDesc));\n\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nvar CustomNodeViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n\n if ( NodeViewDesc ) CustomNodeViewDesc.__proto__ = NodeViewDesc;\n CustomNodeViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n CustomNodeViewDesc.prototype.constructor = CustomNodeViewDesc;\n\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n CustomNodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY) { return false }\n if (this.spec.update) {\n var result = this.spec.update(node, outerDeco, innerDeco);\n if (result) { this.updateInner(node, outerDeco, innerDeco, view); }\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return NodeViewDesc.prototype.update.call(this, node, outerDeco, innerDeco, view)\n }\n };\n\n CustomNodeViewDesc.prototype.selectNode = function selectNode () {\n this.spec.selectNode ? this.spec.selectNode() : NodeViewDesc.prototype.selectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.spec.deselectNode ? this.spec.deselectNode() : NodeViewDesc.prototype.deselectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : NodeViewDesc.prototype.setSelection.call(this, anchor, head, root, force);\n };\n\n CustomNodeViewDesc.prototype.destroy = function destroy () {\n if (this.spec.destroy) { this.spec.destroy(); }\n NodeViewDesc.prototype.destroy.call(this);\n };\n\n CustomNodeViewDesc.prototype.stopEvent = function stopEvent (event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n };\n\n CustomNodeViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : NodeViewDesc.prototype.ignoreMutation.call(this, mutation)\n };\n\n return CustomNodeViewDesc;\n}(NodeViewDesc));\n\n// : (dom.Node, [ViewDesc])\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n var dom = parentDOM.firstChild, written = false;\n for (var i = 0; i < descs.length; i++) {\n var desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) { dom = rm(dom); written = true; }\n dom = dom.nextSibling;\n } else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n var pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) { dom = rm(dom); written = true; }\n if (written && view.trackWrites == parentDOM) { view.trackWrites = null; }\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) { this.nodeName = nodeName; }\n}\nOuterDecoLevel.prototype = Object.create(null);\n\nvar noDeco = [new OuterDecoLevel];\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) { return noDeco }\n\n var top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n\n for (var i = 0; i < outerDeco.length; i++) {\n var attrs = outerDeco[i].type.attrs;\n if (!attrs) { continue }\n if (attrs.nodeName)\n { result.push(top = new OuterDecoLevel(attrs.nodeName)); }\n\n for (var name in attrs) {\n var val = attrs[name];\n if (val == null) { continue }\n if (needsWrap && result.length == 1)\n { result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\")); }\n if (name == \"class\") { top.class = (top.class ? top.class + \" \" : \"\") + val; }\n else if (name == \"style\") { top.style = (top.style ? top.style + \";\" : \"\") + val; }\n else if (name != \"nodeName\") { top[name] = val; }\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) { return nodeDOM }\n\n var curDOM = nodeDOM;\n for (var i = 0; i < curComputed.length; i++) {\n var deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n var parent = (void 0);\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n } else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM\n}\n\nfunction patchAttributes(dom, prev, cur) {\n for (var name in prev)\n { if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n { dom.removeAttribute(name); } }\n for (var name$1 in cur)\n { if (name$1 != \"class\" && name$1 != \"style\" && name$1 != \"nodeName\" && cur[name$1] != prev[name$1])\n { dom.setAttribute(name$1, cur[name$1]); } }\n if (prev.class != cur.class) {\n var prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : nothing;\n var curList = cur.class ? cur.class.split(\" \").filter(Boolean) : nothing;\n for (var i = 0; i < prevList.length; i++) { if (curList.indexOf(prevList[i]) == -1)\n { dom.classList.remove(prevList[i]); } }\n for (var i$1 = 0; i$1 < curList.length; i$1++) { if (prevList.indexOf(curList[i$1]) == -1)\n { dom.classList.add(curList[i$1]); } }\n if (dom.classList.length == 0)\n { dom.removeAttribute(\"class\"); }\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n var prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n { dom.style.removeProperty(m[1]); }\n }\n if (cur.style)\n { dom.style.cssText += cur.style; }\n }\n}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!a[i].type.eq(b[i].type)) { return false } }\n return true\n}\n\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n var next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next\n}\n\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nvar ViewTreeUpdater = function ViewTreeUpdater(top, lockedNode) {\n this.top = top;\n this.lock = lockedNode;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n\n this.preMatch = preMatch(top.node.content, top);\n};\n\n// Destroy and remove the children between the given indices in\n// `this.top`.\nViewTreeUpdater.prototype.destroyBetween = function destroyBetween (start, end) {\n if (start == end) { return }\n for (var i = start; i < end; i++) { this.top.children[i].destroy(); }\n this.top.children.splice(start, end - start);\n this.changed = true;\n};\n\n// Destroy all remaining children in `this.top`.\nViewTreeUpdater.prototype.destroyRest = function destroyRest () {\n this.destroyBetween(this.index, this.top.children.length);\n};\n\n// : ([Mark], EditorView)\n// Sync the current stack of mark descs with the given array of\n// marks, reusing existing mark descs when possible.\nViewTreeUpdater.prototype.syncToMarks = function syncToMarks (marks, inline, view) {\n var keep = 0, depth = this.stack.length >> 1;\n var maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n { keep++; }\n\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n var found = -1;\n for (var i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n } else {\n var markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n};\n\n// : (Node, [Decoration], DecorationSource) → bool\n// Try to find a node desc matching the given data. Skip over it and\n// return true when successful.\nViewTreeUpdater.prototype.findNodeMatch = function findNodeMatch (node, outerDeco, innerDeco, index) {\n var found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n } else {\n for (var i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n var child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break\n }\n }\n }\n if (found < 0) { return false }\n this.destroyBetween(this.index, found);\n this.index++;\n return true\n};\n\nViewTreeUpdater.prototype.updateNodeAt = function updateNodeAt (node, outerDeco, innerDeco, index, view) {\n var child = this.top.children[index];\n if (!child.update(node, outerDeco, innerDeco, view)) { return false }\n this.destroyBetween(this.index, index);\n this.index = index + 1;\n return true\n};\n\nViewTreeUpdater.prototype.findIndexWithChild = function findIndexWithChild (domNode) {\n for (;;) {\n var parent = domNode.parentNode;\n if (!parent) { return -1 }\n if (parent == this.top.contentDOM) {\n var desc = domNode.pmViewDesc;\n if (desc) { for (var i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc) { return i }\n } }\n return -1\n }\n domNode = parent;\n }\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView, Fragment, number) → bool\n// Try to update the next node, if any, to the given data. Checks\n// pre-matches to avoid overwriting nodes that could still be used.\nViewTreeUpdater.prototype.updateNextNode = function updateNextNode (node, outerDeco, innerDeco, view, index) {\n for (var i = this.index; i < this.top.children.length; i++) {\n var next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n var preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index) { return false }\n var nextDOM = next.dom;\n\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n var locked = this.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM) { this.changed = true; }\n this.index++;\n return true\n }\n break\n }\n }\n return false\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView)\n// Insert the node as a newly created node desc.\nViewTreeUpdater.prototype.addNode = function addNode (node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos));\n this.changed = true;\n};\n\nViewTreeUpdater.prototype.placeWidget = function placeWidget (widget, view, pos) {\n var next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n } else {\n var desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n};\n\n// Make sure a textblock looks and behaves correctly in\n// contentEditable.\nViewTreeUpdater.prototype.addTextblockHacks = function addTextblockHacks () {\n var lastChild = this.top.children[this.index - 1];\n while (lastChild instanceof MarkViewDesc) { lastChild = lastChild.children[lastChild.children.length - 1]; }\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((result.safari || result.chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n { this.addHackNode(\"IMG\"); }\n this.addHackNode(\"BR\");\n }\n};\n\nViewTreeUpdater.prototype.addHackNode = function addHackNode (nodeName) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack(nodeName)) {\n this.index++;\n } else {\n var dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\") { dom.className = \"ProseMirror-trailingBreak\"; }\n this.top.children.splice(this.index++, 0, new TrailingHackViewDesc(this.top, nothing, dom, null));\n this.changed = true;\n }\n};\n\n// : (Fragment, [ViewDesc]) → {index: number, matched: Map, matches: ViewDesc[]}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n var curDesc = parentDesc, descI = curDesc.children.length;\n var fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n var desc = (void 0);\n for (;;) {\n if (descI) {\n var next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n } else {\n desc = next;\n descI--;\n break\n }\n } else if (curDesc == parentDesc) {\n break outer\n } else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n var node = desc.node;\n if (!node) { continue }\n if (node != frag.child(fI - 1)) { break }\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return {index: fI, matched: matched, matches: matches.reverse()}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSource, (Decoration, number), (Node, [Decoration], DecorationSource, number))\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n var locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (var i = 0; i < parent.childCount; i++) {\n var child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return\n }\n\n var decoIndex = 0, active = [], restNode = null;\n for (var parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n var widget = locals[decoIndex++], widgets = (void 0);\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n { (widgets || (widgets = [widget])).push(locals[decoIndex++]); }\n if (widgets) {\n widgets.sort(compareSide);\n for (var i$1 = 0; i$1 < widgets.length; i$1++) { onWidget(widgets[i$1], parentIndex, !!restNode); }\n } else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n\n var child$1 = (void 0), index = (void 0);\n if (restNode) {\n index = -1;\n child$1 = restNode;\n restNode = null;\n } else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child$1 = parent.child(parentIndex++);\n } else {\n break\n }\n\n for (var i$2 = 0; i$2 < active.length; i$2++) { if (active[i$2].to <= offset) { active.splice(i$2--, 1); } }\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n { active.push(locals[decoIndex++]); }\n\n var end = offset + child$1.nodeSize;\n if (child$1.isText) {\n var cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) { cutAt = locals[decoIndex].from; }\n for (var i$3 = 0; i$3 < active.length; i$3++) { if (active[i$3].to < cutAt) { cutAt = active[i$3].to; } }\n if (cutAt < end) {\n restNode = child$1.cut(cutAt - offset);\n child$1 = child$1.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n\n var outerDeco = !active.length ? nothing\n : child$1.isInline && !child$1.isLeaf ? active.filter(function (d) { return !d.inline; })\n : active.slice();\n onNode(child$1, outerDeco, deco.forChild(offset, child$1), index);\n offset = end;\n }\n}\n\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n var oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) { return node }\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n { return node.childNodes[offset] }\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else {\n return null\n }\n }\n}\n\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (var i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n var child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText) { continue }\n var str = child.text;\n while (i < frag.childCount) {\n var next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText) { break }\n str += next.text;\n }\n if (pos >= from) {\n var found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n { return childStart + found }\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n { return to }\n }\n }\n return -1\n}\n\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n var result = [];\n for (var i = 0, off = 0; i < nodes.length; i++) {\n var child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n } else {\n if (start < from) { result.push(child.slice(0, from - start, view)); }\n if (replacement) {\n result.push(replacement);\n replacement = null;\n }\n if (end > to) { result.push(child.slice(to - start, child.size, view)); }\n }\n }\n return result\n}\n\nfunction selectionFromDOM(view, origin) {\n var domSel = view.root.getSelection(), doc = view.state.doc;\n if (!domSel.focusNode) { return null }\n var nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n var head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n if (head < 0) { return null }\n var $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node) { nearestDesc = nearestDesc.parent; }\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n var pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n } else {\n var anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n if (anchor < 0) { return null }\n $anchor = doc.resolve(anchor);\n }\n\n if (!selection) {\n var bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection\n}\n\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom)\n}\n\nfunction selectionToDOM(view, force) {\n var sel = view.state.selection;\n syncNodeSelection(view, sel);\n\n if (!editorOwnsSelection(view)) { return }\n\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.mouseDown && view.mouseDown.allowDefault && result.chrome) {\n var domSel = view.root.getSelection(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset,\n curSel.anchorNode, curSel.anchorOffset)) {\n view.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return\n }\n }\n\n view.domObserver.disconnectSelection();\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n } else {\n var anchor = sel.anchor;\n var head = sel.head;\n var resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n { resetEditableFrom = temporarilyEditableNear(view, sel.from); }\n if (!sel.empty && !sel.$from.parent.inlineContent)\n { resetEditableTo = temporarilyEditableNear(view, sel.to); }\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) { resetEditable(resetEditableFrom); }\n if (resetEditableTo) { resetEditable(resetEditableTo); }\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document) { removeClassOnSelectionChange(view); }\n }\n }\n\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\n\nvar brokenSelectBetweenUneditable = result.safari || result.chrome && result.chrome_version < 63;\n\nfunction temporarilyEditableNear(view, pos) {\n var ref = view.docView.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n var after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n var before = offset ? node.childNodes[offset - 1] : null;\n if (result.safari && after && after.contentEditable == \"false\") { return setEditable(after) }\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) { return setEditable(after) }\n else if (before) { return setEditable(before) }\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (result.safari && element.draggable) { element.draggable = false; element.wasDraggable = true; }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null; }\n}\n\nfunction removeClassOnSelectionChange(view) {\n var doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n var domSel = view.root.getSelection();\n var node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = function () {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n setTimeout(function () {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n { view.dom.classList.remove(\"ProseMirror-hideselection\"); }\n }, 20);\n }\n });\n}\n\nfunction selectCursorWrapper(view) {\n var domSel = view.root.getSelection(), range = document.createRange();\n var node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img) { range.setEnd(node.parentNode, domIndex(node) + 1); }\n else { range.setEnd(node, 0); }\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && result.ie && result.ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\n\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n var desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc) { desc.selectNode(); }\n view.lastSelectedViewDesc = desc;\n }\n } else {\n clearNodeSelection(view);\n }\n}\n\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n { view.lastSelectedViewDesc.deselectNode(); }\n view.lastSelectedViewDesc = null;\n }\n}\n\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", function (f) { return f(view, $anchor, $head); })\n || TextSelection.between($anchor, $head, bias)\n}\n\nfunction hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) { return false }\n return hasSelection(view)\n}\n\nfunction hasSelection(view) {\n var sel = view.root.getSelection();\n if (!sel.anchorNode) { return false }\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode))\n } catch(_) {\n return false\n }\n}\n\nfunction anchorInRightPlace(view) {\n var anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n var domSel = view.root.getSelection();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n\nfunction moveSelectionBlock(state, dir) {\n var ref = state.selection;\n var $anchor = ref.$anchor;\n var $head = ref.$head;\n var $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n var $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir)\n}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection)) { return apply(view, next) }\n return false\n } else if (!(result.mac && mods.indexOf(\"m\") > -1)) {\n var $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText) { return false }\n var nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) { return false }\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head))\n } else if (result.webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)))\n } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n var next$1 = moveSelectionBlock(view.state, dir);\n if (next$1) { return apply(view, next$1) }\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\n\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesLeft(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (result.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) { force = true; }\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n var before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n } else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n } else { break }\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n var prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = 0;\n } else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force) { setSelFocus(view, sel, node, offset); }\n else if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var len = nodeLen(node);\n var moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) { break }\n var after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else { break }\n } else if (isBlockNode(node)) {\n break\n } else {\n var next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = len = 0;\n } else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\nfunction isBlockNode(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\n if (selectionCollapsed(sel)) {\n var range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n var state = view.state;\n // If no state update ends up happening, reset the selection.\n setTimeout(function () {\n if (view.state == state) { selectionToDOM(view); }\n }, 50);\n}\n\n// : (EditorState, number)\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1) { return false }\n if (result.mac && mods.indexOf(\"m\") > -1) { return false }\n var $from = sel.$from;\n var $to = sel.$to;\n\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n { return apply(view, next) }\n }\n if (!$from.parent.inlineContent) {\n var side = dir < 0 ? $from : $to;\n var beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false\n }\n return false\n}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return true }\n var ref = view.state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n var empty = ref.empty;\n if (!$head.sameParent($anchor)) { return true }\n if (!empty) { return false }\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) { return true }\n var nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n var tr = view.state.tr;\n if (dir < 0) { tr.delete($head.pos - nextNode.nodeSize, $head.pos); }\n else { tr.delete($head.pos, $head.pos + nextNode.nodeSize); }\n view.dispatch(tr);\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!result.safari || view.state.selection.$head.parentOffset > 0) { return }\n var ref = view.root.getSelection();\n var focusNode = ref.focusNode;\n var focusOffset = ref.focusOffset;\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n var child = focusNode.firstChild;\n switchEditable(view, child, true);\n setTimeout(function () { return switchEditable(view, child, false); }, 20);\n }\n}\n\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\n\nfunction getMods(event) {\n var result = \"\";\n if (event.ctrlKey) { result += \"c\"; }\n if (event.metaKey) { result += \"m\"; }\n if (event.altKey) { result += \"a\"; }\n if (event.shiftKey) { result += \"s\"; }\n return result\n}\n\nfunction captureKeyDown(view, event) {\n var code = event.keyCode, mods = getMods(event);\n if (code == 8 || (result.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (result.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (result.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n var ref = view.docView.parseRange(from_, to_);\n var parent = ref.node;\n var fromOffset = ref.fromOffset;\n var toOffset = ref.toOffset;\n var from = ref.from;\n var to = ref.to;\n\n var domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}];\n if (!selectionCollapsed(domSel))\n { find.push({node: domSel.focusNode, offset: domSel.focusOffset}); }\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (result.chrome && view.lastKeyCode === 8) {\n for (var off = toOffset; off > fromOffset; off--) {\n var node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) { break }\n }\n }\n var startDoc = view.state.doc;\n var parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n var $from = startDoc.resolve(from);\n\n var sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode: ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n var anchor$1 = find[0].pos, head = find[1] && find[1].pos;\n if (head == null) { head = anchor$1; }\n sel = {anchor: anchor$1 + from, head: head + from};\n }\n return {doc: doc, sel: sel, from: from, to: to}\n}\n\nfunction ruleFromNode(dom) {\n var desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (result.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n var skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return {skip: skip}\n } else if (dom.parentNode.lastChild == dom || result.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n var origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null;\n var newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n var tr$1 = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\") { tr$1.setMeta(\"pointer\", true); }\n else if (origin == \"key\") { tr$1.scrollIntoView(); }\n view.dispatch(tr$1);\n }\n return\n }\n\n var $before = view.state.doc.resolve(from);\n var shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n\n var sel = view.state.selection;\n var parse = parseBetween(view, from, to);\n\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (result.chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from) {\n var text = view.cursorWrapper.deco.type.toDOM.nextSibling;\n var size = text && text.nodeValue ? text.nodeValue.length : 1;\n parse.sel = {anchor: parse.sel.anchor + size, head: parse.sel.anchor + size};\n }\n\n var doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n var preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n } else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.lastKeyCode = null;\n\n var change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((result.ios && view.lastIOSEnter > Date.now() - 225 || result.android) &&\n addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to};\n } else {\n if (parse.sel) {\n var sel$1 = resolveSelection(view, view.state.doc, parse.sel);\n if (sel$1 && !sel$1.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel$1)); }\n }\n return\n }\n }\n view.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (result.ie && result.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n\n var $from = parse.doc.resolveNoCache(change.start - parse.from);\n var $to = parse.doc.resolveNoCache(change.endB - parse.from);\n var inlineChange = $from.sameParent($to) && $from.parent.inlineContent;\n var nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((result.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) {\n if (result.android && result.chrome) { view.domObserver.suppressSelectionUpdates(); } // #820\n return\n }\n\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (result.chrome && result.android && change.toB == change.from)\n { view.lastAndroidDelete = Date.now(); }\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (result.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(function () {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n\n var chFrom = change.start, chTo = change.endA;\n\n var tr, storedMarks, markChange, $from1;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (result.ie && result.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(function () { return selectionToDOM(view); }, 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr;\n if (markChange.type == \"add\") { tr.addMark(chFrom, chTo, markChange.mark); }\n else { tr.removeMark(chFrom, chTo, markChange.mark); }\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n var text$1 = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", function (f) { return f(view, chFrom, chTo, text$1); })) { return }\n tr = view.state.tr.insertText(text$1, chFrom, chTo);\n }\n }\n\n if (!tr)\n { tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from)); }\n if (parse.sel) {\n var sel$2 = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel$2 && !(result.chrome && result.android && view.composing && sel$2.empty &&\n (change.start != change.endB || view.lastAndroidDelete < Date.now() - 100) &&\n (sel$2.head == chFrom || sel$2.head == tr.mapping.map(chTo) - 1) ||\n result.ie && sel$2.empty && sel$2.head == chFrom))\n { tr.setSelection(sel$2); }\n }\n if (storedMarks) { tr.ensureMarks(storedMarks); }\n view.dispatch(tr.scrollIntoView());\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) { return null }\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n var curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n var added = curMarks, removed = prevMarks, type, mark, update;\n for (var i = 0; i < prevMarks.length; i++) { added = prevMarks[i].removeFromSet(added); }\n for (var i$1 = 0; i$1 < curMarks.length; i$1++) { removed = curMarks[i$1].removeFromSet(removed); }\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = function (node) { return node.mark(mark.addToSet(node.marks)); };\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = function (node) { return node.mark(mark.removeFromSet(node.marks)); };\n } else {\n return null\n }\n var updated = [];\n for (var i$2 = 0; i$2 < prev.childCount; i$2++) { updated.push(update(prev.child(i$2))); }\n if (Fragment.from(updated).eq(cur)) { return {mark: mark, type: type} }\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n { return false }\n\n var $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n { return false }\n var $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n { return false }\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n var depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n var next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n var start = a.findDiffStart(b, pos);\n if (start == null) { return null }\n var ref = a.findDiffEnd(b, pos + a.size, pos + b.size);\n var endA = ref.a;\n var endB = ref.b;\n if (preferredSide == \"end\") {\n var adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n var move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n } else if (endB < start) {\n var move$1 = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move$1;\n endA = start + (endA - endB);\n endB = start;\n }\n return {start: start, endA: endA, endB: endB}\n}\n\nfunction serializeForClipboard(view, slice) {\n var context = [];\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n var node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n\n var serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n var doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n var firstChild = wrap.firstChild, needsWrap;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (var i = needsWrap.length - 1; i >= 0; i--) {\n var wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) { wrapper.appendChild(wrap.firstChild); }\n wrap.appendChild(wrapper);\n if (needsWrap[i] != \"tbody\") {\n openStart++;\n openEnd++;\n }\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n { firstChild.setAttribute(\"data-pm-slice\", (openStart + \" \" + openEnd + \" \" + (JSON.stringify(context)))); }\n\n var text = view.someProp(\"clipboardTextSerializer\", function (f) { return f(slice); }) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n\n return {dom: wrap, text: text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n var dom, inCode = $context.parent.type.spec.code, slice;\n if (!html && !text) { return null }\n var asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", function (f) { text = f(text, inCode || plainText); });\n if (inCode) { return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty }\n var parsed = view.someProp(\"clipboardTextParser\", function (f) { return f(text, $context, plainText); });\n if (parsed) {\n slice = parsed;\n } else {\n var marks = $context.marks();\n var ref = view.state;\n var schema = ref.schema;\n var serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(function (block) {\n var p = dom.appendChild(document.createElement(\"p\"));\n if (block) { p.appendChild(serializer.serializeNode(schema.text(block, marks))); }\n });\n }\n } else {\n view.someProp(\"transformPastedHTML\", function (f) { html = f(html); });\n dom = readHTML(html);\n if (result.webkit) { restoreReplacedSpaces(dom); }\n }\n\n var contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n var sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"));\n if (!slice) {\n var parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode: function ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName)) { return {ignore: true} }\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3]);\n } else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n var openStart = 0, openEnd = 0;\n for (var node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating;\n openStart++, node = node.firstChild) {}\n for (var node$1 = slice.content.lastChild; openEnd < slice.openEnd && !node$1.type.spec.isolating;\n openEnd++, node$1 = node$1.lastChild) {}\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n return slice\n}\n\nvar inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2) { return fragment }\n var loop = function ( d ) {\n var parent = $context.node(d);\n var match = parent.contentMatchAt($context.index(d));\n var lastWrap = (void 0), result = [];\n fragment.forEach(function (node) {\n if (!result) { return }\n var wrap = match.findWrapping(node.type), inLast;\n if (!wrap) { return result = null }\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n } else {\n if (result.length) { result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length); }\n var wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type, wrapped.attrs);\n lastWrap = wrap;\n }\n });\n if (result) { return { v: Fragment.from(result) } }\n };\n\n for (var d = $context.depth; d >= 0; d--) {\n var returned = loop( d );\n\n if ( returned ) return returned.v;\n }\n return fragment\n}\n\nfunction withWrappers(node, wrap, from) {\n if ( from === void 0 ) from = 0;\n\n for (var i = wrap.length - 1; i >= from; i--)\n { node = wrap[i].create(null, Fragment.from(node)); }\n return node\n}\n\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n var inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner) { return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner)) }\n var match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n { return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1)))) }\n }\n}\n\nfunction closeRight(node, depth) {\n if (depth == 0) { return node }\n var fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n var fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill))\n}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n var node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (depth < to - 1) { inner = closeRange(inner, side, from, to, depth + 1, openEnd); }\n if (depth >= from)\n { inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true)); }\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner))\n}\n\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n { slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd); }\n if (openEnd < slice.openEnd)\n { slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd); }\n return slice\n}\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"
    \"` the table cells are ignored.\nvar wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\n\nvar _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n var metas = /^(\\s*]*>)*/.exec(html);\n if (metas) { html = html.slice(metas[0].length); }\n var elt = detachedDoc().createElement(\"div\");\n var firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n { html = wrap.map(function (n) { return \"<\" + n + \">\"; }).join(\"\") + html + wrap.map(function (n) { return \"\"; }).reverse().join(\"\"); }\n elt.innerHTML = html;\n if (wrap) { for (var i = 0; i < wrap.length; i++) { elt = elt.querySelector(wrap[i]) || elt; } }\n return elt\n}\n\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n var nodes = dom.querySelectorAll(result.chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n { node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node); }\n }\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) { return slice }\n var schema = slice.content.firstChild.type.schema, array;\n try { array = JSON.parse(context); }\n catch(e) { return slice }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n for (var i = array.length - 2; i >= 0; i -= 2) {\n var type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs()) { break }\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++; openEnd++;\n }\n return new Slice(content, openStart, openEnd)\n}\n\nvar observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nvar useCharData = result.ie && result.ie_version <= 11;\n\nvar SelectionState = function SelectionState() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null;\n};\n\nSelectionState.prototype.set = function set (sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset;\n};\n\nSelectionState.prototype.eq = function eq (sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n};\n\nvar DOMObserver = function DOMObserver(view, handleDOMChange) {\n var this$1 = this;\n\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(function (mutations) {\n for (var i = 0; i < mutations.length; i++) { this$1.queue.push(mutations[i]); }\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (result.ie && result.ie_version <= 11 && mutations.some(\n function (m) { return m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length; }))\n { this$1.flushSoon(); }\n else\n { this$1.flush(); }\n });\n this.currentSelection = new SelectionState;\n if (useCharData) {\n this.onCharData = function (e) {\n this$1.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue});\n this$1.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.suppressingSelectionUpdates = false;\n};\n\nDOMObserver.prototype.flushSoon = function flushSoon () {\n var this$1 = this;\n\n if (this.flushingSoon < 0)\n { this.flushingSoon = window.setTimeout(function () { this$1.flushingSoon = -1; this$1.flush(); }, 20); }\n};\n\nDOMObserver.prototype.forceFlush = function forceFlush () {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n};\n\nDOMObserver.prototype.start = function start () {\n if (this.observer)\n { this.observer.observe(this.view.dom, observeOptions); }\n if (useCharData)\n { this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.connectSelection();\n};\n\nDOMObserver.prototype.stop = function stop () {\n var this$1 = this;\n\n if (this.observer) {\n var take = this.observer.takeRecords();\n if (take.length) {\n for (var i = 0; i < take.length; i++) { this.queue.push(take[i]); }\n window.setTimeout(function () { return this$1.flush(); }, 20);\n }\n this.observer.disconnect();\n }\n if (useCharData) { this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.disconnectSelection();\n};\n\nDOMObserver.prototype.connectSelection = function connectSelection () {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.disconnectSelection = function disconnectSelection () {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.suppressSelectionUpdates = function suppressSelectionUpdates () {\n var this$1 = this;\n\n this.suppressingSelectionUpdates = true;\n setTimeout(function () { return this$1.suppressingSelectionUpdates = false; }, 50);\n};\n\nDOMObserver.prototype.onSelectionChange = function onSelectionChange () {\n if (!hasFocusAndSelection(this.view)) { return }\n if (this.suppressingSelectionUpdates) { return selectionToDOM(this.view) }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (result.ie && result.ie_version <= 11 && !this.view.state.selection.empty) {\n var sel = this.view.root.getSelection();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n { return this.flushSoon() }\n }\n this.flush();\n};\n\nDOMObserver.prototype.setCurSelection = function setCurSelection () {\n this.currentSelection.set(this.view.root.getSelection());\n};\n\nDOMObserver.prototype.ignoreSelectionChange = function ignoreSelectionChange (sel) {\n if (sel.rangeCount == 0) { return true }\n var container = sel.getRangeAt(0).commonAncestorContainer;\n var desc = this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection();\n return true\n }\n};\n\nDOMObserver.prototype.flush = function flush () {\n if (!this.view.docView || this.flushingSoon > -1) { return }\n var mutations = this.observer ? this.observer.takeRecords() : [];\n if (this.queue.length) {\n mutations = this.queue.concat(mutations);\n this.queue.length = 0;\n }\n\n var sel = this.view.root.getSelection();\n var newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel);\n\n var from = -1, to = -1, typeOver = false, added = [];\n if (this.view.editable) {\n for (var i = 0; i < mutations.length; i++) {\n var result$1 = this.registerMutation(mutations[i], added);\n if (result$1) {\n from = from < 0 ? result$1.from : Math.min(result$1.from, from);\n to = to < 0 ? result$1.to : Math.max(result$1.to, to);\n if (result$1.typeOver) { typeOver = true; }\n }\n }\n }\n\n if (result.gecko && added.length > 1) {\n var brs = added.filter(function (n) { return n.nodeName == \"BR\"; });\n if (brs.length == 2) {\n var a = brs[0];\n var b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) { b.remove(); }\n else { a.remove(); }\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to);\n checkCSS(this.view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (this.view.docView && this.view.docView.dirty) { this.view.updateState(this.view.state); }\n else if (!this.currentSelection.eq(sel)) { selectionToDOM(this.view); }\n this.currentSelection.set(sel);\n }\n};\n\nDOMObserver.prototype.registerMutation = function registerMutation (mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) { return null }\n var desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n { return null }\n if (!desc || desc.ignoreMutation(mut)) { return null }\n\n if (mut.type == \"childList\") {\n for (var i = 0; i < mut.addedNodes.length; i++) { added.push(mut.addedNodes[i]); }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n { return {from: desc.posBefore, to: desc.posAfter} }\n var prev = mut.previousSibling, next = mut.nextSibling;\n if (result.ie && result.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (var i$1 = 0; i$1 < mut.addedNodes.length; i$1++) {\n var ref = mut.addedNodes[i$1];\n var previousSibling = ref.previousSibling;\n var nextSibling = ref.nextSibling;\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) { prev = previousSibling; }\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) { next = nextSibling; }\n }\n }\n var fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n var from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n var toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n var to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return {from: from, to: to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n};\n\nvar cssChecked = false;\n\nfunction checkCSS(view) {\n if (cssChecked) { return }\n cssChecked = true;\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n { console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"); }\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nvar handlers = {}, editHandlers = {};\n\nfunction initInput(view) {\n view.shiftKey = false;\n view.mouseDown = null;\n view.lastKeyCode = null;\n view.lastKeyCodeTime = 0;\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"};\n view.lastSelectionOrigin = null;\n view.lastSelectionTime = 0;\n\n view.lastIOSEnter = 0;\n view.lastIOSEnterFallbackTimeout = null;\n view.lastAndroidDelete = 0;\n\n view.composing = false;\n view.composingTimeout = null;\n view.compositionNodes = [];\n view.compositionEndedAt = -2e8;\n\n view.domObserver = new DOMObserver(view, function (from, to, typeOver, added) { return readDOMChange(view, from, to, typeOver, added); });\n view.domObserver.start();\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0;\n\n view.eventHandlers = Object.create(null);\n var loop = function ( event ) {\n var handler = handlers[event];\n view.dom.addEventListener(event, view.eventHandlers[event] = function (event) {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n { handler(view, event); }\n });\n };\n\n for (var event in handlers) loop( event );\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (result.safari) { view.dom.addEventListener(\"input\", function () { return null; }); }\n\n ensureListeners(view);\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin;\n view.lastSelectionTime = Date.now();\n}\n\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (var type in view.eventHandlers)\n { view.dom.removeEventListener(type, view.eventHandlers[type]); }\n clearTimeout(view.composingTimeout);\n clearTimeout(view.lastIOSEnterFallbackTimeout);\n}\n\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", function (currentHandlers) {\n for (var type in currentHandlers) { if (!view.eventHandlers[type])\n { view.dom.addEventListener(type, view.eventHandlers[type] = function (event) { return runCustomHandler(view, event); }); } }\n });\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", function (handlers) {\n var handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) { return true }\n if (event.defaultPrevented) { return false }\n for (var node = event.target; node != view.dom; node = node.parentNode)\n { if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n { return false } }\n return true\n}\n\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n { handlers[event.type](view, event); }\n}\n\neditHandlers.keydown = function (view, event) {\n view.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event)) { return }\n view.lastKeyCode = event.keyCode;\n view.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (result.android && result.chrome && event.keyCode == 13) { return }\n if (event.keyCode != 229) { view.domObserver.forceFlush(); }\n\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (result.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n var now = Date.now();\n view.lastIOSEnter = now;\n view.lastIOSEnterFallbackTimeout = setTimeout(function () {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n view.lastIOSEnter = 0;\n }\n }, 200);\n } else if (view.someProp(\"handleKeyDown\", function (f) { return f(view, event); }) || captureKeyDown(view, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"key\");\n }\n};\n\neditHandlers.keyup = function (view, e) {\n if (e.keyCode == 16) { view.shiftKey = false; }\n};\n\neditHandlers.keypress = function (view, event) {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || result.mac && event.metaKey) { return }\n\n if (view.someProp(\"handleKeyPress\", function (f) { return f(view, event); })) {\n event.preventDefault();\n return\n }\n\n var sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n var text = String.fromCharCode(event.charCode);\n if (!view.someProp(\"handleTextInput\", function (f) { return f(view, sel.$from.pos, sel.$to.pos, text); }))\n { view.dispatch(view.state.tr.insertText(text).scrollIntoView()); }\n event.preventDefault();\n }\n};\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n var dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside);\n var loop = function ( i ) {\n if (view.someProp(propName, function (f) { return i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false); }))\n { return { v: true } }\n };\n\n for (var i = $pos.depth + 1; i > 0; i--) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) { view.focus(); }\n var tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\") { tr.setMeta(\"pointer\", true); }\n view.dispatch(tr);\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) { return false }\n var sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection) { selectedNode = sel.node; }\n\n var $pos = view.state.doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n { selectAt = $pos.before(sel.$from.depth); }\n else\n { selectAt = $pos.before(i); }\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", function (f) { return f(view, pos, event); }) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", function (f) { return f(view, pos, event); })\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", function (f) { return f(view, pos, event); }) ||\n defaultTripleClick(view, inside, event)\n}\n\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0) { return false }\n var doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true\n }\n return false\n }\n\n var $pos = doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n var nodePos = $pos.before(i);\n if (node.inlineContent)\n { updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\"); }\n else if (NodeSelection.isSelectable(node))\n { updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\"); }\n else\n { continue }\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nvar selectNodeModifier = result.mac ? \"metaKey\" : \"ctrlKey\";\n\nhandlers.mousedown = function (view, event) {\n view.shiftKey = event.shiftKey;\n var flushed = forceDOMFlush(view);\n var now = Date.now(), type = \"singleClick\";\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") { type = \"doubleClick\"; }\n else if (view.lastClick.type == \"doubleClick\") { type = \"tripleClick\"; }\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type: type};\n\n var pos = view.posAtCoords(eventCoords(event));\n if (!pos) { return }\n\n if (type == \"singleClick\") {\n if (view.mouseDown) { view.mouseDown.done(); }\n view.mouseDown = new MouseDown(view, pos, event, flushed);\n } else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\n\nvar MouseDown = function MouseDown(view, pos, event, flushed) {\n var this$1 = this;\n\n this.view = view;\n this.startDoc = view.state.doc;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.selectNode = event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n this.delayedSelectionSync = false;\n\n var targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n } else {\n var $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n\n this.mightDrag = null;\n\n var target = flushed ? null : event.target;\n var targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n\n var ref = view.state;\n var selection = ref.selection;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n { this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && result.gecko && !this.target.hasAttribute(\"contentEditable\")}; }\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.draggable = true; }\n if (this.mightDrag.setUneditable)\n { setTimeout(function () {\n if (this$1.view.mouseDown == this$1) { this$1.target.setAttribute(\"contentEditable\", \"false\"); }\n }, 20); }\n this.view.domObserver.start();\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n};\n\nMouseDown.prototype.done = function done () {\n var this$1 = this;\n\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.removeAttribute(\"draggable\"); }\n if (this.mightDrag.setUneditable) { this.target.removeAttribute(\"contentEditable\"); }\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync) { setTimeout(function () { return selectionToDOM(this$1.view); }); }\n this.view.mouseDown = null;\n};\n\nMouseDown.prototype.up = function up (event) {\n this.done();\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n { return }\n\n var pos = this.pos;\n if (this.view.state.doc != this.startDoc) { pos = this.view.posAtCoords(eventCoords(event)); }\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n } else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (result.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (result.chrome && !(this.view.state.selection instanceof TextSelection) &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from),\n Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n } else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n};\n\nMouseDown.prototype.move = function move (event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n { this.allowDefault = true; }\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0) { this.done(); }\n};\n\nhandlers.touchdown = function (view) {\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\n\nhandlers.contextmenu = function (view) { return forceDOMFlush(view); };\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) { return true }\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8;\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nvar timeoutComposition = result.android ? 5000 : -1;\n\neditHandlers.compositionstart = editHandlers.compositionupdate = function (view) {\n if (!view.composing) {\n view.domObserver.flush();\n var state = view.state;\n var $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) { return m.type.spec.inclusive === false; })))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n } else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (result.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n var sel = view.root.getSelection();\n for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n var before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before) { break }\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length);\n break\n } else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\n\neditHandlers.compositionend = function (view, event) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = event.timeStamp;\n scheduleComposeEnd(view, 20);\n }\n};\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout);\n if (delay > -1) { view.composingTimeout = setTimeout(function () { return endComposition(view); }, delay); }\n}\n\nfunction clearComposition(view) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.compositionNodes.length > 0) { view.compositionNodes.pop().markParentsDirty(); }\n}\n\nfunction timestampFromCustomEvent() {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp\n}\n\nfunction endComposition(view, forceUpdate) {\n if (result.android && view.domObserver.flushingSoon >= 0) { return }\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n var sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel)); }\n else { view.updateState(view.state); }\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) { return }\n var wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n var sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(function () {\n if (wrap.parentNode) { wrap.parentNode.removeChild(wrap); }\n view.focus();\n }, 50);\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nvar brokenClipboardAPI = (result.ie && result.ie_version < 15) ||\n (result.ios && result.webkit_version < 604);\n\nhandlers.copy = editHandlers.cut = function (view, e) {\n var sel = view.state.selection, cut = e.type == \"cut\";\n if (sel.empty) { return }\n\n // IE and Edge's clipboard interface is completely broken\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var slice = sel.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n if (data) {\n e.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n } else {\n captureCopy(view, dom);\n }\n if (cut) { view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\")); }\n};\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) { return }\n var plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code;\n var target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText) { target.contentEditable = \"true\"; }\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(function () {\n view.focus();\n if (target.parentNode) { target.parentNode.removeChild(target); }\n if (plainText) { doPaste(view, target.value, null, e); }\n else { doPaste(view, target.textContent, target.innerHTML, e); }\n }, 50);\n}\n\nfunction doPaste(view, text, html, e) {\n var slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", function (f) { return f(view, e, slice || Slice.empty); })) { return true }\n if (!slice) { return false }\n\n var singleNode = sliceSingleNode(slice);\n var tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true\n}\n\neditHandlers.paste = function (view, e) {\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !result.android) { return }\n var data = brokenClipboardAPI ? null : e.clipboardData;\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), e)) { e.preventDefault(); }\n else { capturePaste(view, e); }\n};\n\nvar Dragging = function Dragging(slice, move) {\n this.slice = slice;\n this.move = move;\n};\n\nvar dragCopyModifier = result.mac ? \"altKey\" : \"ctrlKey\";\n\nhandlers.dragstart = function (view, e) {\n var mouseDown = view.mouseDown;\n if (mouseDown) { mouseDown.done(); }\n if (!e.dataTransfer) { return }\n\n var sel = view.state.selection;\n var pos = sel.empty ? null : view.posAtCoords(eventCoords(e));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) ; else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n } else if (e.target && e.target.nodeType == 1) {\n var desc = view.docView.nearestDesc(e.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n { view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore))); }\n }\n var slice = view.state.selection.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n e.dataTransfer.clearData();\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n e.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI) { e.dataTransfer.setData(\"text/plain\", text); }\n view.dragging = new Dragging(slice, !e[dragCopyModifier]);\n};\n\nhandlers.dragend = function (view) {\n var dragging = view.dragging;\n window.setTimeout(function () {\n if (view.dragging == dragging) { view.dragging = null; }\n }, 50);\n};\n\neditHandlers.dragover = editHandlers.dragenter = function (_, e) { return e.preventDefault(); };\n\neditHandlers.drop = function (view, e) {\n var dragging = view.dragging;\n view.dragging = null;\n\n if (!e.dataTransfer) { return }\n\n var eventPos = view.posAtCoords(eventCoords(e));\n if (!eventPos) { return }\n var $mouse = view.state.doc.resolve(eventPos.pos);\n if (!$mouse) { return }\n var slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n } else {\n slice = parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n var move = dragging && !e[dragCopyModifier];\n if (view.someProp(\"handleDrop\", function (f) { return f(view, e, slice || Slice.empty, move); })) {\n e.preventDefault();\n return\n }\n if (!slice) { return }\n\n e.preventDefault();\n var insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null) { insertPos = $mouse.pos; }\n\n var tr = view.state.tr;\n if (move) { tr.deleteSelection(); }\n\n var pos = tr.mapping.map(insertPos);\n var isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n var beforeInsert = tr.doc;\n if (isNode)\n { tr.replaceRangeWith(pos, pos, slice.content.firstChild); }\n else\n { tr.replaceRange(pos, pos, slice); }\n if (tr.doc.eq(beforeInsert)) { return }\n\n var $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n } else {\n var end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach(function (_from, _to, _newFrom, newTo) { return end = newTo; });\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\n\nhandlers.focus = function (view) {\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(function () {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n { selectionToDOM(view); }\n }, 20);\n }\n};\n\nhandlers.blur = function (view, e) {\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (e.relatedTarget && view.dom.contains(e.relatedTarget))\n { view.domObserver.currentSelection.set({}); }\n view.focused = false;\n }\n};\n\nhandlers.beforeinput = function (view, event) {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (result.chrome && result.android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n var domChangeCount = view.domChangeCount;\n setTimeout(function () {\n if (view.domChangeCount != domChangeCount) { return } // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) { return }\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) { view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView()); }\n }, 50);\n }\n};\n\n// Make sure all handlers get registered\nfor (var prop in editHandlers) { handlers[prop] = editHandlers[prop]; }\n\nfunction compareObjs(a, b) {\n if (a == b) { return true }\n for (var p in a) { if (a[p] !== b[p]) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n return true\n}\n\nvar WidgetType = function WidgetType(toDOM, spec) {\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n this.toDOM = toDOM;\n};\n\nWidgetType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var ref = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n var pos = ref.pos;\n var deleted = ref.deleted;\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n};\n\nWidgetType.prototype.valid = function valid () { return true };\n\nWidgetType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n};\n\nWidgetType.prototype.destroy = function destroy (node) {\n if (this.spec.destroy) { this.spec.destroy(node); }\n};\n\nvar InlineType = function InlineType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nInlineType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n var to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this)\n};\n\nInlineType.prototype.valid = function valid (_, span) { return span.from < span.to };\n\nInlineType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\nInlineType.is = function is (span) { return span.type instanceof InlineType };\n\nvar NodeType = function NodeType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nNodeType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted) { return null }\n var to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos) { return null }\n return new Decoration(from.pos - offset, to.pos - offset, this)\n};\n\nNodeType.prototype.valid = function valid (node, span) {\n var ref = node.content.findIndex(span.from);\n var index = ref.index;\n var offset = ref.offset;\n var child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to\n};\n\nNodeType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nvar Decoration = function Decoration(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from;\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to;\n this.type = type;\n};\n\nvar prototypeAccessors$1 = { spec: { configurable: true },inline: { configurable: true } };\n\nDecoration.prototype.copy = function copy (from, to) {\n return new Decoration(from, to, this.type)\n};\n\nDecoration.prototype.eq = function eq (other, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n};\n\nDecoration.prototype.map = function map (mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n};\n\n// :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n// Creates a widget decoration, which is a DOM node that's shown in\n// the document at the given position. It is recommended that you\n// delay rendering the widget by passing a function that will be\n// called when the widget is actually drawn in a view, but you can\n// also directly pass a DOM node. `getPos` can be used to find the\n// widget's current document position.\n//\n// spec::- These options are supported:\n//\n// side:: ?number\n// Controls which side of the document position this widget is\n// associated with. When negative, it is drawn before a cursor\n// at its position, and content inserted at that position ends\n// up after the widget. When zero (the default) or positive, the\n// widget is drawn after the cursor and content inserted there\n// ends up before the widget.\n//\n// When there are multiple widgets at a given position, their\n// `side` values determine the order in which they appear. Those\n// with lower values appear first. The ordering of widgets with\n// the same `side` value is unspecified.\n//\n// When `marks` is null, `side` also determines the marks that\n// the widget is wrapped in—those of the node before when\n// negative, those of the node after when positive.\n//\n// marks:: ?[Mark]\n// The precise set of marks to draw around the widget.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to control which DOM events, when they bubble out\n// of this widget, the editor view should ignore.\n//\n// ignoreSelection:: ?bool\n// When set (defaults to false), selection changes inside the\n// widget are ignored, and don't cause ProseMirror to try and\n// re-sync the selection with its selection state.\n//\n// key:: ?string\n// When comparing decorations of this type (in order to decide\n// whether it needs to be redrawn), ProseMirror will by default\n// compare the widget DOM node by identity. If you pass a key,\n// that key will be compared instead, which can be useful when\n// you generate decorations on the fly and don't want to store\n// and reuse DOM nodes. Make sure that any widgets with the same\n// key are interchangeable—if widgets differ in, for example,\n// the behavior of some event handler, they should get\n// different keys.\n//\n// destroy:: ?(node: dom.Node)\n// Called when the widget decoration is removed as a result of\n// mapping\nDecoration.widget = function widget (pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates an inline decoration, which adds the given attributes to\n// each inline node between `from` and `to`.\n//\n// spec::- These options are recognized:\n//\n// inclusiveStart:: ?bool\n// Determines how the left side of the decoration is\n// [mapped](#transform.Position_Mapping) when content is\n// inserted directly at that position. By default, the decoration\n// won't include the new content, but you can set this to `true`\n// to make it inclusive.\n//\n// inclusiveEnd:: ?bool\n// Determines how the right side of the decoration is mapped.\n// See\n// [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\nDecoration.inline = function inline (from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates a node decoration. `from` and `to` should point precisely\n// before and after a node in the document. That node, and only that\n// node, will receive the given attributes.\n//\n// spec::-\n//\n// Optional information to store with the decoration. It\n// is also used when comparing decorators for equality.\nDecoration.node = function node (from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n};\n\n// :: Object\n// The spec provided when creating this decoration. Can be useful\n// if you've stored extra information in that object.\nprototypeAccessors$1.spec.get = function () { return this.type.spec };\n\nprototypeAccessors$1.inline.get = function () { return this.type instanceof InlineType };\n\nObject.defineProperties( Decoration.prototype, prototypeAccessors$1 );\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nvar none = [], noSpec = {};\n\n// :: class extends DecorationSource\n// A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nvar DecorationSet = function DecorationSet(local, children) {\n this.local = local && local.length ? local : none;\n this.children = children && children.length ? children : none;\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Create a set of decorations, using the structure of the given\n// document.\nDecorationSet.create = function create (doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n};\n\n// :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n// Find all decorations in this set which touch the given range\n// (including decorations that start or end directly at the\n// boundaries) and match the given predicate on their spec. When\n// `start` and `end` are omitted, all decorations in the set are\n// considered. When `predicate` isn't given, all decorations are\n// assumed to match.\nDecorationSet.prototype.find = function find (start, end, predicate) {\n var result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result\n};\n\nDecorationSet.prototype.findInner = function findInner (start, end, result, offset, predicate) {\n for (var i = 0; i < this.local.length; i++) {\n var span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n { result.push(span.copy(span.from + offset, span.to + offset)); }\n }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3) {\n if (this.children[i$1] < end && this.children[i$1 + 1] > start) {\n var childOff = this.children[i$1] + 1;\n this.children[i$1 + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n};\n\n// :: (Mapping, Node, ?Object) → DecorationSet\n// Map the set of decorations in response to a change in the\n// document.\n//\n// options::- An optional set of options.\n//\n// onRemove:: ?(decorationSpec: Object)\n// When given, this function will be called for each decoration\n// that gets dropped as a result of the mapping, passing the\n// spec of that decoration.\nDecorationSet.prototype.map = function map (mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) { return this }\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n};\n\nDecorationSet.prototype.mapInner = function mapInner (mapping, node, offset, oldOffset, options) {\n var newLocal;\n for (var i = 0; i < this.local.length; i++) {\n var mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped)) { (newLocal || (newLocal = [])).push(mapped); }\n else if (options.onRemove) { options.onRemove(this.local[i].spec); }\n }\n\n if (this.children.length)\n { return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options) }\n else\n { return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty }\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Add the given array of decorations to the ones in the set,\n// producing a new set. Needs access to the current document to\n// create the appropriate tree structure.\nDecorationSet.prototype.add = function add (doc, decorations) {\n if (!decorations.length) { return this }\n if (this == empty) { return DecorationSet.create(doc, decorations) }\n return this.addInner(doc, decorations, 0)\n};\n\nDecorationSet.prototype.addInner = function addInner (doc, decorations, offset) {\n var this$1 = this;\n\n var children, childIndex = 0;\n doc.forEach(function (childNode, childOffset) {\n var baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) { return }\n\n if (!children) { children = this$1.children.slice(); }\n while (childIndex < children.length && children[childIndex] < childOffset) { childIndex += 3; }\n if (children[childIndex] == childOffset)\n { children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1); }\n else\n { children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec)); }\n childIndex += 3;\n });\n\n var local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (var i = 0; i < local.length; i++) { if (!local[i].type.valid(doc, local[i])) { local.splice(i--, 1); } }\n\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n};\n\n// :: ([Decoration]) → DecorationSet\n// Create a new set that contains the decorations in this set, minus\n// the ones in the given array.\nDecorationSet.prototype.remove = function remove (decorations) {\n if (decorations.length == 0 || this == empty) { return this }\n return this.removeInner(decorations, 0)\n};\n\nDecorationSet.prototype.removeInner = function removeInner (decorations, offset) {\n var children = this.children, local = this.local;\n for (var i = 0; i < children.length; i += 3) {\n var found = (void 0), from = children[i] + offset, to = children[i + 1] + offset;\n for (var j = 0, span = (void 0); j < decorations.length; j++) { if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span);\n }\n } }\n if (!found) { continue }\n if (children == this.children) { children = this.children.slice(); }\n var removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n } else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length) { for (var i$1 = 0, span$1 = (void 0); i$1 < decorations.length; i$1++) { if (span$1 = decorations[i$1]) {\n for (var j$1 = 0; j$1 < local.length; j$1++) { if (local[j$1].eq(span$1, offset)) {\n if (local == this.local) { local = this.local.slice(); }\n local.splice(j$1--, 1);\n } }\n } } }\n if (children == this.children && local == this.local) { return this }\n return local.length || children.length ? new DecorationSet(local, children) : empty\n};\n\nDecorationSet.prototype.forChild = function forChild (offset, node) {\n if (this == empty) { return this }\n if (node.isLeaf) { return DecorationSet.empty }\n\n var child, local;\n for (var i = 0; i < this.children.length; i += 3) { if (this.children[i] >= offset) {\n if (this.children[i] == offset) { child = this.children[i + 2]; }\n break\n } }\n var start = offset + 1, end = start + node.content.size;\n for (var i$1 = 0; i$1 < this.local.length; i$1++) {\n var dec = this.local[i$1];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n var from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to) { (local || (local = [])).push(dec.copy(from, to)); }\n }\n }\n if (local) {\n var localSet = new DecorationSet(local.sort(byPos));\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n};\n\nDecorationSet.prototype.eq = function eq (other) {\n if (this == other) { return true }\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) { return false }\n for (var i = 0; i < this.local.length; i++)\n { if (!this.local[i].eq(other.local[i])) { return false } }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3)\n { if (this.children[i$1] != other.children[i$1] ||\n this.children[i$1 + 1] != other.children[i$1 + 1] ||\n !this.children[i$1 + 2].eq(other.children[i$1 + 2])) { return false } }\n return true\n};\n\nDecorationSet.prototype.locals = function locals (node) {\n return removeOverlap(this.localsInner(node))\n};\n\nDecorationSet.prototype.localsInner = function localsInner (node) {\n if (this == empty) { return none }\n if (node.inlineContent || !this.local.some(InlineType.is)) { return this.local }\n var result = [];\n for (var i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n { result.push(this.local[i]); }\n }\n return result\n};\n\n// DecorationSource:: interface\n// An object that can [provide](#view.EditorProps.decorations)\n// decorations. Implemented by [`DecorationSet`](#view.DecorationSet),\n// and passed to [node views](#view.EditorProps.nodeViews).\n//\n// map:: (Mapping, Node) → DecorationSource\n// Map the set of decorations in response to a change in the\n// document.\n\nvar empty = new DecorationSet();\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty;\n\nDecorationSet.removeOverlap = removeOverlap;\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nvar DecorationGroup = function DecorationGroup(members) {\n this.members = members;\n};\n\nDecorationGroup.prototype.map = function map (mapping, doc) {\n var mappedDecos = this.members.map(\n function (member) { return member.map(mapping, doc, noSpec); }\n );\n return DecorationGroup.from(mappedDecos)\n};\n\nDecorationGroup.prototype.forChild = function forChild (offset, child) {\n if (child.isLeaf) { return DecorationSet.empty }\n var found = [];\n for (var i = 0; i < this.members.length; i++) {\n var result = this.members[i].forChild(offset, child);\n if (result == empty) { continue }\n if (result instanceof DecorationGroup) { found = found.concat(result.members); }\n else { found.push(result); }\n }\n return DecorationGroup.from(found)\n};\n\nDecorationGroup.prototype.eq = function eq (other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) { return false }\n for (var i = 0; i < this.members.length; i++)\n { if (!this.members[i].eq(other.members[i])) { return false } }\n return true\n};\n\nDecorationGroup.prototype.locals = function locals (node) {\n var result, sorted = true;\n for (var i = 0; i < this.members.length; i++) {\n var locals = this.members[i].localsInner(node);\n if (!locals.length) { continue }\n if (!result) {\n result = locals;\n } else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (var j = 0; j < locals.length; j++) { result.push(locals[j]); }\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n};\n\n// : ([DecorationSet]) → union\n// Create a group for the given array of decoration sets, or return\n// a single set when possible.\nDecorationGroup.from = function from (members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n};\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n var children = oldChildren.slice();\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n var shift = function (oldStart, oldEnd, newStart, newEnd) {\n for (var i = 0; i < children.length; i += 3) {\n var end = children[i + 1], dSize = (void 0);\n if (end < 0 || oldStart > end + oldOffset) { continue }\n var start = children[i] + oldOffset;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n };\n for (var i = 0; i < mapping.maps.length; i++) { mapping.maps[i].forEach(shift); }\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n var mustRebuild = false;\n for (var i$1 = 0; i$1 < children.length; i$1 += 3) { if (children[i$1 + 1] < 0) { // Touched nodes\n if (children[i$1 + 1] == -2) {\n mustRebuild = true;\n children[i$1 + 1] = -1;\n continue\n }\n var from = mapping.map(oldChildren[i$1] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue\n }\n // Must read oldChildren because children was tagged with -1\n var to = mapping.map(oldChildren[i$1 + 1] + oldOffset, -1), toLocal = to - offset;\n var ref = node.content.findIndex(fromLocal);\n var index = ref.index;\n var childOffset = ref.offset;\n var childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n var mapped = children[i$1 + 2].mapInner(mapping, childNode, from + 1, oldChildren[i$1] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i$1] = fromLocal;\n children[i$1 + 1] = toLocal;\n children[i$1 + 2] = mapped;\n } else {\n children[i$1 + 1] = -2;\n mustRebuild = true;\n }\n } else {\n mustRebuild = true;\n }\n } }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n var decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options);\n var built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (var i$2 = 0; i$2 < children.length; i$2 += 3) { if (children[i$2 + 1] < 0) {\n children.splice(i$2, 3);\n i$2 -= 3;\n } }\n for (var i$3 = 0, j = 0; i$3 < built.children.length; i$3 += 3) {\n var from$1 = built.children[i$3];\n while (j < children.length && children[j] < from$1) { j += 3; }\n children.splice(j, 0, built.children[i$3], built.children[i$3 + 1], built.children[i$3 + 2]);\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) { return spans }\n var result = [];\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (var i = 0; i < set.local.length; i++) {\n var mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped) { decorations.push(mapped); }\n else if (options.onRemove) { options.onRemove(set.local[i].spec); }\n }\n for (var i$1 = 0; i$1 < set.children.length; i$1 += 3)\n { gather(set.children[i$1 + 2], set.children[i$1] + oldOffset + 1); }\n }\n for (var i = 0; i < children.length; i += 3) { if (children[i + 1] == -1)\n { gather(children[i + 2], oldChildren[i] + oldOffset + 1); } }\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) { return null }\n var end = offset + node.nodeSize, found = null;\n for (var i = 0, span = (void 0); i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n(found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n var result = [];\n for (var i = 0; i < array.length; i++)\n { if (array[i] != null) { result.push(array[i]); } }\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n var children = [], hasNulls = false;\n node.forEach(function (childNode, localStart) {\n var found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n var subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n { children.push(localStart, localStart + childNode.nodeSize, subtree); }\n }\n });\n var locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (var i = 0; i < locals.length; i++) { if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) { options.onRemove(locals[i].spec); }\n locals.splice(i--, 1);\n } }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n var working = spans;\n for (var i = 0; i < working.length - 1; i++) {\n var span = working[i];\n if (span.from != span.to) { for (var j = i + 1; j < working.length; j++) {\n var next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) { working = spans.slice(); }\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) { working = spans.slice(); }\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break\n }\n } }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) { i++; }\n array.splice(i, 0, deco);\n}\n\n// : (EditorView) → union\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n var found = [];\n view.someProp(\"decorations\", function (f) {\n var result = f(view.state);\n if (result && result != empty) { found.push(result); }\n });\n if (view.cursorWrapper)\n { found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco])); }\n return DecorationGroup.from(found)\n}\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nvar EditorView = function EditorView(place, props) {\n this._props = props;\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state;\n\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n\n this.dispatch = this.dispatch.bind(this);\n\n this._root = null;\n this.focused = false;\n // Kludge used to work around a Chrome bug\n this.trackWrites = null;\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild) { place.appendChild(this.dom); }\n else if (place.apply) { place(this.dom); }\n else if (place.mount) { this.mounted = true; }\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this);\n this.markCursor = null;\n this.cursorWrapper = null;\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n\n this.lastSelectedViewDesc = null;\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null;\n\n initInput(this);\n\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n this.updatePluginViews();\n};\n\nvar prototypeAccessors$2 = { props: { configurable: true },root: { configurable: true },isDestroyed: { configurable: true } };\n\n// composing:: boolean\n// Holds `true` when a\n// [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n// is active.\n\n// :: DirectEditorProps\n// The view's current [props](#view.EditorProps).\nprototypeAccessors$2.props.get = function () {\n if (this._props.state != this.state) {\n var prev = this._props;\n this._props = {};\n for (var name in prev) { this._props[name] = prev[name]; }\n this._props.state = this.state;\n }\n return this._props\n};\n\n// :: (DirectEditorProps)\n// Update the view's props. Will immediately cause an update to\n// the DOM.\nEditorView.prototype.update = function update (props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) { ensureListeners(this); }\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, true);\n};\n\n// :: (DirectEditorProps)\n// Update the view by updating existing props object with the object\n// given as argument. Equivalent to `view.update(Object.assign({},\n// view.props, props))`.\nEditorView.prototype.setProps = function setProps (props) {\n var updated = {};\n for (var name in this._props) { updated[name] = this._props[name]; }\n updated.state = this.state;\n for (var name$1 in props) { updated[name$1] = props[name$1]; }\n this.update(updated);\n};\n\n// :: (EditorState)\n// Update the editor's `state` prop, without touching any of the\n// other props.\nEditorView.prototype.updateState = function updateState (state) {\n this.updateStateInner(state, this.state.plugins != state.plugins);\n};\n\nEditorView.prototype.updateStateInner = function updateStateInner (state, reconfigured) {\n var this$1 = this;\n\n var prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n if (reconfigured) {\n var nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n ensureListeners(this);\n }\n\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n var innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n\n var scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n var updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection)) { updateSel = true; }\n var oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n var forceSelUpdate = updateDoc && (result.ie || result.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n var chromeKludge = result.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites) { forceSelUpdate = true; }\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n } else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n\n this.updatePluginViews(prev);\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n } else if (scroll == \"to selection\") {\n var startDOM = this.root.getSelection().focusNode;\n if (this.someProp(\"handleScrollToSelection\", function (f) { return f(this$1); }))\n ; // Handled\n else if (state.selection instanceof NodeSelection)\n { scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM); }\n else\n { scrollRectIntoView(this, this.coordsAtPos(state.selection.head, 1), startDOM); }\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n};\n\nEditorView.prototype.destroyPluginViews = function destroyPluginViews () {\n var view;\n while (view = this.pluginViews.pop()) { if (view.destroy) { view.destroy(); } }\n};\n\nEditorView.prototype.updatePluginViews = function updatePluginViews (prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (var i = 0; i < this.directPlugins.length; i++) {\n var plugin = this.directPlugins[i];\n if (plugin.spec.view) { this.pluginViews.push(plugin.spec.view(this)); }\n }\n for (var i$1 = 0; i$1 < this.state.plugins.length; i$1++) {\n var plugin$1 = this.state.plugins[i$1];\n if (plugin$1.spec.view) { this.pluginViews.push(plugin$1.spec.view(this)); }\n }\n } else {\n for (var i$2 = 0; i$2 < this.pluginViews.length; i$2++) {\n var pluginView = this.pluginViews[i$2];\n if (pluginView.update) { pluginView.update(this, prevState); }\n }\n }\n};\n\n// :: (string, ?(prop: *) → *) → *\n// Goes over the values of a prop, first those provided directly,\n// then those from plugins given to the view, then from plugins in\n// the state (in order), and calls `f` every time a non-undefined\n// value is found. When `f` returns a truthy value, that is\n// immediately returned. When `f` isn't provided, it is treated as\n// the identity function (the prop value is returned directly).\nEditorView.prototype.someProp = function someProp (propName, f) {\n var prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop)) { return value }\n for (var i = 0; i < this.directPlugins.length; i++) {\n var prop$1 = this.directPlugins[i].props[propName];\n if (prop$1 != null && (value = f ? f(prop$1) : prop$1)) { return value }\n }\n var plugins = this.state.plugins;\n if (plugins) { for (var i$1 = 0; i$1 < plugins.length; i$1++) {\n var prop$2 = plugins[i$1].props[propName];\n if (prop$2 != null && (value = f ? f(prop$2) : prop$2)) { return value }\n } }\n};\n\n// :: () → bool\n// Query whether the view has focus.\nEditorView.prototype.hasFocus = function hasFocus () {\n return this.root.activeElement == this.dom\n};\n\n// :: ()\n// Focus the editor.\nEditorView.prototype.focus = function focus () {\n this.domObserver.stop();\n if (this.editable) { focusPreventScroll(this.dom); }\n selectionToDOM(this);\n this.domObserver.start();\n};\n\n// :: union\n// Get the document root in which the editor exists. This will\n// usually be the top-level `document`, but might be a [shadow\n// DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n// root if the editor is inside one.\nprototypeAccessors$2.root.get = function () {\n var cached = this._root;\n if (cached == null) { for (var search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) { Object.getPrototypeOf(search).getSelection = function () { return document.getSelection(); }; }\n return this._root = search\n }\n } }\n return cached || document\n};\n\n// :: ({left: number, top: number}) → ?{pos: number, inside: number}\n// Given a pair of viewport coordinates, return the document\n// position that corresponds to them. May return null if the given\n// coordinates aren't inside of the editor. When an object is\n// returned, its `pos` property is the position nearest to the\n// coordinates, and its `inside` property holds the position of the\n// inner node that the position falls inside of, or -1 if it is at\n// the top level, not in any node.\nEditorView.prototype.posAtCoords = function posAtCoords$1 (coords) {\n return posAtCoords(this, coords)\n};\n\n// :: (number, number) → {left: number, right: number, top: number, bottom: number}\n// Returns the viewport rectangle at a given document position.\n// `left` and `right` will be the same number, as this returns a\n// flat cursor-ish rectangle. If the position is between two things\n// that aren't directly adjacent, `side` determines which element is\n// used. When < 0, the element before the position is used,\n// otherwise the element after.\nEditorView.prototype.coordsAtPos = function coordsAtPos$1 (pos, side) {\n if ( side === void 0 ) side = 1;\n\n return coordsAtPos(this, pos, side)\n};\n\n// :: (number, number) → {node: dom.Node, offset: number}\n// Find the DOM position that corresponds to the given document\n// position. When `side` is negative, find the position as close as\n// possible to the content before the position. When positive,\n// prefer positions close to the content after the position. When\n// zero, prefer as shallow a position as possible.\n//\n// Note that you should **not** mutate the editor's internal DOM,\n// only inspect it (and even that is usually not necessary).\nEditorView.prototype.domAtPos = function domAtPos (pos, side) {\n if ( side === void 0 ) side = 0;\n\n return this.docView.domFromPos(pos, side)\n};\n\n// :: (number) → ?dom.Node\n// Find the DOM node that represents the document node after the\n// given position. May return `null` when the position doesn't point\n// in front of a node or if the node is inside an opaque node view.\n//\n// This is intended to be able to call things like\n// `getBoundingClientRect` on that DOM node. Do **not** mutate the\n// editor DOM directly, or add styling this way, since that will be\n// immediately overriden by the editor as it redraws the node.\nEditorView.prototype.nodeDOM = function nodeDOM (pos) {\n var desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null\n};\n\n// :: (dom.Node, number, ?number) → number\n// Find the document position that corresponds to a given DOM\n// position. (Whenever possible, it is preferable to inspect the\n// document structure directly, rather than poking around in the\n// DOM, but sometimes—for example when interpreting an event\n// target—you don't have a choice.)\n//\n// The `bias` parameter can be used to influence which side of a DOM\n// node to use when the position is inside a leaf node.\nEditorView.prototype.posAtDOM = function posAtDOM (node, offset, bias) {\n if ( bias === void 0 ) bias = -1;\n\n var pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null) { throw new RangeError(\"DOM position not inside the editor\") }\n return pos\n};\n\n// :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n// Find out whether the selection is at the end of a textblock when\n// moving in a given direction. When, for example, given `\"left\"`,\n// it will return true if moving left from the current cursor\n// position would leave that position's parent textblock. Will apply\n// to the view's current state by default, but it is possible to\n// pass a different state.\nEditorView.prototype.endOfTextblock = function endOfTextblock$1 (dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n};\n\n// :: ()\n// Removes the editor from the DOM and destroys all [node\n// views](#view.NodeView).\nEditorView.prototype.destroy = function destroy () {\n if (!this.docView) { return }\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n};\n\n// :: boolean\n// This is true when the view has been\n// [destroyed](#view.EditorView.destroy) (and thus should not be\n// used anymore).\nprototypeAccessors$2.isDestroyed.get = function () {\n return this.docView == null\n};\n\n// Used for testing.\nEditorView.prototype.dispatchEvent = function dispatchEvent$1 (event) {\n return dispatchEvent(this, event)\n};\n\n// :: (Transaction)\n// Dispatch a transaction. Will call\n// [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n// when given, and otherwise defaults to applying the transaction to\n// the current state and calling\n// [`updateState`](#view.EditorView.updateState) with the result.\n// This method is bound to the view instance, so that it can be\n// easily passed around.\nEditorView.prototype.dispatch = function dispatch (tr) {\n var dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction) { dispatchTransaction.call(this, tr); }\n else { this.updateState(this.state.apply(tr)); }\n};\n\nObject.defineProperties( EditorView.prototype, prototypeAccessors$2 );\n\nfunction computeDocDeco(view) {\n var attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n attrs.translate = \"no\";\n\n view.someProp(\"attributes\", function (value) {\n if (typeof value == \"function\") { value = value(view.state); }\n if (value) { for (var attr in value) {\n if (attr == \"class\")\n { attrs.class += \" \" + value[attr]; }\n if (attr == \"style\") {\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n }\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n { attrs[attr] = String(value[attr]); }\n } }\n });\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n var dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = {dom: dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})};\n } else {\n view.cursorWrapper = null;\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", function (value) { return value(view.state) === false; })\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n var depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n var result = {};\n view.someProp(\"nodeViews\", function (obj) {\n for (var prop in obj) { if (!Object.prototype.hasOwnProperty.call(result, prop))\n { result[prop] = obj[prop]; } }\n });\n return result\n}\n\nfunction changedNodeViews(a, b) {\n var nA = 0, nB = 0;\n for (var prop in a) {\n if (a[prop] != b[prop]) { return true }\n nA++;\n }\n for (var _ in b) { nB++; }\n return nA != nB\n}\n\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n { throw new RangeError(\"Plugins passed directly to the view must not have a state component\") }\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `

    ` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration], innerDecorations: DecorationSource) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// `innerDecorations` holds the decorations for the node's content.\n// You can safely ignore this if your view has no content or a\n// `contentDOM` property, since the editor will draw the decorations\n// on the content. But if you, for example, want to create a nested\n// editor with the content, it may make sense to provide it with the\n// inner decorations.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used. This object will only have its\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment)\n// method called, and you may provide an alternative object type\n// implementing a compatible method.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSource\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union, (EditorState) → ?Object>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// plugins:: [Plugin]\n// A set of plugins to use in the view, applying their [plugin\n// view](#state.PluginSpec.view) and\n// [props](#state.PluginSpec.props). Passing plugins with a state\n// component (a [state field](#state.PluginSpec.state) field or a\n// [transaction](#state.PluginSpec.filterTransaction) filter or\n// appender) will result in an error, since such plugins must be\n// present in the state to work.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n\nexport { Decoration, DecorationSet, EditorView, endComposition as __endComposition, parseFromClipboard as __parseFromClipboard, serializeForClipboard as __serializeForClipboard };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nvar ropeSequence = RopeSequence;\n\nexport default ropeSequence;\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","import { Subscriber } from './Subscriber';\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error, innerSub) {\n this.destination.error(error);\n }\n notifyComplete(innerSub) {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nexport class ReplaySubject extends Subject {\n constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) {\n super();\n this.scheduler = scheduler;\n this._events = [];\n this._infiniteTimeWindow = false;\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n }\n else {\n this.next = this.nextTimeWindow;\n }\n }\n nextInfiniteTimeWindow(value) {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n nextTimeWindow(value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n _subscribe(subscriber) {\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n }\n _getNow() {\n return (this.scheduler || queue).now();\n }\n _trimBufferThenGetEvents() {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n const eventsCount = _events.length;\n let spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n }\n}\nclass ReplayEvent {\n constructor(time, value) {\n this.time = time;\n this.value = value;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","import { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n _next(value) {\n this.parent.notifyNext(value);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\nexport class SimpleOuterSubscriber extends Subscriber {\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyError(err) {\n this.destination.error(err);\n }\n notifyComplete() {\n this.destination.complete();\n }\n}\nexport class ComplexOuterSubscriber extends Subscriber {\n notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error) {\n this.destination.error(error);\n }\n notifyComplete(_innerSub) {\n this.destination.complete();\n }\n}\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber);\n }\n catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._refCount = 0;\n this._isComplete = false;\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\nexport const connectableObservableDescriptor = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _error(err) {\n this._unsubscribe();\n super._error(err);\n }\n _complete() {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nconst NONE = {};\nexport function combineLatest(...observables) {\n let resultSelector = undefined;\n let scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexport class CombineLatestOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class CombineLatestSubscriber extends OuterSubscriber {\n constructor(destination, resultSelector) {\n super(destination);\n this.resultSelector = resultSelector;\n this.active = 0;\n this.values = [];\n this.observables = [];\n }\n _next(observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n notifyComplete(unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n }\n _tryResultSelector(values) {\n let result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat(...observables) {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(subscriber => {\n let input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin(...sources) {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map((args) => resultSelector(...args)));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period = 0, scheduler = async) {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(subscriber => {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber, counter: 0, period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of(...args) {\n let scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n","import { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n }\n else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\nfunction dispatch({ error, subscriber }) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip(...observables) {\n const resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nexport class ZipOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class ZipSubscriber extends Subscriber {\n constructor(destination, resultSelector, values = Object.create(null)) {\n super(destination);\n this.resultSelector = resultSelector;\n this.iterators = [];\n this.active = 0;\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n _next(value) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n }\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n }\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n let shouldComplete = false;\n const args = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n }\n _tryresultSelector(args) {\n let result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\nclass StaticIterator {\n constructor(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n hasValue() {\n return true;\n }\n next() {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n hasCompleted() {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\nclass StaticArrayIterator {\n constructor(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n [Symbol_iterator]() {\n return this;\n }\n next(value) {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n hasValue() {\n return this.array.length > this.index;\n }\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\nclass ZipBufferIterator extends SimpleOuterSubscriber {\n constructor(destination, parent, observable) {\n super(destination);\n this.parent = parent;\n this.observable = observable;\n this.stillUnsubscribed = true;\n this.buffer = [];\n this.isComplete = false;\n }\n [Symbol_iterator]() {\n return this;\n }\n next() {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n }\n hasValue() {\n return this.buffer.length > 0;\n }\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n }\n notifyNext(innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function audit(durationSelector) {\n return function auditOperatorFunction(source) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\nclass AuditOperator {\n constructor(durationSelector) {\n this.durationSelector = durationSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\nclass AuditSubscriber extends SimpleOuterSubscriber {\n constructor(destination, durationSelector) {\n super(destination);\n this.durationSelector = durationSelector;\n this.hasValue = false;\n }\n _next(value) {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n }\n catch (err) {\n return this.destination.error(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n }\n else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next(value);\n }\n }\n notifyNext() {\n this.clearThrottle();\n }\n notifyComplete() {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = async) {\n return audit(() => timer(duration, scheduler));\n}\n","import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function buffer(closingNotifier) {\n return function bufferOperatorFunction(source) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\nclass BufferOperator {\n constructor(closingNotifier) {\n this.closingNotifier = closingNotifier;\n }\n call(subscriber, source) {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n }\n}\nclass BufferSubscriber extends SimpleOuterSubscriber {\n constructor(destination, closingNotifier) {\n super(destination);\n this.buffer = [];\n this.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n }\n _next(value) {\n this.buffer.push(value);\n }\n notifyNext() {\n const buffer = this.buffer;\n this.buffer = [];\n this.destination.next(buffer);\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function bufferCount(bufferSize, startBufferEvery = null) {\n return function bufferCountOperatorFunction(source) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\nclass BufferCountOperator {\n constructor(bufferSize, startBufferEvery) {\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n }\n else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n }\n}\nclass BufferCountSubscriber extends Subscriber {\n constructor(destination, bufferSize) {\n super(destination);\n this.bufferSize = bufferSize;\n this.buffer = [];\n }\n _next(value) {\n const buffer = this.buffer;\n buffer.push(value);\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n }\n _complete() {\n const buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n super._complete();\n }\n}\nclass BufferSkipCountSubscriber extends Subscriber {\n constructor(destination, bufferSize, startBufferEvery) {\n super(destination);\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n this.buffers = [];\n this.count = 0;\n }\n _next(value) {\n const { bufferSize, startBufferEvery, buffers, count } = this;\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n for (let i = buffers.length; i--;) {\n const buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n }\n _complete() {\n const { buffers, destination } = this;\n while (buffers.length > 0) {\n let buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n super._complete();\n }\n}\n","import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nclass CatchOperator {\n constructor(selector) {\n this.selector = selector;\n }\n call(subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination, selector, caught) {\n super(destination);\n this.selector = selector;\n this.caught = caught;\n }\n error(err) {\n if (!this.isStopped) {\n let result;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler = async) {\n return (source) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\nclass DebounceTimeOperator {\n constructor(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\nclass DebounceTimeSubscriber extends Subscriber {\n constructor(destination, dueTime, scheduler) {\n super(destination);\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n this.debouncedSubscription = null;\n this.lastValue = null;\n this.hasValue = false;\n }\n _next(value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n debouncedNext() {\n this.clearDebounce();\n if (this.hasValue) {\n const { lastValue } = this;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n clearDebounce() {\n const debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n","import { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue = null) {\n return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue));\n}\nclass DefaultIfEmptyOperator {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n call(subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\nclass DefaultIfEmptySubscriber extends Subscriber {\n constructor(destination, defaultValue) {\n super(destination);\n this.defaultValue = defaultValue;\n this.isEmpty = true;\n }\n _next(value) {\n this.isEmpty = false;\n this.destination.next(value);\n }\n _complete() {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return (source) => source.lift(new FinallyOperator(callback));\n}\nclass FinallyOperator {\n constructor(callback) {\n this.callback = callback;\n }\n call(subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\nclass FinallySubscriber extends Subscriber {\n constructor(destination, callback) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return (source) => source.lift(new MapToOperator(value));\n}\nclass MapToOperator {\n constructor(value) {\n this.value = value;\n }\n call(subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\nclass MapToSubscriber extends Subscriber {\n constructor(destination, value) {\n super(destination);\n this.value = value;\n }\n _next(x) {\n this.destination.next(this.value);\n }\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Number.POSITIVE_INFINITY) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(mergeMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii))), concurrent));\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source) => source.lift(new MergeMapOperator(project, concurrent));\n}\nexport class MergeMapOperator {\n constructor(project, concurrent = Number.POSITIVE_INFINITY) {\n this.project = project;\n this.concurrent = concurrent;\n }\n call(observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n }\n}\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) {\n super(destination);\n this.project = project;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n }\n _tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n _innerSub(ish) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyComplete() {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\nexport const flatMap = mergeMap;\n","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n let subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n const connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexport class MulticastOperator {\n constructor(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n call(subscriber, source) {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay = 0) {\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexport class ObserveOnOperator {\n constructor(scheduler, delay = 0) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n call(subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\nexport class ObserveOnSubscriber extends Subscriber {\n constructor(destination, scheduler, delay = 0) {\n super(destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n static dispatch(arg) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n scheduleMessage(notification) {\n const destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n }\n _next(value) {\n this.scheduleMessage(Notification.createNext(value));\n }\n _error(err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n _complete() {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\nexport class ObserveOnMessage {\n constructor(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n}\n","import { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return (source) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg))(source)\n ];\n}\n","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n let hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nclass ScanOperator {\n constructor(accumulator, seed, hasSeed = false) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n call(subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\nclass ScanSubscriber extends Subscriber {\n constructor(destination, accumulator, _seed, hasSeed) {\n super(destination);\n this.accumulator = accumulator;\n this._seed = _seed;\n this.hasSeed = hasSeed;\n this.index = 0;\n }\n get seed() {\n return this._seed;\n }\n set seed(value) {\n this.hasSeed = true;\n this._seed = value;\n }\n _next(value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n }\n _tryNext(value) {\n const index = this.index++;\n let result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return (source) => refCount()(multicast(shareSubjectFactory)(source));\n}\n","import { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return (source) => source.lift(new SkipOperator(count));\n}\nclass SkipOperator {\n constructor(total) {\n this.total = total;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\nclass SkipSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function skipWhile(predicate) {\n return (source) => source.lift(new SkipWhileOperator(predicate));\n}\nclass SkipWhileOperator {\n constructor(predicate) {\n this.predicate = predicate;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\nclass SkipWhileSubscriber extends Subscriber {\n constructor(destination, predicate) {\n super(destination);\n this.predicate = predicate;\n this.skipping = true;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n }\n tryCallPredicate(value) {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith(...array) {\n const scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return (source) => concat(array, source, scheduler);\n }\n else {\n return (source) => concat(array, source);\n }\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = undefined;\n }\n notifyComplete() {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n}\n","import { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nclass TakeLastOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\nclass TakeLastSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.ring = new Array();\n this.count = 0;\n }\n _next(value) {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n const index = count % total;\n ring[index] = value;\n }\n }\n _complete() {\n const destination = this.destination;\n let count = this.count;\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n }\n}\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return (source) => source.lift(new TakeWhileOperator(predicate, inclusive));\n}\nclass TakeWhileOperator {\n constructor(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n call(subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\nclass TakeWhileSubscriber extends Subscriber {\n constructor(destination, predicate, inclusive) {\n super(destination);\n this.predicate = predicate;\n this.inclusive = inclusive;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n let result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n nextOrComplete(value, predicateResult) {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport const defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\nclass ThrottleOperator {\n constructor(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n }\n}\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n constructor(destination, durationSelector, _leading, _trailing) {\n super(destination);\n this.destination = destination;\n this.durationSelector = durationSelector;\n this._leading = _leading;\n this._trailing = _trailing;\n this._hasValue = false;\n }\n _next(value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n }\n send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n throttle(value) {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n tryDurationSelector(value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n if (_trailing) {\n this.send();\n }\n }\n notifyNext() {\n this.throttlingDone();\n }\n notifyComplete() {\n this.throttlingDone();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\nexport function throttleTime(duration, scheduler = async, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\nclass ThrottleTimeOperator {\n constructor(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n }\n}\nclass ThrottleTimeSubscriber extends Subscriber {\n constructor(destination, duration, scheduler, leading, trailing) {\n super(destination);\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n this._hasTrailingValue = false;\n this._trailingValue = null;\n }\n _next(value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n }\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\nfunction dispatchNext(arg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator;\n sub.add(() => {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value;\n let done;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n }, err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n })));\n return sub;\n });\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(() => scheduler.flush(null)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this.active = true;\n this.scheduled = undefined;\n const { actions } = this;\n let error;\n let index = -1;\n let count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\n }\n flush(action) {\n const { actions } = this;\n if (this.active) {\n actions.push(action);\n return;\n }\n let error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n return scheduler.flush(this);\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queueScheduler = new QueueScheduler(QueueAction);\nexport const queue = queueScheduler;\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\nexport const $$iterator = iterator;\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","const EmptyErrorImpl = (() => {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport const EmptyError = EmptyErrorImpl;\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","export function identity(x) {\n return x;\n}\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n","export function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n","export function noop() { }\n","export function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","export const subscribeToArray = (array) => (subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n let item;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","/**\n * @license Angular v14.0.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *

    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* AnimationMetadataType.Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* AnimationMetadataType.Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* AnimationMetadataType.Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* AnimationMetadataType.Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* AnimationMetadataType.Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* AnimationMetadataType.State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* AnimationMetadataType.Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
    \n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
    \n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* AnimationMetadataType.Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* AnimationMetadataType.Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimationMetadataType.AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimationMetadataType.AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
    \n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
    \n *\n *
    \n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
    \n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* AnimationMetadataType.Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* AnimationMetadataType.Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","/**\n * @license Angular v14.0.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, NG_DEV_MODE$1 && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, NG_DEV_MODE$1 && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, NG_DEV_MODE$1 && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, NG_DEV_MODE$1 &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, NG_DEV_MODE$1 && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, NG_DEV_MODE$1 && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, NG_DEV_MODE$1 && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, NG_DEV_MODE$1 &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, NG_DEV_MODE$1 && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, NG_DEV_MODE$1 &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, NG_DEV_MODE$1 && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, NG_DEV_MODE$1 &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, NG_DEV_MODE$1 &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, NG_DEV_MODE$1 && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, NG_DEV_MODE$1 && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, NG_DEV_MODE$1 && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, NG_DEV_MODE$1 &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, NG_DEV_MODE$1 && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, NG_DEV_MODE$1 && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, NG_DEV_MODE$1 && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, NG_DEV_MODE$1 && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, NG_DEV_MODE$1 &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, NG_DEV_MODE$1 && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, NG_DEV_MODE$1 && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, NG_DEV_MODE$1 &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, NG_DEV_MODE$1 && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, NG_DEV_MODE$1 &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, NG_DEV_MODE$1 &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, NG_DEV_MODE$1 &&\n `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(driver, normalizer, element, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\nfunction pushNonAnimatablePropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not animatable: ${props.join(', ')}\\n (see: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n if (context.nonAnimatableCSSPropertiesFound.size) {\n pushNonAnimatablePropertiesWarning(warnings, [...context.nonAnimatableCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n if (this._driver.validateAnimatableStyleProperty) {\n if (!this._driver.validateAnimatableStyleProperty(prop)) {\n context.nonAnimatableCSSPropertiesFound.add(prop);\n // note: non animatable properties are not removed for the tuple just in case they are\n // categorized as non animatable but can actually be animated\n return;\n }\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n this.nonAnimatableCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) || AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(normalizedProp, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...Array.from(post?.entries() ?? []), ...Array.from(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v14.0.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, createNgModuleRef, NgModuleRef, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy() {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(locationStrategy) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n /** @internal */\n this._urlChangeSubscription = null;\n this._locationStrategy = locationStrategy;\n const browserBaseHref = this._locationStrategy.getBaseHref();\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._locationStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._locationStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._locationStrategy.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._locationStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._locationStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._locationStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._locationStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._locationStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._locationStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n * @returns A function that, when executed, unregisters a URL change listener.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, undefined, 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLE\": [undefined, undefined, 2], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ɵExtraLocaleDataIndex.ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* ɵCurrencyIndex.SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* ɵCurrencyIndex.Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.slice(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substring(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substring(0, pos).replace(/'/g, '');\n p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional\n * NgModule factory to allow loading another module dynamically, then loading a component from that\n * module. Use `ngComponentOutletNgModule` instead.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized NgModule reference\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n const { _viewContainerRef: viewContainerRef, ngComponentOutletNgModule: ngModule, ngComponentOutletNgModuleFactory: ngModuleFactory, } = this;\n viewContainerRef.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (ngModule) {\n this._moduleRef = createNgModuleRef(ngModule, getParentInjector(injector));\n }\n else if (ngModuleFactory) {\n this._moduleRef = ngModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, {\n index: viewContainerRef.length,\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModule: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n// Helper function that returns an Injector instance of a parent NgModule.\nfunction getParentInjector(injector) {\n const parentNgModule = injector.get(NgModuleRef);\n return parentNgModule.injector;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n /** Injector to be used within the embedded view. */\n this.ngTemplateOutletInjector = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n if (this.ngTemplateOutlet) {\n const { ngTemplateOutlet: template, ngTemplateOutletContext: context, ngTemplateOutletInjector: injector } = this;\n this._viewRef = viewContainerRef.createEmbeddedView(template, context, injector ? { injector } : undefined);\n }\n else {\n this._viewRef = null;\n }\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }], ngTemplateOutletInjector: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'` :\n '';\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, errorMessage);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(ref) {\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor\n // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.\n this._ref = ref;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate\n // potential memory leaks in Observables that could otherwise cause the view data to\n // be retained.\n // https://github.com/angular/angular/issues/17624\n this._ref = null;\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n // Note: `dispose` is only called if a subscription has been initialized before, indicating\n // that `this._strategy` is also available.\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a\n // value is being updated.\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone ?? this.defaultTimezone ?? undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('14.0.1');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v14.0.1\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n // convert the values to strings\n const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];\n this.map.set(key, values);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* HttpStatusCode.Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending
    ..